- MC/DC( modified condition/decision coverage ) : 조건 커버리지(Condition Coverage)와 분기 커버리지(Decision Coverage) 를 보완해서 만든 커버리지입니다. MC/DC란 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 것으로 결정 커버리지, 조건/결정 커버리지 보다 강력합니다.다른 상태(condition)들의 변동이 없고 자신의 상태가 변경 되었을 때 결과 값에 영향을 미치는 경우 해당 상태는 MC/DC를 만족한다 할 수 있습니다. - 일반적으로 개별조건식 수 + 1개의 테스트 케이스가 필요합니다. 
 
if ( a && b && c) {
;
}else{
;
}
/* 아래 MC/DC 결정 테이블에서 MC/DC를 만족하는 1,2,3,5 케이스를 
모두 만족하면 MC/DC 커버리지가 100%가 됩니다. */
| 테스트 케이스 | a | b | c | 결과 | 
| 1 | True | True | True | True | 
| 2 | True | True | False | False | 
| 3 | True | False | True | False | 
| 4 | True | False | False | False | 
| 5 | False | True | True | False | 
| 6 | False | True | False | False | 
| 7 | False | False | True | False | 
| 8 | False | False | False | False | 
a 조건을 기준으로 MC/DC를 만족하는 경우는 (1, 5) 테스트 케이스
b 조건을 기준으로 MC/DC를 만족하는 경우는 (1, 3) 테스트 케이스
c 조건을 기준으로 MC/DC를 만족하는 경우는 (1, 2) 테스트 케이스
- 구문 커버리지(statement coverage) : 소스 코드 라인 수 기준으로 수행된(Covered) 라인 수 비율입니다. - (수행된 라인 수 / 전체 라인 수) * 100 (%)
 
int func(int arg){
int a = 0;
int b = 0;
a = a+1;
b = b+1;
return a+b;
}
/* 위 5개의 구문에서 5개 구문 모두 수행이 되면 5 / 5 * 100(%) 로 
구문 커버리지가 100%가 됩니다. */
- 분기 커버리지(Decision Coverage) : 각 분기문의 결과가 True 또는 False가 되는 조건이 모두 테스트되는 정도를 측정하는 커버리지로 전체 분기 수 기준으로 수행된(Covered) 분기 수 비율입니다.( 2019년 2월 14일 추가됨) - (수행된 분기 수 / 전체 분기 수) * 100 (%)
- 대상 분기문 : if, switch, for, while, do-while 그 외 3항 연산자 수식과 boolean 연산자 수식은 옵션입니다.
 
if( a > 0 ){
;
}
if( b >0) {
;
}
/* 위 2개의 분기문(if) 에서 1번 if 의 True, False 와 
2번 분기의 True, False 가 모두 수행되면 
4 / 4 * 100(%) = 100 % 가 됩니다. */
- 조건 커버리지(Condition Coverage) :분기문 안의 각 조건 수 기준으로 수행된(Covered) 조건 수 비율입니다.- (수행된 조건 수 / 전체 조건 수) * 100 (%)
 
if ( a & b){
;
}
/* 위 a 와 b 2개의 조건에서 a 가 True, False 와 b가 True, False 를
모두 만족하면 4 / 4 * 100(%) = 100% 가 됩니다. */
- 함수 호출 커버리지(Function Call Coverage) :전체 함수 호출 수 기준으로 수행된(Covered) 함수 호출 수 비율입니다. - (수행된 함수 호출 수 / 전체 함수 호출 수) * 100 (%)
 
int func(void){
funcCall1();
funcCall2();
funcCall3();
funcCall4();
funcCall5();
}
/* 위 5 개의 함수 호출 부분이 모두 호출되면 5 / 5 * 100(%) = 100% 가 됩니다. */
- 함수 커버리지(Function Coverage) : 프로젝트 내 모든 함수를 기준으로 수행된(Covered) 함수 비율입니다. 일반적으로 함수 커버리지는 시스템 레벨의 테스트에서 측정해야 의미가 있습니다. - (수행된 함수 수 / 전체 함수 수) * 100 (%)
 
void func1(void){
;
}
void func2(void){
;
}
/* 위 2개의 함수가 모두 수행되면 2 / 2 * 100(%) = 100% 가 됩니다. */아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.