# TestOps(Testing Operations)와 효율적인 테스트 자동화 구축
TestOps는 DevOps의 일부분으로, 테스트 운영과 자동화에 초점을 맞추고 있습니다.
TestOps는 DevOps의 개념을 테스트에 적용한 것으로, 테스트 프로세스의 계획, 실행, 분석 및 보고를 포함한 전체적인 테스트 라이프사이클을 관리하고 자동화하는 데 중점을 둡니다.
이를 통해 테스트 프로세스를 계획, 실행, 분석 및 보고하는 전체적인 라이프사이클을 관리하고, 테스트 효율성과 품질을 향상시키며 소프트웨어 배포 속도를 높입니다.
TestOps 주요 요소:
- 자동화된 테스트 파이프라인 설정: 반복적인 테스트 과정을 자동화하여 신속하고 일관된 테스트 수행.
- 테스트 데이터 관리: 필요한 테스트 데이터를 효율적으로 관리하여 테스트 정확성을 높임.
- 테스트 환경 관리: 다양한 테스트 환경을 설정하고 관리하여 현실적인 테스트를 가능하게 함.
- 테스트 결과 분석 및 보고: 테스트 결과를 분석하고 보고하여 품질을 개선.
# TestOps 환경 구축 방법
- BDD(Behavior Driven Development) 기반 자동화
- BDD 기반 스크립트를 CI/CD 파이프라인에 연결하여 자동으로 테스트를 실행합니다.
- 이를 통해 비즈니스와 기술 팀 간의 원활한 소통을 촉진합니다.
- 프로젝트 관리 도구 및 테스트 관리 도구 연동
- 다양한 프로젝트 관리 도구와 테스트 관리 도구를 연동하여 관련 프로세스를 자동화합니다.
- 다양한 영역의 테스트 자동화
- 다양한 테스트 영역을 자동화하여 전체적인 테스트 수행 속도와 신뢰성을 향상시킵니다.
- Regression Test(회귀 테스트) 및 반복 테스트 도입
- BDD 기반 자동화를 Regression Test나 반복적인 테스트에 도입하여 테스트 효율성을 높입니다.
이를 통해 생산성을 증대하고, 전체적인 테스트 수행 속도 및 신뢰성을 크게 향상시킬 수 있습니다.
BDD(Behavior Driven Development)는 행위 주도 개발을 의미합니다. BDD는 소프트웨어 개발 방법론 중 하나로, 개발자와 비즈니스 이해관계자 간의 협업을 촉진하여 비즈니스 요구사항을 명확히 하고, 이를 테스트 가능한 형식으로 변환하는 것을 목표로 합니다.
주요 특징
- 공통 언어 사용: 개발자, 테스터, 비즈니스 분석가 등 모든 이해관계자가 이해할 수 있는 공통 언어(예: Gherkin)를 사용하여 요구사항을 작성합니다.
- 행위 중심 시나리오: 시스템의 행위를 중심으로 시나리오를 작성하여 요구사항을 명확히 합니다.
예를 들어, 사용자가 시스템에 로그인하는 시나리오를 작성할 수 있습니다.- 자동화 테스트: 작성된 시나리오를 자동화하여 테스트 케이스로 활용할 수 있습니다.
이를 통해 요구사항이 제대로 구현되었는지 검증합니다.- 지속적인 피드백: 테스트 자동화를 통해 지속적으로 피드백을 제공받아 개발 프로세스를 개선합니다.
Regression Test(회귀 테스트)는 소프트웨어 업데이트나 변경 후 기존 기능이 의도한 대로 작동하는지 확인하기 위해 수행되는 테스트입니다. 소프트웨어 코드가 변경될 때마다 예기치 않은 버그나 오류가 발생할 가능성이 있기 때문에, Regression Test를 통해 기존 기능이 제대로 작동하는지 검증합니다.
주요 목적
- 기존 기능 검증: 새로운 코드 변경이 기존 기능에 부정적인 영향을 미치지 않았는지 확인합니다.
- 버그 발견: 코드 변경으로 인해 발생한 새로운 버그를 조기에 발견합니다.
- 품질 유지: 소프트웨어의 전체적인 품질과 안정성을 유지합니다.
주요 특징
- 자동화: Regression Test는 주로 자동화된 테스트 도구를 사용하여 실행됩니다. 이를 통해 반복적인 테스트 작업을 효율적으로 수행할 수 있습니다.
- 반복 수행: 코드가 변경될 때마다 반복적으로 수행되어야 합니다.
- 포괄성: 가능한 많은 기존 기능을 포함하여 테스트 범위를 넓게 설정합니다.
Regression Test는 소프트웨어 개발 주기에서 중요한 단계로, 코드 변경으로 인한 부작용을 최소화하고 소프트웨어의 품질을 유지하는 데 도움을 줍니다
# 자세한 TestOps 환경 구축 방법
1. Jira Cloud에서 Tests 및 Test Plan 설정
- Jira에 접속하여 관리자로 로그인합니다.
- Apps Management으로 이동하여 "QAlity - Test Management for Jira"를 설치합니다.
- Test Case 이슈 유형을 활성화합니다.
- Test Plan을 생성하고 관련 테스트 케이스를 추가합니다.
Jira Cloud는 Atlassian에서 제공하는 클라우드 기반의 프로젝트 관리 소프트웨어입니다. 주로 이슈 추적 및 프로젝트 관리를 위해 사용되며, 특히 소프트웨어 개발 팀 사이에서 인기가 많습니다. Jira Cloud는 웹 애플리케이션으로 제공되며, 언제 어디서나 인터넷 연결만 있으면 접근할 수 있습니다.
주요 기능
- 이슈 추적: 버그, 기능 요청, 작업 등을 이슈로 관리하며, 이슈의 상태를 추적할 수 있습니다.
- 프로젝트 관리: Kanban 및 Scrum 보드를 통해 프로젝트를 시각적으로 관리하고, 작업 흐름을 최적화할 수 있습니다.
- 보고서 및 대시보드: 다양한 보고서와 대시보드를 통해 프로젝트 진행 상황을 한눈에 파악할 수 있습니다.
- 통합: Bitbucket, GitHub, Confluence 등 다양한 도구와 통합하여 더욱 효율적으로 작업할 수 있습니다.
- 자동화: 워크플로우 자동화를 통해 반복 작업을 줄이고, 작업 효율성을 높일 수 있습니다.
Jira Cloud는 팀 간의 협업을 촉진하고, 프로젝트 관리와 이슈 추적을 체계적으로 수행할 수 있도록 도와주는 도구입니다.
Kanban 및 Scrum 보드 차이점
Kanban 보드
Kanban 보드는 작업의 흐름을 시각화하고, 작업량을 제한하여 효율성을 높이는 방법론입니다. 보드에는 보통 다음과 같은 컬럼이 포함됩니다:
- To Do: 해야 할 작업
- In Progress: 진행 중인 작업
- Done: 완료된 작업
Kanban의 주요 원칙은 다음과 같습니다:
- 작업 시각화: 모든 작업을 보드에 시각화하여 팀이 현재 상태를 쉽게 파악할 수 있게 합니다.
- 작업 제한: 각 컬럼에 들어가는 작업 수를 제한하여 병목 현상을 방지하고, 작업 흐름을 최적화합니다.
- 작업 흐름 관리: 작업이 원활하게 진행되도록 지속적으로 개선하고 조정합니다.
Scrum 보드
Scrum 보드는 스프린트라는 일정 기간 동안 작업을 계획하고, 진행 상태를 추적하는 데 사용되는 도구입니다.
보드에는 보통 다음과 같은 컬럼이 포함됩니다:
- Backlog: 우선순위가 낮은 작업 목록
- Sprint Planning: 스프린트 동안 수행할 작업 목록
- In Progress: 진행 중인 작업
- Done: 완료된 작업
Scrum의 주요 원칙은 다음과 같습니다:
- 스프린트: 일정 기간 동안 목표를 설정하고, 그 기간 내에 작업을 완료합니다.
- 일일 스탠드업: 팀이 매일 짧은 회의를 통해 진행 상황을 공유하고, 장애물을 논의합니다.
- 스프린트 리뷰 및 회고: 스프린트가 끝난 후 팀이 작업 결과를 검토하고, 개선 사항을 논의합니다.
차이점
- 작업 흐름 vs 스프린트:
- Kanban: 작업 흐름을 지속적으로 관리하며, 작업에 제한을 둡니다.
- Scrum: 일정한 기간(스프린트) 동안 작업을 계획하고, 그 기간 내에 완료합니다.
- 유연성 vs 계획:
- Kanban: 유연하게 작업량을 조절하고, 필요한 경우 즉시 조정할 수 있습니다.
- Scrum: 스프린트 기간 동안 계획을 세우고, 계획에 따라 작업을 진행합니다.
- 작업 제한:
- Kanban: 각 컬럼에 들어가는 작업 수를 제한하여 효율성을 높입니다.
- Scrum: 작업 제한은 없으며, 스프린트 목표에 따라 작업을 진행합니다.
각각의 방법론은 팀의 필요와 프로젝트 특성에 따라 선택할 수 있으며, 상황에 맞게 조합해서 사용할 수도 있습니다.
# Confluence vs Gitlab wiki?
Confluence는 Atlassian에서 개발한 팀 협업 도구로, 주로 문서 작성, 공유, 협업을 위한 플랫폼입니다.
Confluence를 사용하면 팀이 중요한 정보와 아이디어를 중앙 집중화하여 쉽게 접근하고 협업할 수 있습니다.
주요 기능
- 문서 작성 및 공유: 팀원들이 함께 문서를 작성하고 편집할 수 있습니다.
페이지 및 블로그 게시물을 만들어 중요한 정보를 공유합니다. - 공간 관리: 프로젝트나 팀별로 공간을 생성하여 관련 문서와 파일을 체계적으로 관리할 수 있습니다.
- 템플릿 사용: 다양한 템플릿을 제공하여 문서 작성 시간을 절약하고 일관성을 유지할 수 있습니다.
- 댓글 및 피드백: 문서에 댓글을 달고 피드백을 제공하여 팀원 간의 소통을 원활하게 합니다.
- 통합: Jira, Trello 등 다양한 도구와 통합하여 작업 흐름을 최적화할 수 있습니다.
- 검색 기능: 필요한 정보를 빠르게 찾을 수 있도록 강력한 검색 기능을 제공합니다.
사용 사례
- 프로젝트 계획: 프로젝트 계획서, 회의록, 작업 목록 등을 작성하고 공유합니다.
- 지식 관리: 회사의 정책, 절차, 기술 문서 등을 중앙에서 관리하고 접근할 수 있습니다.
- 팀 협업: 팀원들이 함께 아이디어를 교환하고, 프로젝트에 대한 피드백을 주고받으며 협력합니다.
Confluence는 팀이 정보를 효율적으로 관리하고, 협업을 강화하는 데 도움이 되는 도구입니다.
Confluence와 gitlab wiki와 차이점
Confluence
- 제공 업체: Atlassian에서 제공.
- 주요 기능: 문서 작성, 공동 작업, 공간 관리, 다양한 템플릿, 댓글 및 피드백, 강력한 검색 기능, 프로젝트 관리 도구와의 통합(Jira, Trello 등).
- 사용 목적: 팀 협업과 문서 관리를 중심으로 하여 프로젝트 계획서, 회의록, 작업 목록 등을 작성하고 공유.
- 특징: 구조화된 공간과 페이지를 통해 정보를 체계적으로 관리하고, 다양한 템플릿을 제공하여 일관된 문서 작성 가능.
GitLab Wiki
- 제공 업체: GitLab에서 제공.
- 주요 기능: 문서 작성 및 편집, 버전 관리, 링크를 통한 문서 간 연결, Markdown 지원, Git 저장소와 통합.
- 사용 목적: 주로 개발자와 기술 팀을 위한 지식 기반 관리 도구로 사용되며, 코드와 문서를 함께 관리.
- 특징: Git 저장소와 통합되어 코드와 문서를 함께 관리할 수 있으며, Markdown을 사용하여 간편하게 문서를 작성.
주요 차이점
- 제공 업체 및 통합 도구:
- Confluence: Atlassian에서 제공하며, Jira, Trello 등 다양한 프로젝트 관리 도구와의 통합이 용이.
- GitLab Wiki: GitLab에서 제공하며, GitLab의 코드 저장소와 긴밀하게 통합.
- 사용 목적:
- Confluence: 팀 협업과 문서 관리, 프로젝트 계획 및 작업 목록 작성에 중점.
- GitLab Wiki: 개발자와 기술 팀의 지식 기반 관리 및 코드와 문서를 함께 관리하는 데 중점.
- 문서 작성 및 관리:
- Confluence: 구조화된 공간과 페이지를 통해 체계적인 문서 관리 가능.
- GitLab Wiki: Markdown을 사용한 간편한 문서 작성과 Git을 통한 버전 관리.
두 도구 모두 정보 공유와 협업에 유용하지만, 팀의 필요와 프로젝트 특성에 따라 선택이 달라질 수 있습니다.
Confluence는 프로젝트 관리와 협업에 중점을 둔 팀에 적합하고,
GitLab Wiki는 코드와 문서를 함께 관리하려는 개발 팀에 더 적합합니다.
2. Bitbucket/Jenkins CI/CD Pipeline에서 Test Plan으로 Test Case Load
Jenkins는 오픈 소스 자동화 서버로, 주로 소프트웨어 개발에서
CI/CD (Continuous Integration/Continuous Deployment) 파이프라인을 구축하는 데 사용됩니다.
Jenkins는 다양한 플러그인과 통합할 수 있어 개발 프로세스를 자동화하고,
빌드, 테스트, 배포 작업을 효율적으로 수행할 수 있습니다.주요 기능
- 자동화된 빌드 및 테스트: 코드 변경 시 자동으로 빌드하고 테스트를 실행하여 품질을 유지합니다.
- 플러그인 지원: 1,000개 이상의 플러그인을 지원하여 다양한 도구와 통합할 수 있습니다.
- 분산 빌드: 여러 노드에서 빌드를 분산 실행하여 빌드 속도를 높일 수 있습니다.
- 확장성: 다양한 환경과 요구에 맞게 쉽게 확장할 수 있습니다.
- 커뮤니티 및 지원: 활발한 커뮤니티와 다양한 문서를 통해 사용자가 도움을 받을 수 있습니다.
사용 사례
- CI/CD 파이프라인 구축: 코드가 변경될 때마다
자동으로 빌드, 테스트, 배포를 수행하여 개발 속도와 품질을 높입니다.- 자동화된 테스트 실행: 테스트 스크립트를 자동으로 실행하고 결과를 기록하여 문제를 조기에 발견합니다.
- 배포 자동화: 애플리케이션을 다양한 환경(예: 개발, 테스트, 운영)에 자동으로 배포합니다.
Jenkins는 개발 팀이 효율적으로 협업하고, 반복적인 작업을 자동화하여 생산성을 높이는 데 매우 유용한 도구입니다.
CI/CD Pipeline은 Continuous Integration (CI)와 Continuous Deployment/Delivery (CD)의 결합으로,
소프트웨어 개발 과정에서 코드 변경 사항을 자동으로 빌드, 테스트, 배포하는 일련의 프로세스를 의미합니다.주요 구성 요소
- Continuous Integration (CI):
- 코드 통합: 여러 개발자가 작업한 코드를 자주(하루에 여러 번) 중앙 저장소에 병합.
- 자동화된 빌드: 코드가 병합될 때마다 자동으로 빌드를 실행하여 코드가 제대로 작동하는지 확인.
- 자동화된 테스트: 빌드가 완료된 후 자동으로 테스트를 실행하여 코드 품질을 검증.
- Continuous Deployment/Delivery (CD):
- Continuous Delivery: 빌드와 테스트가 완료된 후 자동으로 배포할 준비 상태로 유지. 승인 후 배포할 수 있는 상태를 항상 유지.
- Continuous Deployment: 모든 빌드와 테스트가 성공적으로 완료되면, 자동으로 프로덕션 환경에 배포. 인간의 개입 없이 자동 배포를 실현.
주요 단계
- 코드 커밋: 개발자가 코드 변경 사항을 중앙 저장소에 푸시.
- 빌드 실행: CI 서버가 변경 사항을 감지하고 자동으로 빌드를 실행.
- 테스트 실행: 빌드가 완료된 후 자동으로 유닛 테스트, 통합 테스트 등을 실행.
- 배포 준비: 테스트가 성공적으로 완료되면 배포할 준비 상태로 유지.
- 자동 배포: Continuous Deployment의 경우, 테스트가 성공하면 자동으로 프로덕션 환경에 배포.
CI/CD Pipeline은 소프트웨어 개발의 효율성과 품질을 높여주며, 변경 사항을 신속하게 배포할 수 있도록 도와줍니다.
이를 통해 개발 팀은 빠르게 피드백을 받고, 문제를 조기에 해결할 수 있습니다.
Bitbucket은 Atlassian에서 개발한 웹 기반의 버전 관리 저장소 호스팅 서비스입니다.
Git 및 Mercurial 버전 제어 시스템을 지원하며,
소프트웨어 개발 팀이 코드 작업을 효율적으로 협업하고 관리할 수 있도록 돕습니다.
Bitbucket은 코드 저장, 리뷰, CI/CD 파이프라인 설정 등 다양한 기능을 제공합니다.주요 기능:
- Git 및 Mercurial 지원: 여러 버전 관리 시스템을 지원하여 유연하게 사용할 수 있습니다.
- 코드 리뷰 및 병합: 팀원 간 코드 리뷰를 통해 코드 품질을 높이고, 병합 충돌을 방지합니다.
- CI/CD 파이프라인: 자동화된 빌드, 테스트, 배포 파이프라인을 설정하여
개발 속도와 품질을 향상시킵니다.- Jira 통합: Jira와의 통합을 통해 이슈 추적 및 프로젝트 관리를 효율적으로 수행할 수 있습니다.
- 협업 도구: 풀 리퀘스트, 코드 댓글, 이슈 등 다양한 협업 도구를 통해 팀원 간 소통을 원활하게 합니다.
Bitbucket을 통해 개발 팀은 코드 저장소를 관리하고, 코드 품질을 유지하며, 프로젝트를 더 효율적으로 진행할 수 있습니다.
Git과 Mercurial은 모두 분산 버전 제어 시스템(DVCS)으로,
코드의 버전을 관리하고 팀 협업을 효율적으로 지원합니다.
하지만 둘 간에는 몇 가지 차이점이 있습니다.Git
Git은 Linus Torvalds가 개발한 분산 버전 제어 시스템으로, 주로 소프트웨어 개발에서 사용됩니다.
주요 특징:
- 분산형 아키텍처: 모든 개발자가 로컬 저장소를 가지며, 전체 프로젝트 기록을 복제할 수 있습니다.
- 브랜치 및 머지: 브랜치를 쉽게 만들고 합칠 수 있어
다양한 기능을 독립적으로 개발한 후 병합하기 용이합니다.- 속도: 대규모 프로젝트에서도 빠른 속도를 자랑합니다.
- 커뮤니티 및 툴: GitHub, GitLab, Bitbucket 등 많은 도구와 플랫폼이 Git을 지원합니다.
Mercurial
Mercurial은 빠르고 간단한 버전 관리를 목표로 개발된
DVCS( Distributed Version Control System ;분산 버전 제어 시스템)입니다.주요 특징:
- 사용의 용이성: 상대적으로 사용하기 쉽고 간단한 명령어 체계를 가지고 있습니다.
- 분산형 아키텍처: Git과 마찬가지로 분산형으로,
모든 개발자가 로컬 저장소를 가지며 전체 프로젝트 기록을 복제할 수 있습니다.- 내장 GUI: 기본적으로 GUI 지원을 포함하고 있어,
명령어 사용이 익숙하지 않은 사용자에게도 친숙합니다.- 성능: 대규모 프로젝트에서도 빠른 성능을 보장합니다.
차이점
- 사용자 경험:
- Git: 강력하고 유연하지만, 초보자에게는 다소 복잡할 수 있습니다.
- Mercurial: 간단하고 직관적인 명령어 체계로 사용하기 쉽습니다.
- 커뮤니티 및 생태계:
- Git: 널리 사용되고, 다양한 툴과 플랫폼에서 지원됩니다.
- Mercurial: Git에 비해 상대적으로 적은 커뮤니티와 생태계를 가지고 있습니다.
- 명령어 차이:
- Git과 Mercurial의 명령어는 비슷하지만, 일부 명령어와 사용 방식에 차이가 있습니다.
- 내장 GUI:
- Git: 기본적으로 GUI를 제공하지 않으며, 별도의 GUI 도구를 사용해야 합니다.
- Mercurial: 기본적으로 GUI를 포함하고 있어 더 직관적인 사용이 가능합니다.
두 시스템 모두 강력한 버전 제어 기능을 제공하며, 팀의 요구와 프로젝트 특성에 따라 선택할 수 있습니다.
- Bitbucket에서 원하는 리파지토리를 선택하고 Webhook을 설정하여 Jenkins로 통합합니다.
- Jenkins에서 Bitbucket 플러그인을 설치하고 Bitbucket 리파지토리를 연결합니다.
- Pipeline을 설정하여 테스트 케이스를 로드합니다.
Webhook은 웹 애플리케이션 간의 실시간 데이터 전송을 가능하게 하는 방법입니다.
쉽게 말해, 특정 이벤트가 발생했을 때 지정된 URL로 자동으로 HTTP 요청을 보내는 방식입니다.
웹 애플리케이션이 서로 통신하고 협력할 수 있도록 돕는 중요한 도구입니다.주요 특징:
- 자동화: 특정 이벤트가 발생할 때 자동으로 실행됩니다.
예를 들어, 코드가 저장소에 푸시될 때 Jenkins 빌드가 자동으로 트리거됩니다.- 실시간: 즉시 데이터를 전송하여 빠른 반응을 가능하게 합니다.
- 간편한 설정: 주로 간단한 설정을 통해 웹 애플리케이션 간의 통신을 설정할 수 있습니다.
Webhook의 일반적인 사용 사례:
- CI/CD 파이프라인: 코드 변경 사항을 푸시하면 자동으로 빌드 및 배포 프로세스를 시작합니다.
- 알림 시스템: 특정 이벤트가 발생하면 자동으로 알림을 보냅니다.
- 데이터 동기화: 여러 애플리케이션 간의 데이터를 실시간으로 동기화합니다.
3. Bitbucket/Jenkins CI/CD Pipeline에서 Test Execution (with Cucumber)
- Jenkins에서 Freestyle Project를 생성하고 Source Code Management에서 Git을 선택합니다.
- Build Triggers에서 Bitbucket Push와 Pull Request Plugin을 설정합니다.
- Build Steps에서 Cucumber 테스트를 실행합니다.
Cucumber는 소프트웨어의 기능을 테스트하기 위한 오픈 소스 도구입니다.
주로 애자일 개발 방법론을 사용하는 팀에서 많이 활용됩니다.
Cucumber는 비즈니스 이해관계자와 개발자 간의 커뮤니케이션을 개선하기 위해 개발되었으며,
다음과 같은 특징을 가지고 있습니다:
- Gherkin 언어: Cucumber는 Gherkin이라는 특정 언어를 사용하여 테스트 시나리오를 작성합니다.
이 언어는 자연어와 유사하여 비기술적인 사용자도 쉽게 이해할 수 있습니다.- 협업 도구: 비즈니스 이해관계자, 개발자, 테스터 간의 원활한 협업을 돕습니다.
비즈니스 요구사항을 명확히 하고 이를 코드로 구현한 후 테스트할 수 있습니다.- 자동화: Cucumber는 작성된 테스트 시나리오를 자동으로 실행하여 소프트웨어의 기능을 검증합니다.
- 확장성: 다양한 프로그래밍 언어와 통합할 수 있어 유연하게 사용할 수 있습니다.
예시 Gherkin 시나리오
Feature: 로그인 기능Feature: 로그인 기능 Scenario: 성공적인 로그인 Given 사용자가 로그인 페이지에 접근했을 때 When 사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭하면 Then 사용자 대시보드가 표시되어야 한다
위 예시에서 볼 수 있듯이, 테스트 시나리오는 사람이 읽을 수 있는 자연어 형식으로 작성되어
비기술적인 사람도 쉽게 이해할 수 있습니다.Cucumber를 사용하여 개발 과정의 효율성과 품질을 높일 수 있습니다.
3-1. Device/Emulator (Tablet/Mobile) Test Execution
- Jenkins에서 Remote SSH Server를 설정하여 장치/ 에뮬레이터에 접근합니다.
- Build Steps에서 장치/ 에뮬레이터에서 테스트를 실행합니다.
Remote SSH Server는 원격 시스템에 안전하게 접근할 수 있도록 해주는 서버입니다.
SSH(Secure Shell)는 네트워크를 통해 암호화된 채널을 사용하여
원격 시스템에 명령어를 실행할 수 있게 해주는 프로토콜입니다.
SSH를 사용하면 파일 전송, 원격 명령 실행, 원격 터미널 접속 등 다양한 작업을 안전하게 수행할 수 있습니다.주요 특징
- 보안성: 데이터를 암호화하여 전송함으로써 네트워크를 통한 데이터 도청과 중간자 공격을 방지합니다.
- 인증: 사용자 인증을 통해 권한 있는 사용자만 접근할 수 있게 합니다. 주로 비밀번호나 SSH 키(pair)를 사용합니다.
- 다양한 기능: 터미널 접속, 파일 전송(SCP, SFTP), 원격 명령어 실행 등 다양한 기능을 제공합니다.
사용 사례
- 서버 관리: 원격 서버에 접속하여 관리 작업을 수행할 수 있습니다.
- 개발 환경: 개발자가 원격으로 코드 배포 및 테스트를 할 수 있습니다.
- 파일 전송: 안전하게 파일을 전송하고 받을 수 있습니다.
원격으로 서버를 관리하거나 원격 작업을 수행해야 할 때 매우 유용한 도구입니다.
3-2. Jira Cloud에서 Execution
- Jira에서 Execution을 기록하고 테스트 결과를 업데이트합니다3.
4. Bitbucket/Jenkins CI/CD에서 Test Report
- Jenkins에서 JUnit Plugin을 설치하여 테스트 결과를 수집합니다.
- Post-build Actions에서 Test Report를 생성합니다.
4-1. Cucumber Reports
- Cucumber 테스트 결과를 JUnit XML 형식으로 생성합니다.
- JUnit Plugin을 사용하여 Cucumber Reports를 생성합니다.
JUnit XML은 JUnit 테스트 프레임워크에서 생성되는 XML 형식의 리포트 파일입니다. JUnit은 Java 기반의 단위 테스트 프레임워크로, 개발자가 작성한 코드를 테스트하고 그 결과를 기록하는 데 사용됩니다. JUnit XML 리포트는 테스트 결과를 기계가 읽을 수 있는 형식으로 저장하여, CI/CD 파이프라인에서 테스트 결과를 자동으로 분석하고 보고하는 데 유용합니다.
주요 요소
- 테스트 결과: 각 테스트 케이스의 실행 결과(Passed, Failed, Skipped 등)를 기록합니다.
- 테스트 시간: 각 테스트 케이스가 실행된 시간을 기록합니다.
- 테스트 오류 및 실패: 테스트 중 발생한 오류나 실패의 원인을 기록합니다.
- 테스트 메타데이터: 테스트 스위트의 이름, 테스트 케이스의 이름, 클래스 이름 등 관련 정보를 포함합니다.
아래 예시에서 볼 수 있듯이, JUnit XML은 테스트 스위트, 테스트 케이스, 실행 시간, 실패 및 오류 정보를 포함하고 있습니다.예시 JUnit XML 구조
<testsuite name="SampleTestSuite" tests="2" failures="1" errors="0" skipped="0" timestamp="2023-04-06T11:54:03" time="0.003">
<testcase classname="com.example.SampleTest" name="testMethod1" time="0.001"/>
<testcase classname="com.example.SampleTest" name="testMethod2" time="0.002">
<failure message="expected:<true> but was:<false>">...</failure>
</testcase>
</testsuite>
5. Bitbucket/Jenkins CI/CD에서 Create Defect
- Jenkins에서 테스트 실패 시 Jira Test Result Reporter Plugin을 사용하여 자동으로 Jira에 이슈를 생성합니다.
Jira Test Result Reporter Plugin은 Jenkins와 Jira를 연동하여
테스트 결과를 자동으로 Jira에 기록하는 플러그인입니다.
이 플러그인을 사용하면 Jenkins에서 실행된 테스트가 실패할 경우,
자동으로 Jira에 이슈를 생성하거나 기존 이슈에 연결할 수 있습니다.주요 기능
- 테스트 결과 자동 기록: 테스트가 실패할 때 자동으로 Jira에 이슈를 생성하거나 기존 이슈에 연결.
- 템플릿 사용: 이슈 생성 시 요청 템플릿을 사용하여 요약 및 설명 등 필드를 자동으로 채웁니다.
- 프로젝트 통합: 특정 프로젝트 키와 이슈 유형을 지정하여 관련된 이슈를 생성할 수 있습니다.
사용 방법
- 글로벌 설정: Jenkins의 "Manage Jenkins" -> "Configure System"에서 JiraTestResultReporter 플러그인을 설정하고 Jira 서버 URL, 사용자 이름, 비밀번호를 입력합니다.
- 작업 설정: Jenkins 작업에서 "Add post-build action" -> "Additional test report features"에서 JiraTestResultReporter를 선택하고 프로젝트 키와 이슈 유형을 설정합니다.
이 플러그인을 통해 테스트 결과를 신속하게 Jira에 기록하고, 개발 팀이 문제를 빠르게 파악하고 해결할 수 있습니다.
5-1. Auto Create Defect In Jira
- Jira에서 Automation을 설정하여 테스트 실패 시 자동으로 이슈를 생성합니다.
- Webhook을 설정하여 Jenkins에서 생성된 이슈를 Jira로 전달합니다.
이렇게 하여 Jira Cloud에서 테스트 관리 및 자동 이슈 생성을 할수 있습니다.
'테스트 관련 강좌' 카테고리의 다른 글
자사 서비스 QA 엔지니어 채용 면접 질문과 예시 답변 (0) | 2025.02.08 |
---|---|
새로운 인재상의 QA 답변 (0) | 2025.01.31 |
QA 엔지니어와 협업하여 생성형 AI 프로덕트의 완성도 높이기 - 안소현 (3) | 2024.07.25 |
키워드기반 자동화 테스트 with 로봇프레임워크 - 육경민 (0) | 2024.07.24 |
GitLab과 관련하여 무료 강좌 (1) | 2024.07.23 |