소프트웨어의 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표 중 하나
테스트를 진행하였을 때 ‘코드 자체가 얼마나 실행되었느냐’는 것이고, 이는 수치를 통해 확인할 수 있다.
블랙 박스 테스트 (Black-box test)
화이트 박스 테스트(White-box test)
라인(Line) 커버리지라고 부르기도 한다.
코드 한 줄이 한번 이상 실행된다면 충족된다.
예시)
def foo(x: int){
print("start line") # 1번
if (x > 0){ # 2번
print("middle line") # 3번
}
print("last line") # 4번
}
x=-1
를 테스트 데이터로 사용할 경우,모든 조건식의 내부 조건이 true/false을 가지게 되면 충족된다.
내부 조건이란, 조건식 내부의 각각 조건을 의미한다.
def foo(x: int, y:int){
print("start line") # 1번
if (x > 0 and y < 0){ # 2번
print("middle line") # 3번
}
print("last line") # 4번
}
x, y = (1,1), (-1,-1)
브랜치(Branch) 커버리지라고 부르기도 합니다.
def foo(x: int, y:int){
print("start line") # 1번
if (x > 0 and y < 0){ # 2번
print("middle line") # 3번
}
print("last line") # 4번
}
모든 조건식이 true/false 를 가지게 되면 충족된다.
if 조건에 대해 모두 true/false를 가질 수 있는 테스트 케이스
x, y = (1, -1), (-1, 1)
구문 커버리지가 가장 대표적으로 사용되고 있다.
그 이유는, 조건 커버리지나 브랜치 커버리지의 경우 실행에 대한 테스트 보다는 로직의 시나리오에 대한 테스트에 더 가깝다고 볼 수 있다.
그러나, 구문 커버리지를 만족한다면, 모든 코드를 테스트 코드가 커버했다고 볼 수 있고,
이 이유로 구문 커버리지를 더 많이 사용한다.
설치 방법
pip install pytest-cov
실행
실행 옵션
--cov=PATH
--cov-report=type
pytest에서 사용하는 방법
pytest --create-db --cov-report term --cov=.
Fxxx
형태의 pyflakes 실행 결과 )Exxx
, Wxxx
형태의 pycodestyle 실행 결과)Fxxx
형태의 pyflakes 실행 결과 )---------- coverage: platform darwin, python 3.9.13-final-0 ----------
Name Stmts Miss Cover
---------------------------------------------------------------------------------------------------------------------
...
---------------------------------------------------------------------------------------------------------------------
TOTAL 49487 2655 95%