아 그렇구나 그러면 테스트 케이스 도출 방법이 너가 언급한게, MC/DC, 경계값 분석이 있었자나 또 대표적으로 많이 사용하는 것들이 뭐가 있어?
아주 좋은 질문이에요!
Requirement-Based Testing에서 테스트 케이스를 도출할 때 실무에서 많이 사용하는 대표적인 기법은 다음과 같이 정리할 수 있어요.
(MC/DC, 경계값 분석 외에도 널리 쓰이는 주요 기법들이 있어요)





이전 주제와는 다른 질문인데, 테스트 케이스 도출 방법에서 MC/DC 방법의 이름이 왜 Modified coverage인지, decision coverage인지 알려줘
1. 기본 개념
소프트웨어 테스트 커버리지에는 여러 단계가 있습니다 (DO-178C, ISO 26262 등에서 사용):
- Statement coverage: 모든 문장이 실행되었는지 확인.
- Branch/Decision coverage: 모든 분기(True/False)가 실행되었는지 확인.
- Condition coverage: 분기를 구성하는 개별 조건들이 True/False로 평가되는지 확인.
- Condition/Decision coverage: 각 조건과 각 분기 결과가 모두 커버되었는지 확인.
여기서 **MC/DC (Modified Condition/Decision Coverage)**가 가장 강력한 방법으로 도입되었습니다.
2. 왜 "Decision coverage"인가?
- “Decision”이란 프로그램에서 if, while, for 등의 분기 판단식 전체를 의미합니다.
- MC/DC에서는 단순히 각 조건(True/False)을 보장하는 것에 더해, 해당 조건이 최종 Decision 결과(True/False)에 ‘독립적으로 영향을 미침’을 보여야 합니다.
- 따라서 이 기법은 **“조건이 Decision에 끼치는 영향까지 고려한 커버리지”**라서 “Decision coverage”라는 말을 붙인 겁니다.
3. 왜 "Modified"인가?
- 원래의 Condition/Decision coverage는 각 조건이 True/False 한 번씩 나타나고, 각 Decision 결과가 True/False 한 번씩 나타나면 충분했습니다.
- 하지만 이 방식은 개별 조건이 최종 결과에 실제로 영향이 있는지를 보장하지 못합니다. (조건이 항상 무시되더라도 단순히 값만 바꿔치면 커버된 것처럼 보임)
- 그래서 이를 보완(Modify)한 것이 MC/DC입니다.
- 조건이 독립적으로 결과에 영향을 미치는 test pair를 반드시 포함시켜야 함.
- 이 “독립적 영향(independent effect)” 부분이 바로 Modified의 핵심.
4. 정리
- Decision coverage: 분기 결과(True/False)와 조건 값(True/False)을 다 확인하는 기준을 갖기 때문.
- Modified: 단순히 값만 바꾸는 것이 아니라, 각 조건이 최종 Decision에 실제로 영향을 미친다는 것을 증명하도록 보완(수정)했기 때문.
👉 그래서 MC/DC = Modified Condition/Decision Coverage라는 이름이 된 것입니다.
너가 설명해준 부분에서 '분기'와 '개별 조건'의 개념의 차이가 명확하게 이해가 되지 않아 예시를 들어서 설명해줘
👍 바로 **분기(Decision)**와 **개별 조건(Condition)**의 차이를 예시 코드로 보여드릴게요.

2. 용어 구분
- Decision (분기)
→ A && B 전체 식이 하나의 Decision
→ 결과는 True 또는 False 두 가지 - Condition (개별 조건)
→ Decision 안에 들어 있는 원자 조건
→ 여기서는 A, B 두 개의 Condition
3. Coverage별 차이
(1) Statement coverage (문장 커버리지)
- if 문 안의 실행문이 한 번이라도 실행되면 됨.
- 예: A = true, B = true (조건식 True → 실행문 실행) → 커버리지 달성.
(2) Decision coverage (분기 커버리지, Branch coverage)
- Decision 전체 결과가 True/False 모두 한 번 이상 나오면 됨.
- 필요 테스트:
- A = true, B = true → 전체 식 True
- A = false, B = true → 전체 식 False
(3) Condition coverage (조건 커버리지)
- 각 개별 조건(Condition)이 True/False 각각 한 번 이상 나타나야 함.
- 필요 테스트:
- A = true, B = true → A True, B True
- A = false, B = true → A False
- A = true, B = false → B False
(4) MC/DC (Modified Condition/Decision Coverage)
- 각 조건이 최종 Decision 결과에 독립적으로 영향을 줬음을 보여야 함.
- 즉, A만 바꿨을 때 결과가 달라지고, B만 바꿨을 때 결과가 달라지는 test pair가 필요.
- 필요 테스트:
- A = true, B = true (기준 케이스)
- A = false, B = true (A만 바꿨더니 결과 True→False 됨 → A가 독립적으로 영향)
- A = true, B = false (B만 바꿨더니 결과 True→False 됨 → B가 독립적으로 영향)
👉 이렇게 하면 **분기(Decision)**는 A && B 전체,
**조건(Condition)**은 A, B 각각이라는 차이가 명확해집니다.
4. 그림으로 요약
- Decision = “if문이 실행되느냐, 아니냐” (전체 결과)
- Condition = “결과를 결정하는 작은 단위 요소
'기능안전_기본이론' 카테고리의 다른 글
| 안전 메커니즘의 기원 (두 가지로 분류됨) (0) | 2025.07.23 |
|---|---|
| Fail safe와 FSR/ 안전 메커니즘 관계 (0) | 2025.07.23 |
| 결함과 고장 (0) | 2025.07.17 |
| EEC와 PMHF (0) | 2025.07.17 |
| 재사용과 기존에 만들어졌던 설계도(feat. 안전 메커니즘) (0) | 2025.07.09 |