질문의 배경:
자동화 테스트 커버리지(test coverage)는 테스트 품질의 가장 중요한 지표 중 하나입니다. 커버리지 전략은 자동화 발전 초기부터 등장했으며, 이때 테스트 수가 급격히 증가하면서 수동으로 커버리지 없는 시나리오를 추적하는 것이 불가능해졌습니다. 이후 접근 방식은 직관적에서 엄격한 분석적 방법으로 진화하였고, 요구 사항 추적, 코드 커버리지 도구 및 테스트 피라미드 관리 기법이 포함되었습니다.
문제:
해결책:
주요 특징들:
코드의 높은 커버리지가 제품의 품질을 완전히 보장할 수 있나요?
아니요, 그렇지 않습니다. 높은 코드 커버리지 비율(예: 95%)은 종종 코드의 일부만이 테스트되었음을 의미하지만, 이는 비즈니스 논리나 사용 시나리오의 정확성을 보장하지 않습니다.
항상 100% 코드 커버리지를 추구해야 할까요?
아니요. 100% 커버리지를 목표로 하면 유지 관리 비용이 증가하고, 때때로 의미 없거나 도달할 수 없는 부분을 위해 테스트를 작성해야 할 수 있습니다. 위험과 이점을 기반으로 우선 순위를 정하는 것이 더 좋습니다.
신뢰할 수 있는 커버리지를 보장하기 위해 단위 테스트만 사용하는 것으로 충분할까요?
아니요. 단위 테스트는 통합 시나리오와 구성 요소 간의 상호 작용을 커버하지 않습니다. 테스트 피라미드에 따라 다양한 유형의 테스트를 조합해야 합니다.
팀은 각 pull request에 대해 90% 테스트 커버리를 강제하는 파이프라인을 구현했습니다. 결과적으로 "빈" 테스트가 등장하여 줄을 커버했지만 시나리오는 커버하지 않았습니다. 비즈니스 논리의 오류가 발견되지 않았습니다.
장점:
단점:
팀은 추적 행렬과 위험 기반 테스트를 활용하여 커버리지 전략을 수립했습니다: 가장 중요한 기능은 E2E로 커버되고, 덜 중요한 기능은 단위 테스트로 커버됩니다. 매월 시나리오별로 커버리지 감사를 수행합니다.
장점:
단점: