if (A && B) { // 결정문
실행문; // 참 경로
}
// 거짓 경로
1. 구문(Statement) 커버리지
2. 결정(Decision/Branch) 커버리지
3. 조건(Condition) 커버리지
4. 조건/결정(Condition/Decision) 커버리지
5. 변경 조건/결정(MC/DC) 커버리지
6. 다중 조건(Multiple Condition) 커버리지
if (A || B) {
printf("True");
}
| 테스트 | A | B | 결과 |
|---|---|---|---|
| TC1 | T | T | T |
| TC2 | T | F | T |
| TC3 | F | T | T |
| TC4 | F | F | F |
소프트웨어의 내부 구조를 모르는 상태에서 기능 명세를 기반으로 수행하는 테스트 기법은?
블랙박스 테스트
다음 중 블랙박스 테스트 기법이 아닌 것은?
3번 (결정 커버리지는 화이트박스 테스트)
프로그램 내의 모든 명령문을 최소한 한 번 이상 수행하는 커버리지는?
구문(Statement) 커버리지
다음 코드에서 결정(분기) 커버리지 100%를 달성하기 위한 최소 테스트 케이스 개수는?
if (x > 0 && y < 10) {
z = 1;
}
2개
- TC1: 참 (예: x=5, y=5)
- TC2: 거짓 (예: x=-1, y=0)
다음 코드에서 조건 커버리지 100%를 달성했지만 결정 커버리지는 100%가 아닌 테스트 케이스 조합은?
if (A || B) {
printf("True");
}
3번
- A: T(2번), F(0번) → 조건 커버 안 됨
정답은 없음 (문제 오류)
올바른 답: (T, F), (F, T)
- 조건: A(T,F), B(F,T) 모두 만족
- 결정: 둘 다 True → 거짓 경로 미수행
각 조건이 독립적으로 전체 결과에 영향을 주는지 확인하는 커버리지는?
MC/DC (Modified Condition/Decision Coverage, 변경 조건/결정 커버리지)
다음 코드에서 다중 조건 커버리지 100%를 위한 테스트 케이스 개수는?
if (A && B && C) {
x = 1;
}
8개
3개 조건의 모든 조합: 2³ = 8
- (T,T,T), (T,T,F), (T,F,T), (T,F,F)
- (F,T,T), (F,T,F), (F,F,T), (F,F,F)
화이트박스 테스트 커버리지 중 가장 강력한(엄격한) 기준은?
다중 조건(Multiple Condition) 커버리지
강도 순서: 구문 < 결정 < 조건 < 조건/결정 < MC/DC < 다중 조건
입력 값의 범위를 유사한 특성을 갖는 그룹으로 나누어 각 그룹에서 대표값을 선정하는 블랙박스 테스트 기법은?
동등분할(Equivalence Partitioning) 기법
다음 코드의 결정 커버리지와 조건 커버리지를 모두 만족하는 최소 테스트 케이스는?
if (x < 5 || y > 10) {
z = x + y;
}
2개
- TC1: x=3, y=8 → (T, F) → 전체 True
- TC2: x=7, y=15 → (F, T) → 전체 True
또는
- TC1: x=3, y=15 → (T, T) → 전체 True
- TC2: x=7, y=8 → (F, F) → 전체 False
조건: x<5 (T,F), y>10 (T,F) 결정: 전체 결과 (T, F)