테스트 종류와 기법
큰 틀로는 동적 테스팅과 정적 테스팅이 있는데 우리가 확인하고 학습 할 내용은 동적 테스팅의 구조기반 테스트이다.
구조기반 테스트는 화이트박스 기반 테스팅을 말하는데 코드의 구조를 보고 테스트를 설계하는것을 말한다.
구조기반 테스트의 종류
-
구문기반 커버리지
-
결정 커버리지
-
조건 커버리지
-
mC/Dc
-
경로커버리지
구조기반 테스트를 간단하게 다이어그램으로 정의 해보면
이런 형태의 다이어그램으로 산출 할 수 있다.
하나씩 간단하게 살펴본다.
구문 커버리지(Statement)
구문 커버리지란 시험 대상의 전체 구문 중에 테스트에 의해 실행된 구문을 측정하는 것이다.
구문 커버리지(%) = (수행된 구문의 수 / 전체 구문의 수) x 100% 로 정의 할 수 있다.
JACOCO를 사용하여 코드 커버리지를 확인하여 전체 프로젝트의 테스트 현황을 알아볼 수 있다.
결정 커버리지(Decision Coverage)
-
Decision Coverage는 각 조건문이 True or False가 되는 조건이 모두 테스트되는 정도를 측정하는 척도이다.
-
결정 포인트(Decision Points)내의 전체 조건식이 true 또는 false의 모든 값을 갖고 모든 분기로 흐르면 달성된다.
-
결정커버리지는 구문커버리지 달성을 보장한다.
-
테스트 깊이가 깊을 수록 제품의 커버리지는 높아지나 테스트 케이스 수가 기하 급수적으로 많아져 비용, 시간, 리소스 등이 많이 소요된다.
글만 봐서는 잘 이해가 안될 수 있으니 표를 보고 결정 커버리지가 정확히 어떤건지 살펴보자.
그림을 보면 If문 안에 조건이 2가지가 있는데 편하게 각각 A 와 B 조건이라고 칭한다. 결정이란 A와 B의 각각의 상태를 조합해서 나오는것이다. ex.)조건 A와 B가 각각 True, False라면 결정은 False가 되는것이다.
이 때 특정 범위의 테스트 케이스를 입력값으로 집어넣어서 결정문의 상태를 한번은 True가 되도록, 다른 한번은 False가 되도록 한다. 이러한 TC의 집합을 결정커버리지 라고 한다.
조건 커버리지(Condition Coverage)
Condition Coverage는 결정포인트 내에 있는 개개의 개별조건식이 True 와 False의 모든 값을 갖게 되는 경우를 말한다.
조건/결정 커버리지(Condition/Decision Coverage)
-
위에 조건 커버리지, 결정 커버리지를 잘 이해 했다면 굉장히 쉽다. 조건 커버리지를 만족함과 동시에 결정커버리지도 만족할 수 있는 TC Coverage를 말한다.
변경 조건/결정 커버리지(MC/DC)