화이트박스 테스트 기법
화이트박스 테스트 기법은 소프트웨어의 내부 구조와 처리를 기반으로 하는 테스트 기법으로, 주로 코드의 논리적 흐름을 검증한다.
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
테스트된 구문
- if (number % 2 === 0) { : 네 가지 테스트 케이스 모두 이 구문을 실행
- return true; : 짝수인 경우 이 구문을 실행(2와 0).
- else { : 홀수인 경우 이 구문을 실행 (3과 -1).
- 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
해설(드래그)
화이트박스 테스팅은 소프트웨어의 내부 구조를 고려하지만, 소프트웨어가 요구사항을 구현하지 않는 경우, 그 누락을 식별하지 못할 수 있다.
'ISTQB > CTFL' 카테고리의 다른 글
4.5. 협업 기반 테스트 접근법 (0) | 2024.10.22 |
---|---|
4.4. 경험 기반 테스트 기법 (0) | 2024.10.21 |
4.2. 블랙박스 테스트 기법 (0) | 2024.10.19 |
4장 - 4.1 테스트 기법 개요 (0) | 2024.10.18 |
ISTQB 3장 예상 문제 (0) | 2024.10.17 |