테스트 설계 기법
테스트 유형과 설계 기법의 차이점
| 구분 | 테스트 유형 | 테스트 설계 기법 |
|---|
| 목적 | 무엇을 테스트할지를 정의 | 어떻게 테스트할지를 정의 |
| 적용 범위 | 소프트웨어의 특정 기능이나 측면에 집중 | 테스트 케이스를 설계하는 방법에 중점 |
| 상호 관계 | 테스트 기법을 통해 유형을 효과적으로 수행함 | 테스트 유형의 보완적 도구 역할을 함 |
| 리스크 관리 | 적절한 조합을 통해 리스크를 줄이고 품질 보장 | 결함 발견 확률을 높이고 품질을 보장함 |
| 효과성 | 특정 영역이나 기능 검증을 목표로 함 | 테스트 효율성과 커버리지를 극대화함 |
명세 기반 테스트 기법
- 목적: 요구사항에 맞게 기능이 동작하는지 확인, 결함을 최대한 빠르게 발견하는 것
- 사용: 요구사항이 명확할 때 효과적으로 사용, 불필요한 테스트를 최소화해 시간을 절약
- 이점:
- 요구사항 단계에서 결함을 찾을 수 있어 수정 비용을 줄이는 데 기여
- 명확한 기준에 따라 테스트 진행해 주요 리스크를 줄이고 결함 예방
- 유형: 동등 분할 기법 / 경계값 분석 / 상태 전이 테스트
동등 분할 테스트 (예시)
테스트 목표
정상적인 값(예: 1,000원)과 비정상적인 값(예: -500원, 1억 원 이상)이 입력되었을 때,
시스템이 올바르게 처리하고 오류 없이 결과를 출력하는지 검증
동등 분할
| 유효값 그룹 | 1,000원 이상 (예: 1,000원, 10,000원) |
| 무효값 그룹 | 1,000원 미만 (예: -500원), 1억 원 이상 (예: 10억 원) |
장점과 단점
| 장점 | 단점 |
|---|
| 시간과 비용 절약 | 복잡한 관계 검증에 부적합 |
| 효과적인 결합 탐지 | 잘못된 분류로 결합 놓칠 수 있음 |
| 입력값 구조가 단순할 때 효과적 | 복잡한 시스템에서는 다른 기법과 함께 사용 권장 |
| 반복 테스트 최소화 | 단순 구조에서 유용함 |
| 중요한 값 선택하여 테스트 | 효율적인 검증 가능 |
경계값 분석 (예시)
| 테스트 항목 | 테스트 값 (경계값) | 테스트 목표 |
|---|
| 회원가입 나이 제한 (18세 이상) | 17, 18, 19 | 나이 제한이 정확하게 적용되는지 확인 |
| 비밀번호 길이 제한 (8~16자) | 7, 8, 16, 17 | 비밀번호 길이 검증이 정상적으로 작동하는지 확인 |
장점과 단점
| 장점 | 단점 |
|---|
| 효과적인 결합 탐지 | 비경계 문제를 놓칠 수 있음 |
| 테스트 케이스 수 감소 | 복잡한 시스템에는 불충분함 |
| 높은 테스트 커버리지 | 정확한 조건이 필요함 |
상태 전이 테스트 (예시)
| 테스트 항목 | 입력 | 현재 상태 | 예상 결과 (다음 상태) | 테스트 목표 |
|---|
| ATM 로그인 | 올바른 PIN 입력 | 로그인 전 | 로그인 성공 | 정상적인 로그인 프로세스 검증 |
| ATM 로그인 | 잘못된 PIN 3회 입력 | 로그인 전 | 계정 잠김 | 연속된 잘못된 입력 시 계정이 잠기는지 확인 |
| 주문 상태 | 결제 완료 | 주문 접수 | 배송 준비 중 | 결제 후 상태가 올바르게 변경되는지 확인 |
| 주문 상태 | 주문 취소 | 배송 준비 중 | 주문 취소 완료 | 배송 준비 중에도 취소가 가능한지 확인 |
장점과 단점
| 장점 | 단점 |
|---|
| 효과적인 오류 탐지 | 상세한 상태 다이어그램 필요 |
| 논리적 오류의 조기 식별 | 복잡한 시스템에 대해 시간 소모적 |
| 상태 전환의 체계적 검증 | 높은 자원 요구 |
| | 우선 테스트 필요 |
테스트 설계 기법 주의사항
- 리스크 평가를 통해 문제될 가능성이 높은 영역을 우선적으로 테스트
- 테스트 커버리지를 최대한 확보하도록 설계 기법을 선택해 모든 기능이 빠짐없이 검증되도록 해야 함
- 제한 시간과 인력 고려, 효율성을 중심으로 테스트 우선순위 설정
- 복잡성 관리가 중요한 시스템에서는 코드와 구조를 분석하는 기법이 유용