소프트웨어 테스트

화이트박스 vs 블랙박스 테스트

블랙박스 테스트

화이트박스 테스트

화이트박스 커버리지 구분

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

예상 문제

문제 1

소프트웨어의 내부 구조를 모르는 상태에서 기능 명세를 기반으로 수행하는 테스트 기법은?

정답

블랙박스 테스트

문제 2

다음 중 블랙박스 테스트 기법이 아닌 것은?

  1. 동등분할
  2. 경계값 분석
  3. 결정 커버리지
  4. 원인-결과 그래프
정답

3번 (결정 커버리지는 화이트박스 테스트)

문제 3

프로그램 내의 모든 명령문을 최소한 한 번 이상 수행하는 커버리지는?

정답

구문(Statement) 커버리지

문제 4

다음 코드에서 결정(분기) 커버리지 100%를 달성하기 위한 최소 테스트 케이스 개수는?

if (x > 0 && y < 10) {
    z = 1;
}
정답

2개

  • TC1: 참 (예: x=5, y=5)
  • TC2: 거짓 (예: x=-1, y=0)

문제 5

다음 코드에서 조건 커버리지 100%를 달성했지만 결정 커버리지는 100%가 아닌 테스트 케이스 조합은?

if (A || B) {
    printf("True");
}
  1. (T, T), (F, F)
  2. (T, F), (F, T)
  3. (T, T), (T, F)
  4. (F, F), (T, T)
정답

3번

  • A: T(2번), F(0번) → 조건 커버 안 됨

정답은 없음 (문제 오류)

올바른 답: (T, F), (F, T)

  • 조건: A(T,F), B(F,T) 모두 만족
  • 결정: 둘 다 True → 거짓 경로 미수행

문제 6

각 조건이 독립적으로 전체 결과에 영향을 주는지 확인하는 커버리지는?

정답

MC/DC (Modified Condition/Decision Coverage, 변경 조건/결정 커버리지)

문제 7

다음 코드에서 다중 조건 커버리지 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)

문제 8

화이트박스 테스트 커버리지 중 가장 강력한(엄격한) 기준은?

정답

다중 조건(Multiple Condition) 커버리지

강도 순서: 구문 < 결정 < 조건 < 조건/결정 < MC/DC < 다중 조건

문제 9

입력 값의 범위를 유사한 특성을 갖는 그룹으로 나누어 각 그룹에서 대표값을 선정하는 블랙박스 테스트 기법은?

정답

동등분할(Equivalence Partitioning) 기법

문제 10

다음 코드의 결정 커버리지와 조건 커버리지를 모두 만족하는 최소 테스트 케이스는?

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)