MC/DC 커버리지란?
각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써, 조건 커버리지와 분기 커버리지를 보완해서 만든 테스트 커버리지 접근 방법이다.
다른 상태들의 변동이 없고 자신의 상태가 변경되었을 때 결과 값에 영향을 미치는 경우 해당 상태는 MC/DC를 만족한다고 할 수 있다.
MC/DC의 특징
결과에 독립적
Condition / Decision 커버리지를 만족하고 결정에서 각 조건들은 결과에 독립적이어야 한다.
N+1 테스트 케이스
일반적으로 N개 입력을 가진 결정에서 N+1 개의 테스트 케이스 필요하다.
모든 테스트 케이스 작성하는 것이 아닌 N+1의 보다 적은 테스트 케이스 작성을 통해 효율적으로 테스트를 진행할 수 있다.
MC/DC 결정 예시
if(A && (B || C)) {
...
}
조건식 테이블
테스트케이스 | A | B | C | 판정 |
---|---|---|---|---|
T1 | true | true | true | true |
T2 | true | true | false | true |
T3 | true | false | true | true |
T4 | true | false | false | true |
T5 | false | true | true | false |
T6 | false | true | false | false |
T7 | false | false | true | false |
T8 | false | false | false | false |
MC/DC 테스트 케이스
조건식 테이블을 통해 다른 상태들의 변동이 없고 자신의 상태가 변경되었을 때 결과 값에 영향을 미치는 경우를 찾는다.
T1, T5
: B,C는 모두 true이고 A가 true에서 false로 바뀌며 판정이 바뀐다.T2, T6
: B는 true, C는 false이고 A가 true에서 false로 바뀌며 판정이 바뀐다.T3, T7
: B는 false, C는 true이고 A가 true에서 false로 바뀌며 판정이 바뀐다.T2, T4
: A는 true, C는 false이고 B가 true에서 false로 바뀌며 판정이 바뀐다.T3, T4
: A는 true, B는 false이고 C가 true에서 false로 바뀌며 판정이 바뀐다.
MC/DC 테스트 케이스 집합
- A:
T1, T5
,T2, T6
,T3, T7
- B:
T2, T4
- C:
T3, T4
위의 테스트 케이스 집합에서 MC/DC 커버리지 100프로를 만족시키려면 B의 T2, T4
와 C의 T3, T4
케이스가 반드시 필요하다.
그리고 A 중 하나의 케이스가 필요한데 T2, T6
를 선택한다면 최소 개수(3 +1)의 테스트 케이스를 통해 MC/DC 커버리지 100프로를 만족시킬 수 있다.
'개발' 카테고리의 다른 글
레디스를 메시지 브로커로 사용하기 위한 정리 (1) | 2024.12.03 |
---|---|
테스트 객체 용어 정리 (0) | 2024.12.01 |
네임드 락을 활용한 동시성 제어 (2) | 2024.09.08 |
Pinpoint 도입 이모저모 (0) | 2024.08.22 |
jOOQ 사용기 (1) | 2024.07.23 |