MC/DC(Modified Condition/Decision Coverage

agnusdei·2025년 6월 22일

Software Engineering

목록 보기
35/59

MC/DC(Modified Condition/Decision Coverage)

1. 문제

임베디드 시스템(Embedded System) 소프트웨어 시험에서 중요한 코드 커버리지 기법인 MC/DC(Modified Condition/Decision Coverage)에 대해 설명하시오.

2. 답변

2.1 MC/DC의 개념

MC/DC(Modified Condition/Decision Coverage) 는 소프트웨어 시험에서 사용되는 구조적 테스트 커버리지 기법으로, 각 조건이 독립적으로 최종 결정(decision)의 결과에 영향을 미치는지 검증하는 기술입니다. 이는 DO-178B/C, IEC 61508과 같은 안전 필수(safety-critical) 시스템의 국제 표준에서 요구하는 고수준 테스트 커버리지입니다.

2.2 MC/DC의 목적 및 배경

목적

  • 복잡한 조건문에서 각 조건(condition)의 독립적 영향 검증
  • 논리적 오류의 효과적 탐지
  • 안전 중요 시스템에서의 소프트웨어 신뢰성 향상

배경

  • 1992년 RTCA/DO-178B 항공 전자 소프트웨어 안전 표준에서 처음 공식 도입
  • 기존 커버리지 기준(명령문, 분기, 조건)의 한계를 보완하기 위해 개발
  • 테스트 케이스 수를 효율적으로 관리하면서 높은 수준의 검증 제공

2.3 MC/DC의 원리

기본 원리

MC/DC는 다음의 세 가지 커버리지 요구사항을 포함합니다:

  1. 문장 커버리지(Statement Coverage): 모든 실행 가능한 코드가 최소한 한 번 실행됨
  2. 조건 커버리지(Condition Coverage): 각 조건식이 참과 거짓 모두 평가됨
  3. 조건/결정 독립성(Condition/Decision Independence): 각 조건이 다른 조건과 독립적으로 결과에 영향을 미침

MC/DC 충족 조건

조건식 내의 각 조건 C에 대해:
1. C가 참인 테스트 케이스와 거짓인 테스트 케이스가 존재해야 함
2. C의 값만 변경했을 때 전체 조건식의 결과가 바뀌어야 함 (독립적 영향)
3. 다른 모든 조건은 동일한 값을 유지해야 함

2.4 MC/DC 적용 예시

예시 1: 단순 조건식

if (A && B) { ... }

MC/DC를 충족하기 위한 테스트 케이스:

테스트ABA && B목적
1TTT기본 참 케이스
2FTFA의 독립적 영향 검증
3TFFB의 독립적 영향 검증

예시 2: 복합 조건식

if ((A && B) || C) { ... }

MC/DC를 충족하기 위한 테스트 케이스:

테스트ABC(A && B) || C목적
1TTFT기본 (A && B) 참 케이스
2FTFFA의 독립적 영향 검증
3TFFFB의 독립적 영향 검증
4FFTTC의 독립적 영향 검증
5FFFF기본 거짓 케이스

2.5 기존 커버리지 기법과의 비교

커버리지 기법설명MC/DC 대비 특징
문장 커버리지(Statement Coverage)모든 코드 라인이 최소 한번 실행조건식 내부 로직 검증 불가
분기 커버리지(Branch Coverage)모든 분기(if, switch 등)의 참/거짓 경로 실행복합 조건식 내 개별 조건 검증 불가
조건 커버리지(Condition Coverage)모든 Boolean 조건식의 참/거짓 결과 검증조건 간 상호작용 및 독립성 검증 불가
조건/결정 커버리지(Condition/Decision)모든 조건 및 결정의 참/거짓 검증독립적 영향 검증 부족
다중 조건 커버리지(Multiple Condition)모든 조건 조합 검증테스트 케이스 수 기하급수적 증가 (2^n)
MC/DC각 조건의 독립적 영향 검증효율적 테스트 수(n+1)로 높은 결함 탐지

2.6 MC/DC의 국제 표준 요구사항

표준분야MC/DC 요구사항
DO-178C항공 전자Level A(치명적) 소프트웨어에 필수
IEC 61508산업 안전SIL 3, 4에 권장
ISO 26262자동차ASIL D에 권장
IEC 62304의료기기Class C 소프트웨어에 고려

2.7 MC/DC 적용의 장단점

장점

  1. 조건식 내 논리적 오류 효과적 탐지
  2. 다중 조건 커버리지보다 효율적인 테스트 케이스 수
  3. 분기 및 조건 커버리지보다 높은 결함 검출력
  4. 안전 중요 시스템의 국제 표준 충족

단점

  1. 구현 및 이해의 복잡성
  2. 자동화 도구 의존성 높음
  3. 대규모 조건식에서 테스트 설계의 어려움
  4. 일반 응용 프로그램에서는 비용 대비 효과가 낮을 수 있음

2.8 MC/DC 테스트 자동화 도구

도구기능지원 언어
LDRA TestbedMC/DC 분석 및 테스트 생성C, C++, Ada, Java 등
VectorCAST단위 테스트 및 MC/DC 분석C, C++, Ada
Parasoft C/C++test테스트 자동화 및 커버리지 분석C, C++
TESTWELL CTC++테스트 커버리지 분석기C, C++
GcovGCOV오픈소스 커버리지 도구C, C++

3. 요약 (어린이 버전)

MC/DC는 컴퓨터 프로그램이 제대로 작동하는지 확인하는 특별한 방법이에요. 예를 들어, "날씨가 좋고 시간이 있으면 놀이터에 가자"라는 규칙이 있다면:

  1. 날씨가 좋고, 시간도 있을 때 - 놀이터에 가나요? (네!)
  2. 날씨가 나쁘고, 시간은 있을 때 - 놀이터에 가나요? (아니요!)
  3. 날씨는 좋지만, 시간이 없을 때 - 놀이터에 가나요? (아니요!)

이렇게 각각의 조건(날씨, 시간)이 결정(놀이터에 갈지 말지)에 어떻게 영향을 주는지 꼼꼼히 확인하는 방법이에요. 비행기나 자동차, 의료 기기처럼 안전이 중요한 시스템에서는 이런 꼼꼼한 검사가 매우 중요해요!

0개의 댓글