Code Coverage
TDD를 실천하기 위한 방법 중 하나입니다. 소프트웨어의 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표 중 하나입니다.
코드 커버리지는 소스코드를 기반으로 수행하는 화이트 박스 테스트를 통해 측정합니다.
블랙 박스 테스트
- 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식
- 올바른 입력과 올바르지 않은 입력을 입력하여 옳바른 출력이 나오는지 테스트하는 기법
- 사용자 관점의 테스트 방법
화이트 박스 테스트
- 응용 프로그램의 내부 구조와 동작을 검사하는 테스트 방식
- 소프트웨어 내부 소스 코드를 테스트 하는 기법
- 개발자 관점의 단위테스트 방법
측정기준
구문(Statement)
라인 커버리지라고 부릅니다.
프로덕션 코드의 전체 구문 중 몇 줄의 구문이 실행되었는지를 기준으로 판단합니다.
구문 커버리지 = (실행된 구문의 수/전체 구문의 수) * 100
결정(Decision)
브랜치 커버리지라고 부릅니다.
프로덕션 코드에 조건문이 있는 경우, 각 조건 별로 케이스를 작성하면 충족됩니다.
public boolean decisionTest () {
if(x > 0 && y < 0) {
log.debug("true");
}
log.debug("false");
}
- x > 0 && y < 0 true
- x > 0 && y < 0 false
조건(Condition)
결정 커버리지와 다르게 개별 조건식을 기준으로 합니다.
개별 조건문이 각 한번씩, True, False가 되도록합니다.
public boolean conditionTest () {
if(x > 0 && y < 0) {
log.debug("true");
}
log.debug("false");
}
x > 0 일때
- True
- False
y < 0 일때
- True
- False
사용법
1. build.gradle 설정
plugins {
id 'jacoco'
}
jacocoTestReport {
reports {
html.enabled true
xml.enabled true
csv.enabled false
// 리포트의 저장 경로를 설정
html.destination file("$buildDir/reports/jacoco/jacoco.xml")
xml.destination file("$buildDir/reports/jacoco/jacoco.xml")
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
// 커버리지 체크 룰 사용 유무
enabled = true
// 커버리지 체크의 대상은 클래스
element = 'CLASS'
// 브랜치 커버리지 50% 이상
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.50
}
// 라인 커버리지 50% 이상
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.50
}
// 빈 줄을 제외한 코드의 라인수를 최대 400라인으로 제한
limit {
counter = 'LINE'
value = 'TOTALCOUNT'
maximum = 400
}
// 커버리지 체크를 제외할 클래스
excludes = [
'*.test.*'
]
}
}
2.1 html 파일로 리포트 확인하기
test 실행 후 build/reports/jacoco/test/index.html 을 실행하면 코드 커버리지 체크 결과를 확인할 수 있습니다.
각 파일에 대한 결과를 확인할 수 있고, 빨간 부분으로 표시된 부분은 테스트 작성이 필요하다는 것입니다.
2.2 플러그인으로 확인하기
- Code Coverage for Java 설치
- 테스트 폴더 우클릭
- More Run/Debug 마우스 오버
- Run '프로젝트' with Coverage 클릭
- Project 탭에서 커버리지 확인하기

참고자료
'Test' 카테고리의 다른 글
| ExtendWith 어노테이션 (0) | 2023.09.24 |
|---|---|
| Mock, InjectMocks 어노테이션 (0) | 2023.09.23 |