위키득계정 ↗
기술

JaCoCo

JaCoCo기술
분야
코드 커버리지
대상
자바 바이트코드
측정 예
명령과 분기 및 줄
대표 연동
Maven과 Ant
JaCoCo는 자바 프로그램의 실행 범위를 기록하는 커버리지 라이브러리다. 바이트코드에서 얻은 정보를 바탕으로 명령과 분기, 메서드 등의 실행 여부를 계산하고 소스 위치와 연결한다.

실행을 기록하는 구조

JaCoCo의 자바 에이전트는 클래스를 불러올 때 기록 코드를 넣어 실행 정보를 수집한다. 수집 기록과 보고서 생성은 구분되는 단계다. 빌드 도구 연동을 쓰면 에이전트 설정을 직접 다루는 부담을 줄일 수 있다. 분석하는 클래스 파일은 기록을 만든 실행의 파일과 일치해야 한다.

줄과 분기의 의미

한 줄에 여러 명령이 대응할 수 있어 줄의 실행 여부와 모든 명령의 실행 여부는 다르다. 줄 단위 표시에는 컴파일된 디버그 정보가 필요하다. 분기 지표는 조건문과 선택문의 경로를 다루며 예외 처리는 이 분기 집계에 포함되지 않는다. 따라서 높은 분기 비율이 모든 예외 경로의 검사를 뜻하지 않는다.

보고서 해석과 범위

컴파일러가 만든 합성 코드가 결과에 영향을 줄 수 있으므로 소스와 바이트코드의 차이를 고려한다. 커버리지는 지나간 코드의 기록이며 올바른 단언의 존재를 증명하지 않는다. 원격 제어 인터페이스를 쓰는 경우 인증 기능이 없다는 제약도 고려해 접근 범위를 제한한다. 일반 테스트와 변이 테스트를 함께 살펴보면 서로 다른 공백을 찾는 데 도움이 된다.

관련 문서

Pitest / Coverlet / ReportGenerator / QuickTheories