Skip to Content
Suffering builds character
아카이브26.mutation Testing돌연변이 테스트3. Pitest 설치 및 환경 구성

3. Pitest 설치 및 환경 구성

1. 사전 준비

도구최소 버전확인 명령어
Java (JDK)17+java -version
Maven3.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-pluginJUnit 5 테스트를 인식하기 위한 필수 의존성

3. 실행 방법

단위 테스트 실행

먼저 모든 테스트가 통과하는지 확인

terminal
mvn test
⚠️
Warning

테스트가 실패하는 상태에서는 Pitest를 실행할 수 없음. 반드시 모든 테스트가 통과한 후에 돌연변이 테스트를 실행

전체 돌연변이 테스트 실행

terminal
mvn org.pitest:pitest-maven:mutationCoverage

Phase별 실행 (Maven 프로파일 사용)

전체 프로젝트를 매번 돌리면 시간이 오래 걸림
학습 중인 Phase만 선택적으로 실행 가능

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 CoverageMutation 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