조건, 분기 이름부터 확 구별이 와닿지 않는다.
그래서 나올 때마다 계속 헷갈리는데, 한 번에 정리해보고 익혀보자!!
| 분기 커버리지 | if, switch처럼 분기문이 참/거짓 모두 실행되는가? | 모든 분기를 한 번씩 실행 |
| 조건 커버리지 | 조건식 안에 있는 모든 조건이 참/거짓 되는가? | 모든 조건이 true/false 한번씩 |
| 조건/분기 커버리지 | 위 두 개를 합친 것 | 분기도, 조건도 다 체크 |
검색해보면 나오는 뻔한 정의이다.
근데 정의만 보면 무슨 말인가 봐도 이해가 안된다.
예시로 쉽게 이해해서 다시 찾아보는 일이 없게 만들어보자!!
if (A || B) {
// 실행문
}
위의 코드는 1개의 분기문과 2개의 조건이 있다.
분기문이 if문이라 생각하면 되고, 조건이 if 분기문 안에 있는 조건들을 의미한다.
(위의 예제에서는 A와 B가 조건이 된다.)
- 1개의 분기문 (if)
- 2개의 조건 (A, B)
1. 분기 커버리지 (Branch Coverage)
- if (A || B)가 true 되는 경우
- if (A || B)가 false 되는 경우
분기 커버리지라는 것은 if문 통째로 T와 F가 모두 실행되었는지를 확인하는 것이다.
| A | B | 분기문(IF문)의 결과 |
| F | F | ❌ (조건식 false) |
| T | F | ✅ (조건식 true) |
→ IF문이 T와 F인 경우 둘 다 실행됐기 때문에 분기 커버리지 100%가 된다.
2. 조건 커버리지 (Condition Coverage)
- A가 true, false 되는 케이스 실행
- B도 true, false 되는 케이스 실행
조건 커버리지는 분기문 안에 있는 조건 하나하나의 값이 T와 F 모두 실행 되어봤는지를 확인한다
| A | B |
| T | F |
| F | T |
위의 경우를 보면 A라는 조건도 T, F를 모두 확인했고, B라는 조건도 F와 T를 모두 점검했다.
따라서 이 경우에는 조건 커버리지 100%가 된다.
cf. 하지만 조건 커버리지가 100%라고 해서 분기 커버리지도 100%가 되는 것은 아니다.
| A | B | if 분기문의 결과 |
| T | F | T |
| F | T | T |
바로 위의 표를 보면, 각 조건 A,B는 T/F를 모두 만족하지만
if 분기문은 T만 결과가 나오는 것을 볼 수 있다. 따라서 분기 커버리지는 100%가 아니게 된다.
이렇게 조건 커버리지와 분기 커버리즈를 모두 합쳐서 확인하는 검증 기준이 조건/분기 커버리지이다.
3. 🔹 조건/분기 커버리지 (Condition/Decision Coverage)
- if문이 true/false 모두 됐는지 (분기 커버리지)
- 내부 조건(A, B)이 true/false 모두 나왔는지 (조건 커버리지)
→ 둘 다 만족해야 조건/분기 커버리지 100%
한 번에 정리하자면 아래 예제를 가지고 이렇게 표현할 수 있겠다.
if (A || B)
조건 커버리지는 → A, B 각각 true와 false를 모두 확인했는지 점검!
분기 커버리지는 → if문이 true와 false가 되는 경우를 모두 확인하고 있는지 점검!
조건/분기 커버리지는 → 둘 다 만족하는지!
'공부기록 > CS' 카테고리의 다른 글
| 02. 개략적인 규모 추정 (0) | 2025.10.06 |
|---|---|
| 01. 사용자 수에 따른 규모 확장성 (0) | 2025.10.05 |
| [정처기 실기 대비] 라우팅 프로토콜 - RIP, OSPF (6) | 2025.07.13 |
| [정처기 실기 대비] 네트워크 보안 관련 프로토콜, IPsec, SSL, S-HTTP (1) | 2025.07.12 |
| [OS] 프로세스 스케줄링 알고리즘 (0) | 2025.05.26 |