Skip to Content
Suffering builds character
아카이브26.mutation Testing돌연변이 테스트3. Pitest

3. Pitest

Pitest 는 Java 진영의 대표적인 돌연변이 테스트 라이브러리

1. Pitest의 동작 방식

Pitest의 전반적인 동작 방식은 다음과 같음

1-1. 바이트코드 변이

Pitest는 소스 코드(.java)를 컴파일 단계에서 직접 수정하는 것이 아닌,
→ 컴파일된 바이트코드(.class)를 직접 조작하여 돌연변이를 생성함

Pitest의 동작 방식
[원본 소스 코드] → javac 컴파일 → [바이트코드] → ASM 라이브러리로 변이 → [변이된 바이트코드]
💡
Tip

ASM(Abstract Syntax Manipulation)

ASM은 Java 바이트코드를 읽고 쓸 수 있는 저수준 라이브러리로,
Pitest는 ASM을 사용하여 .class 파일의 특정 명령어(instruction)를 다른 명령어로 교체함
예를 들어 IF_ICMPGE(>=) 명령어를 IF_ICMPGT(>)로 바꾸는 식

해당 방식의 장점은 다음과 같음

  • 빠름: 소스 코드를 다시 컴파일할 필요 없음
  • 정확함: 컴파일러 최적화 이후의 실제 실행 코드를 변이
  • 언어 독립적: JVM 위에서 동작하는 모든 언어(Kotlin, Scala 등)에 적용 가능
Last updated on