3. Pitest 설치 및 환경 구성
1. 사전 준비
| 도구 | 최소 버전 | 확인 명령어 |
|---|---|---|
| Java (JDK) | 17+ | java -version |
| Maven | 3.8+ | mvn -version |
💡
Tip
제공되는 프로젝트에는 Pitest 플러그인이 이미 설정되어 있음
→ Maven이 플러그인을 자동으로 다운로드하여 환경이 구성됨
2. pom.xml 핵심 설정
프로젝트의 pom.xml에 다음 설정이 포함되어 있음:
pom.xml
<!-- Pitest 돌연변이 테스트 플러그인 -->
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.15.8</version>
<dependencies>
<!-- JUnit 5 지원 -->
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
<configuration>
<targetClasses>
<param>com.example.mutation.*</param>
</targetClasses>
<targetTests>
<param>com.example.mutation.*</param>
</targetTests>
</configuration>
</plugin>주요 설정 항목:
| 항목 | 설명 |
|---|---|
targetClasses | 돌연변이를 적용할 대상 클래스 패턴 |
targetTests | 돌연변이 탐지에 사용할 테스트 클래스 패턴 |
pitest-junit5-plugin | JUnit 5 테스트를 인식하기 위한 필수 의존성 |
3. 실행 방법
단위 테스트 실행
먼저 모든 테스트가 통과하는지 확인
terminal
mvn test⚠️
Warning
테스트가 실패하는 상태에서는 Pitest를 실행할 수 없음. 반드시 모든 테스트가 통과한 후에 돌연변이 테스트를 실행
전체 돌연변이 테스트 실행
terminal
mvn org.pitest:pitest-maven:mutationCoveragePhase별 실행 (Maven 프로파일 사용)
전체 프로젝트를 매번 돌리면 시간이 오래 걸림
학습 중인 Phase만 선택적으로 실행 가능
Phase 1
terminal
mvn org.pitest:pitest-maven:mutationCoverage -Pphase1리포트 확인
실행이 완료되면 target/pit-reports/index.html을 열어서 커버리지 지표 확인 가능
4. 리포트 읽는 법
Pitest HTML 리포트는 3단계 구조
1단계: 전체 요약 (index.html)
패키지별 Mutation Score와 라인 커버리지를 한눈에 볼 수 있음
| 열 | 의미 |
|---|---|
| Number of Classes | 대상 클래스 수 |
| Line Coverage | 테스트가 실행한 라인 비율 |
| Mutation Coverage | Mutation Score (핵심 지표) |
| Test Strength | 커버리지가 있는 돌연변이 중 제거된 비율 |
2단계: 패키지별 상세
패키지를 클릭하면 클래스별 Mutation Score를 볼 수 있음
3단계: 클래스별 소스 코드 뷰
클래스를 클릭하면 소스 코드가 라인별로 표시됨
| 색상 | 의미 |
|---|---|
| 🟢 초록색 배경 | 해당 라인의 모든 돌연변이가 제거됨 (Killed) |
| 🔴 빨간색 배경 | 해당 라인에 생존한 돌연변이가 있음 (Survived) |
| 흰색 배경 | 돌연변이 대상이 아닌 라인 (주석, 선언 등) |
라인 번호 옆의 숫자를 클릭하면 해당 라인에 적용된 돌연변이 목록과 각각의 판정 결과를 볼 수 있음
💡
Tip
빨간색 라인이 보이면
그 라인의 돌연변이를 확인하고, 해당 변이를 잡아낼 수 있는 테스트를 추가하면 됨
이것이 돌연변이 테스트를 활용한 테스트 개선의 핵심 워크플로
5. 콘솔 출력 읽는 법
Pitest 실행 후 콘솔에 출력되는 통계 요약
프로그램 실행 콘솔
================================================================================
- Statistics
================================================================================
>> Line Coverage (for mutated classes only): 73/76 (96%)
>> Generated 38 mutations Killed 36 (95%)
>> Mutations with no coverage 1. Test strength 97%| 항목 | 의미 |
|---|---|
Generated 38 mutations | 총 38개의 돌연변이가 생성됨 |
Killed 36 (95%) | 36개 제거, Mutation Score 95% |
Mutations with no coverage 1 | 테스트가 실행하지 않는 라인의 돌연변이 개수(1개) |
Test strength 97% | 돌연변이가 제거된 비율에 따른 테스트 강도 |
Last updated on