테스트 커버리지와 코드 커버리지
테스트 커버리지는 테스트 대상 범위 중 수행된 테스트의 비율이다. 코드 커버리지는 테스트 중 소스코드가 실행된 비율이다. 테스트 커버리지가 상위 개념이고, 코드 커버리지는 구조적 실행 범위를 재는 지표다. 코드 커버리지는 측정 기준에 따라 강도가 나뉜다. 구문 커버리…
주요 장면
대본
정의
테스트 커버리지는 테스트 대상 범위 중 수행된 테스트의 비율이다.
코드 커버리지는 테스트 중 소스코드가 실행된 비율이다.
테스트 커버리지가 상위 개념이고, 코드 커버리지는 구조적 실행 범위를 재는 지표다.
강도 순서
코드 커버리지는 측정 기준에 따라 강도가 나뉜다.
구문 커버리지는 문장 실행 여부만 보고, 분기 커버리지는 참과 거짓 양쪽을 본다.
조건 커버리지는 복합 조건의 각 항을 보고, MC/DC는 각 조건이 결과에 독립적으로 영향을 주는지 본다.
아래로 갈수록 요구하는 실행 조합이 많아져 결함 검출 강도가 높아진다.
예제로 계산
예를 들어 if (A && B) 로 나뉘는 코드를 생각한다.
테스트 1과 2만으로 구문, 분기, 조건 커버리지는 모두 100%가 된다.
그러나 MC/DC는 충족되지 않는다. A만 바꿔 결과가 바뀌는 쌍이 필요하다.
테스트 3을 추가하면 A가 결과에 독립적으로 영향을 준다는 점이 확인된다.
헷갈리는 점과 한계
커버리지 수치가 높아도 결함이 없다고 단정할 수는 없다.
구문 커버리지 100%는 분기 커버리지 100%를 보장하지 않는다.
같은 코드라도 입력 조합에 따라 결과가 달라진다. 커버리지는 실행 여부만 본다.
그래서 요구사항 추적과 병행해 완전성을 확인해야 한다.
정답과 정리
정답은 아니다. 구문 커버리지 100%는 분기 커버리지 100%를 보장하지 않는다.
테스트 커버리지는 대상 범위의 충족 비율이고, 코드 커버리지는 소스코드 실행 비율이다.
커버리지 100%도 결함 없음을 뜻하지 않는다. 요구사항 추적과 함께 봐야 한다.
강도 순서는 구문, 분기, 조건/결정, MC/DC, 경로 순이다.