code coverage

MONA·2025년 3월 17일

나혼공

목록 보기
58/92

Code Coverage

소프트웨어 테스트에서 테스트코드가 실제 애플리케이션 코드를 얼마나 실행했는지를 측정하는 지표
테스트가 전체 코드 중 어느 정도를 검사했는지 확인하는 방법!

코드 커버리지의 중요성

  • 테스트 품질 측정: 코드의 어느 부분이 테스트되지 않았는지 확인할 수 있음
  • 버그 예방: 테스트되지 않은 부분을 찾아 추가 테스트 작성 가능
  • 코드 안정성 향상: 전체적인 코드 품질 및 신뢰도를 높일 수 있음

코드 커버리지 측정 기준

1. Line coverage (라인 커버리지)

  • 코드의 총 라인 수 대비 테스트된 라인 수 비율을 측정
  • ex) 총 100라인 중 80라인이 테스트되었다->80% 커버리지

2. Branch coverage (분기 커버리지)

  • if, switch 등 조건문에서 모든 분기가 실행되었는지를 측정
  • ex
    	```java
    if ( i > 0 ) {
    doSomething();
    } else {
    doSomethingElse();
    }
    - i>0 일 때와 아닐 경우가 모두 테스트되어야 100% 커버리지

3. Method coverage (함수 커버리지)

  • 메서드가 실행되었는지 여부를 측정

4. Class coverage (클래스 커버리지)

  • 클래스 내부 코드가 실행되었는지 확인

5. Condition coverage (결정 커버리지)

  • 조건문의 모든 가능한 선택지가 실행되었는지를 체크함

코드 커버리지 도구

코드 커버리지는 자동화 도구를 사용해 측정할 수 있음

언어코드 커버리지 도구
JavaJaCoCo, Cobertura
PythonCoverage.py
JavaScriptIstanbul(nyc), Jest
C/C++gcov, LCOV
C#Visual Studio Code Coverage, Coverlet

코드 커버리지 100%는 완벽한 테스트라고 볼 수 있을까?

코드 커버리지가 높다고 해서 완벽한 테스트라고는 볼 수 없다.

커버리지는 단순히 코드가 실행되었는지 확인하는 것으로, 올바른 결과를 검증하는 것과는 별개이다.
높은 커버리지는 코드의 안정성과 신뢰를 높이나, 모든 버그를 찾아낼 수는 없다.
모든 엣지 케이스를 고려해서 테스트하는 것이 중요하다.
자원의 한계가 있으나 모든 케이스틑 테스트 할 수도 없으니 상황에 따라 적절히 판단하여 실행하는 것이 중요한 것 같다.

profile
고민고민고민

0개의 댓글