오늘의 ISTQB 공부 주제는 테스트 설계 기술이다.
테스트 설계 기술은 테스트 케이스를 체계적으로 설계하기 위한 방법론이다. 이를 통해 제품의 요구 사항과 결함 가능성을 효율적으로 검증할 수 있다. 테스트 설계 기술은 크게 명세 기반 기술, 구조 기반 기술, 경험 기반 기술로 나뉜다.
명세 기반 기술은 요구 사항, 사용자 스토리, 설계 문서와 같은 명세를 기반으로 테스트 케이스를 설계한다.
입력 데이터 또는 출력 데이터를 유사한 특성을 가진 그룹(파티션)으로 나누어 각 그룹에서 하나의 값을 테스트한다.
사용자가 입력할 수 있는 나이는 0~120 사이다.
- 유효 파티션: [0~120]
- 무효 파티션: (-∞~0) 및 (120~+∞)
경계 값을 중심으로 테스트 케이스를 설계한다.
나이 입력 예제에서, 경계 값은 다음과 같다.
유효 경계 값: 0, 1, 119, 120
무효 경계 값: -1, 121
입력 조건과 결과 간의 관계를 표로 정리하여 테스트 케이스를 생성한다.
쇼핑몰 할인 정책:
조건: VIP 고객 여부, 구매 금액 ≥ $100
결과: 10% 할인, 20% 할인
| VIP 여부 | 구매 금액 ≥ $100 | 결과 |
|---|---|---|
| Yes | Yes | 20% 할인 |
| Yes | No | 10% 할인 |
| No | Yes | 10% 할인 |
| No | No | 할인 없음 |
소프트웨어의 코드나 아키텍처와 같은 내부 구조를 기반으로 테스트를 설계한다.
코드의 모든 문장이 최소한 한 번 실행되도록 테스트 케이스를 설계한다.
[python]
if x > 0:
print("Positive")
else:
print("Non-positive")
테스트 케이스 1: x = 1 → "Positive" 출력
테스트 케이스 2: x = -1 → "Non-positive" 출력
코드의 모든 분기(조건식의 참/거짓)를 실행하도록 테스트 케이스를 설계한다.
x == 0도 추가로 테스트해야 한다.테스터의 경험, 직관, 과거의 유사 프로젝트에서 발생했던 결함을 기반으로 테스트 케이스를 설계한다.
사전에 정해진 테스트 케이스 없이 소프트웨어를 탐색하며 테스트를 수행한다.
결함이 발생할 가능성이 높은 부분을 경험적으로 예측하여 테스트한다.
각 테스트 설계 기술을 효과적으로 사용할 수 있는 상황의 예시를 간단하게 들고 마무리하겠다.
1. 명세 기반 기술
요구 사항 문서나 명세가 명확히 정의된 경우 !
2. 구조 기반 기술
코드 리뷰 이후, 소스 코드가 준비되었을 때 !
3. 경험 기반 기술
명세가 불완전하거나 테스터의 도메인 지식이 필요한 경우 !
위 세 가지 테스트 설계 기술은 각각의 목적과 상황에 맞게 활용하면 된다.
정말 다양한 테스트 설계 기술이 있군요! 2월에 ISTQB 목표로 공부중 이신가요?