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