전체 목록
테스트Medium#248

테스트 커버리지는 어떻게 해석해야 하나요?

#테스트#Coverage#품질#리스크

답변 포인트

숫자 지표와 실제 검증 품질를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

커버리지는 테스트 중 실행된 코드 비율을 보여주지만 좋은 assertion을 보장하지는 않습니다. 핵심 로직과 장애 비용이 큰 경로를 우선 검증해야 합니다.

테스트 커버리지는 코드 중 테스트가 실행한 비율을 보여주는 지표입니다. 유용한 신호지만 품질 자체를 보장하지는 않습니다.

종류

  • Statement coverage: 실행된 문장 비율
  • Branch coverage: if/switch 분기 실행 비율
  • Function coverage: 호출된 함수 비율
  • Line coverage: 실행된 라인 비율
TypeScript
function fee(type) {
  if (type === 'VIP') return 0;
  return 1000;
}

한 테스트가 일반 사용자만 검증하면 statement는 높아도 VIP 분기는 빠질 수 있습니다.

해석 방법

커버리지가 낮은 영역은 테스트 사각지대일 가능성이 큽니다. 하지만 90% 커버리지라도 assertion이 약하면 버그를 못 잡습니다. 반대로 generated code나 단순 DTO까지 억지로 테스트하면 비용만 늘 수 있습니다.

실무 기준

  • 핵심 도메인, 결제, 권한, 데이터 변환은 높은 branch coverage를 목표로 합니다.
  • UI glue code나 설정 파일은 무조건적인 수치보다 위험도 기준으로 봅니다.
  • PR에서 커버리지가 갑자기 떨어지는 것을 막는 threshold는 유용합니다.
  • mutation testing을 보조로 쓰면 assertion 강도를 확인할 수 있습니다.

면접 답변 포인트

커버리지는 테스트가 실행한 범위를 보여주는 지표이지 테스트의 품질을 보장하지 않습니다. 수치 목표보다 위험도 높은 코드의 의미 있는 분기와 assertion을 확인하는 것이 중요합니다.

관련 질문

같은 카테고리/태그 기준