티스토리 뷰

TDD 공부하다가 정리한 내용을 써보려고합니다.

 

코드 커버리지(Code Coverage)란


테스트가 소프웨어를 충분히 검증할 수 있는지 나타내는 지표입니다.

 

즉, 테스트 케이스가 소스코드를 얼마나 커버하고 있는지를 나타냅니다.

백분율로 나타내며, 100%라고 해서 완벽한 소프트웨어라고 검증되는 것은 아닙니다.

보통 80%를 목표로 한다고 합니다.

실제 소스 코드를 알고 테스트하는 화이트박스 테스트를 통해 측정됩니다.

 

 

장점


코드 커버리지를 측정하면 다음과 같은 장점이 있습니다.

 

  • 리팩토링 시에 기존 테스트가 얼마나 새로운 코드를 커버하는지 알 수 있어, 테스트 코드 관리가 편해집니다.
  • 불필요한 코드가 사라집니다. 높은 커버리지를 위해서는 필요없는 코드를 정리해야하기 때문입니다.

 

측정 기준


함수(Function) 커버리지

전체 함수 중 몇개의 함수가 호출되었는지 측정합니다.

함수 커버리지 = (실행된 함수의 수 / 전체 함수의 수) * 100

 

구문(Statement, Line) 커버리지

전체 구문 중 몇줄의 구문이 실행되었는지 측정합니다.

구문 커버리지=(실행된 구문의 수/전체 구문의 수)∗100

 

결정(Decision, Branches) 커버리지

조건문의 분기가 모두 실행되었는지를 기준으로 합니다. 전체 조건문이 True, False 각각 한번씩 실행되면 충족된다.

여러 조건문을 논리 연산자로 연결했을 때 각각의 조건의 결과가 아니라 최종적으로 도출되는 결과를 기준으로 합니다.
ex) 조건문이 x > 0 && y < 0 일 때 전체 조건문이 True, False인 경우만 확인한다.

 

조건(Condition) 커버리지

결정 커버리지와 다르게 개별 조건식을 기준으로 합니다. 개별 조건문이 각 한번씩 True, False가 되도록 합니다.

전체 조건문이 x > 0 && y < 0 라고 하면 x > 0 이 True, False 일때, y < 0 이 True, False일 때를 각각 확인합니다.

 

조건/결정 커버리지

전체 조건문과 개별 조건문의 True, False를 모두 확인하는 것을 말합니다.

 

 

커버리지 툴


코드 커버리지 툴을 이용하면 코드 커버리지를 측정할 수 있습니다.

각 언어나 프레임워크별로 코드 커버리지 툴이 있으니 찾아 사용하면 됩니다.

 

Swift에서는 Xcode에서 기본적으로 제공하는 Code Coverage 기능 활성화를 통해 측정할 수 있습니다.

혹은 Codecov라는 솔루션을 사용할 수도 있습니다.

Codecov는 Xcode기반으로 로컬 측정도 가능하고, 깃허브 Action을 통해 커밋이나 PR할때 서포트를 받을 수도 있습니다.

 

 

 

감사합니다.

 

 

Ref.

https://lazyowl.tistory.com/entry/Xcode-Code-Coverage-정복하기 (Xcode-Code-Coverage-정복하기)

https://www.atlassian.com/continuous-delivery/software-testing/code-coverage (What is code coverage?)

https://err0rcode7.github.io/backend/2021/05/11/테스트커버리지.html (테스트 커버리지(Test Coverage))

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함