X

MC/DC (Modified Condition / Decision Coverage)

I. MC/DC의 개요

가. MC/DC (Modified Condition / Decision Coverage)의 개념

  • 개별 조건식이 다른 조건식의 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주는 테스트케이스 도출 구조적 테스트기법
  • 개별 조건식이 전체 조건식의 결과에 영향을 주는 조건 조합을 찾아 커버리지를 테스트하는 방법
  • 커버리지: 소프트웨어 테스트 시 테스트가 충분한지 나타내는 지표

나. MC/DC의 특징

결과에 독립적 Condition / Decision 커버리지를 만족하고 결정에서 각 조건들은 결과에 독립적이어야 함
N + 1
테스트 케이스
일반적으로 N개 입력을 가진 결정에서 N+1개의 테스트 케이스 필요

다. 테스트 커버리지 간 포함관계 개념도

 

II. MC/DC 결정테이블

가. MC/DC 결정 테이블 소스 구문

흐름도 분기문 소스
if (A && B) { // A, B는 개별 조건 식
C = e + f; // A && B 는 전체 조건식
}else{
C = e – f;
}

나. MC/DC 조건식 테이블

개별조건식 전체조건식 MC/DC
TC
설명
A B A&&B
T T T Y – A, B 중 일부 변경 시 전체조건식 영향
T F F Y – B가 T로 변경 시 전체조건식에 영향
F T F Y – A가 T로 변경 시 전체조건식에 영향
F F F N – A, B 중 일부 변경 시 영향없음, TC 제외
  • 전체 조합을 테스트하는 것은 현실적으로 불가능하며, 가능한 의미 있게 조합 수를 줄여 테스트하는 것이 MC/DC 커버리지 핵심개념

III. MC/DC 커버리지를 활용하는 최근 국제 표준 동향

도리:

View Comments (9)

  • N + 1
    테스트 케이스 일반적으로 N개 입력을 가진 결정에서 N+1개의 테스트 케이스 필요

    에 대해서 설명해 주실수 있으실까요?

    • MC/DC는 개별 조건식이 다른 조건식의 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주는 TC를 도출하는 기법이므로, 개별 조건식(각 입력값)만 변경하여 전체 조건식의 결과가 바뀌는 TC 집합을 구하면 됩니다. 예를 들어, A && (B || C)의 경우 아래의 표와 설명을 참고해주세요~

      [조건식 A && (B || C) 결과 표]

      No A B C Result A B C
      1 T T T T 5
      2 T T F T 6 4
      3 T F T T 7 4
      4 T F F F 2 3
      5 F T T F 1
      6 F T F F 2
      7 F F T F 3
      8 F F F F

      위 표에서 우측 A, B, C 항목의 숫자는 해당 입력값 변경 시 전체 조건식이 동일한 TC 번호입니다. 예를 들어, 1번 TC의 전체 조건식은 TTT 이며, 입력값 A가 변경되면 FTT이므로 5번 TC와 동일하다는 의미이며, 변경된 입력값(A) 외 동일한 입력값(B, C)의 집합으로 나타낼 수 있습니다.

      이때, 개별 조건식(A, B, C) 변경에 따라 전체 조건식의 결과에 독립적으로 영향을 주는 TC 집합을 구해보면,
      - A의 경우, {1,5} {2,6} {3,7}
      - B의 경우, {2,4}
      - C의 경우, {3,4}

      따라서 개별 조건식 별 영향을 주는 TC 집합을 묶어보면, MC/DC 요건을 만족하면서 최소인 TC 집합은 {2,3,4,6} 또는 {2,3,4,7} 집합으로, 필요한 TC 개수는 4개(N+1)로 MC/DC 테스트가 가능합니다. {1,2,3,4,5} 집합도 MC/DC 요건을 충족하지만 TC 개수가 5개이므로 최소(효율적) 라고 할 수는 없습니다.

      이해 하시는데 도움이 되었으면 좋겠습니다.^^

  • 안녕하세요, 좋은 설명 감사드립니다.
    TC집합에 대해서 의문점이 들어 질문드립니다.

    1. MC/DC 요건을 만족하며 최소인 TC집합에 {2,3,4,7}을 말씀해주셨는데, 이럴 경우 A의 영향을 받는 {1,5} case를 만족하지 못하는게 아닌가요?
    2. TC집합 조합에 {1,4,6,7}이 불가능한 이유를 알고싶습니다.

    감사합니다.

    • 1. MC/DC 요건을 만족하며 최소인 TC집합에 {2,3,4,7}을 말씀해주셨는데, 이럴 경우 A의 영향을 받는 {1,5} case를 만족하지 못하는게 아닌가요?
      => MC/DC에서 개별 조건식의 영향을 받는 case는 A, B, C 개별 조건식 별로 하나의 case씩만 만족하면 되기 때문에, TC집합 {2,3,4,7} 중 A의 영향을 받는 case는 {3,7} case가 있으므로 {1,5} case를 만족하지 않아도 무방합니다.

      2. TC집합 조합에 {1,4,6,7}이 불가능한 이유를 알고싶습니다.
      => TC집합 중 {1,4,6,7}은 B의 영향을 받는 {2,4} case와 C의 영향을 받는 {3,4} case를 만족하지 못하기 때문(1,4,6,7 중 2와 3이 없음)에 MC/DC 테스트가 불가능합니다. 위 댓글의 사례에서 TC집합을 구하기 위해서는 B의 영향을 받는 {2,4} case와 C의 영향을 받는 {3,4} case는 하나씩 밖에 없으므로 무조건 포함되어야 하고, A의 영향을 받는 {1,5}, {2,6}, {3,7} case 중에 하나 이상의 case가 포함되면 됩니다. 따라서 TC집합은 {2,3,4} + {1,5} or {2,6} or {3,7}의 합집합이 됩니다.

  • 이보다 설명을 더 잘할 수 없을 것 같네요. 엄청 고민했었는데 한방에 해결되었네요. 감사합니다

  • 와 글과 댓글로 너무 설명을 잘해주셔서 한참 궁금했던 내용인데 이해되었습니다. 최고입니다. 감사합니다!