4.3. 화이트박스 테스트 기법

hsk·2024년 6월 18일

ISTQB - CTFL (정리) 

목록 보기
16/25

화이트박스 테스트 기법

화이트박스 테스트 기법은 소프트웨어의 내부 구조와 처리를 기반으로 하는 테스트 기법으로, 주로 코드의 논리적 흐름을 검증한다.

4.3.1 구문 테스팅과 구문 커버리지

  • 구문 테스팅: 실행 가능한 모든 코드 구문을 테스트하는 기법
    • 커버리지 계산: 테스트 케이스가 실행한 구문 수를 전체 실행 가능한 구문 수로 나눠서 백분율로 표시
    • 100% 구문 커버리지: 모든 구문을 적어도 한 번은 실행했다는 것을 의미하지만, 모든 결함을 식별할 수 있다는 것을 보장하지는 않는다.

예제

function isEven(number) {
    if (number % 2 === 0) {  // 구문 1
        return true;         // 구문 2
    } else {
        return false;        // 구문 3
    }
}

console.log(isEven(2)); // true
console.log(isEven(3)); // false
console.log(isEven(0)); // true
console.log(isEven(-1)); // false

테스트된 구문

  1. if (number % 2 === 0) { : 네 가지 테스트 케이스 모두 이 구문을 실행
  2. return true; : 짝수인 경우 이 구문을 실행(2와 0).
  3. else { : 홀수인 경우 이 구문을 실행 (3과 -1).
  4. return false; : 홀수인 경우 이 구문을 실행 (3과 -1).

4.3.2 분기 테스팅과 분기 커버리지

  • 분기 테스팅: 제어 흐름 그래프의 모든 분기를 테스트하는 기법
    • 커버리지 계산: 테스트 케이스가 실행한 분기 수를 전체 분기 수로 나눠서 백분율로 표시
    • 100% 분기 커버리지: 모든 분기(무조건 및 조건 분기)를 실행했다는 것을 의미하며, 이는 구문 커버리지를 포함한다.모든 결함을 식별할 수 있는 것은 아니다.

4.3.3 화이트박스 테스팅의 가치

  • 장점: 전체 소프트웨어 구현을 고려하여 명세가 불완전한 경우에도 결함을 쉽게 감지할 수 있습니다.
  • 단점: 소프트웨어가 요구사항을 구현하지 않는 경우, 그 누락을 식별하지 못할 수 있습니다.
  • 적용: 정적 테스팅에도 사용할 수 있으며, 슈도 코드나 제어 흐름 그래프 등의 논리 검토에 적합합니다.
    커버리지 측정: 블랙박스 테스팅만으로는 실제 코드 커버리지 측정을 얻을 수 없으며, 화이트박스 커버리지 측정은 객관적인 커버리지 값을 제공합니다.

예상 기출 문제

문제 1: 구문 테스팅의 주요 목적은 무엇인가?

A) 코드의 모든 분기를 테스트하는 것
B) 코드의 모든 실행 가능한 구문을 테스트하는 것
C) 사용자 인터페이스를 테스트하는 것
D) 소프트웨어의 성능을 테스트하는 것

정답(드래그)
 B 
해설(드래그)
구문 테스팅의 주요 목적은 코드의 모든 실행 가능한 구문을 테스트하는 것

문제 2: 구문 커버리지를 계산하는 방법은 무엇인가?

A) 테스트 케이스가 실행한 분기 수를 전체 분기 수로 나눈 값
B) 테스트 케이스가 실행한 구문 수를 전체 실행 가능한 구문 수로 나눈 값
C) 테스트 케이스가 실행한 함수 수를 전체 함수 수로 나눈 값
D) 테스트 케이스가 실행한 클래스 수를 전체 클래스 수로 나눈 값

정답(드래그)
 B 
해설(드래그)
구문 커버리지는 테스트 케이스가 실행한 구문 수를 전체 실행 가능한 구문 수로 나누어 계산한다.

문제 3: 100% 구문 커버리지의 한계는 무엇인가?

A) 모든 결함을 식별할 수 있다
B) 모든 결정 논리를 테스트할 수 있다
C) 결함이 반드시 식별되지는 않는다
D) 모든 분기를 테스트할 수 있다

정답(드래그)
 C 
해설(드래그)
100% 구문 커버리지를 달성해도 모든 결함이 반드시 식별되는 것은 아닙니다. 예를 들어, 데이터에 종속적인 결함은 식별하지 못할 수 있다.

문제 4: 분기 테스팅에서 커버리지 항목은 무엇인가?

A) 구문
B) 함수
C) 분기
D) 클래스

정답(드래그)
 C 
해설(드래그)
분기 테스팅에서 커버리지 항목은 분기입니다. 제어 흐름 그래프에서 두 노드 간의 제어 이동을 테스트한다.

문제 5: 100% 분기 커버리지를 달성하면 무엇을 의미하는가?

A) 코드의 모든 구문을 테스트했다
B) 코드의 모든 함수와 클래스가 테스트되었다
C) 코드의 모든 분기가 테스트되었다
D) 소프트웨어의 모든 성능 문제가 해결되었다

정답(드래그)
 C 
해설(드래그)
100% 분기 커버리지를 달성하면 코드의 모든 분기(무조건 및 조건 분기)가 테스트된 것을 의미함

문제 6: 화이트박스 테스팅의 근본적인 강점은 무엇인가?

A) 전체 소프트웨어 구현을 고려하여 결함을 감지할 수 있다
B) 소프트웨어의 사용자 인터페이스를 테스트할 수 있다
C) 소프트웨어의 성능을 최적화할 수 있다
D) 모든 요구사항이 구현되었음을 보장할 수 있다

정답(드래그)
 A 
해설(드래그)
화이트박스 테스팅의 강점은 전체 소프트웨어 구현을 고려하여 명세가 불완전한 경우에도 결함을 감지할 수 있다

문제 7: 분기 커버리지와 구문 커버리지의 관계는 무엇인가?

A) 분기 커버리지가 구문 커버리지보다 작다
B) 구문 커버리지가 분기 커버리지보다 크다
C) 100% 분기 커버리지는 100% 구문 커버리지를 포함한다
D) 100% 구문 커버리지는 100% 분기 커버리지를 포함한다

정답(드래그)
 C 
해설(드래그)
100% 분기 커버리지를 달성하는 테스트 케이스 집합은 100% 구문 커버리지도 달성한다.

문제 8: 구문 테스팅에서 구문을 실행했다고 해서 결함이 반드시 식별되지 않는 이유는 무엇인가?

A) 구문이 너무 복잡하기 때문이다
B) 데이터에 종속적인 결함이 있을 수 있기 때문이다
C) 테스트 케이스가 부족하기 때문이다
D) 구문이 충분히 커버되지 않기 때문이다

정답(드래그)
 B 
해설(드래그)
구문을 실행했더라도 데이터에 종속적인 결함은 식별되지 않을 수 있다.

문제 9: 화이트박스 테스팅이 블랙박스 테스팅보다 유리한 점은 무엇인가?

A) 소프트웨어의 외부 동작을 검증할 수 있다
B) 명세가 불완전한 경우에도 결함을 감지할 수 있다
C) 사용자의 경험을 반영할 수 있다
D) 사용자 인터페이스를 개선할 수 있다

정답(드래그)
 B 
해설(드래그)
화이트박스 테스팅은 소프트웨어의 내부 구조를 분석하기 때문에 명세가 불완전한 경우에도 결함을 감지할 수 있다

문제 10: 화이트박스 테스팅의 단점은 무엇인가?

A) 소프트웨어의 내부 구조를 고려하지 않는다
B) 요구사항이 누락된 경우 식별하지 못할 수 있다
C) 블랙박스 테스팅보다 시간이 더 걸린다
D) 소프트웨어의 성능을 테스트할 수 없다

정답(드래그)
 B 
해설(드래그)
화이트박스 테스팅은 소프트웨어의 내부 구조를 고려하지만, 소프트웨어가 요구사항을 구현하지 않는 경우, 그 누락을 식별하지 못할 수 있다.

profile
Test Automation QA Engineer

0개의 댓글