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. 날씨는 좋지만, 시간이 없을 때 - 놀이터에 가나요? (아니요!)

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

profile
DevSecOps Pentest🚩

0개의 댓글