용어집 · 테스트 설계
페어와이즈 테스트
영어: Pairwise testing
다른 이름: 페어와이즈 테스팅, 올페어 테스트, all-pairs testing, 쌍대 테스트
정의
모든 파라미터 값의 쌍이 적어도 한 번은 함께 나타나도록 소수의 테스트 케이스를 고르는 조합 테스트 기법입니다.
페어와이즈 테스트(Pairwise testing, all-pairs testing)는 기능에 파라미터가 여러 개 있을 때 필요한 조합 수를 줄여 줍니다. 가능한 모든 조합을 테스트하는 대신, 각 파라미터의 모든 값이 다른 모든 파라미터의 모든 값과 적어도 한 번씩 짝을 이루도록 테스트 세트를 고릅니다. 이 아이디어는 실무에서 얻은 관찰에 근거합니다. 설정과 관련된 결함은 대부분 파라미터 하나 또는 두 파라미터의 상호작용으로 발생하며, 세 개 이상의 특정 값이 동시에 맞아야 발생하는 결함은 훨씬 적습니다.
예시
웹 앱이 다음 옵션에서 모두 동작해야 한다고 합시다.
- 브라우저: Chrome, Firefox, Safari
- OS: Windows, macOS, Linux
- 언어: 영어, 독일어, 일본어
모든 조합을 테스트하면 3 x 3 x 3 = 27개입니다. 페어와이즈 세트는 9개면 충분합니다.
| # | 브라우저 | OS | 언어 |
|---|---|---|---|
| 1 | Chrome | Windows | 영어 |
| 2 | Chrome | macOS | 독일어 |
| 3 | Chrome | Linux | 일본어 |
| 4 | Firefox | Windows | 독일어 |
| 5 | Firefox | macOS | 일본어 |
| 6 | Firefox | Linux | 영어 |
| 7 | Safari | Windows | 일본어 |
| 8 | Safari | macOS | 영어 |
| 9 | Safari | Linux | 독일어 |
아무 두 열이나 확인해 보면 모든 쌍이 나타납니다. Chrome과 Linux는 3행, macOS와 일본어는 5행, Safari와 독일어는 9행에 있습니다. 파라미터가 많아질수록 절감 효과는 빠르게 커집니다. 값이 세 개인 파라미터 10개의 조합은 59,049개지만, 페어와이즈 세트는 생성기에 따라 대략 15~20개의 테스트로 모든 쌍을 커버할 수 있습니다.
제약 조건
실제 시스템에는 불가능한 조합이 있습니다. Safari는 Linux에서 사용할 수 없으므로 9행은 다른 조합으로 바꿔야 합니다. 좋은 생성기는 이런 제약 조건을 선언한 뒤, 유효한 모든 쌍이 여전히 커버되도록 세트를 다시 만들어 줍니다. 페어와이즈 세트를 생성하는 도구로는 Microsoft의 PICT와 AllPairs 계열 스크립트가 있습니다.
페어와이즈에만 의존하면 안 되는 경우
- 위험하다고 알려진 조합. 결제 수단, 통화, 국가처럼 특정한 세 값의 조합이 중요하다면 그 조합을 명시적으로 추가합니다.
- 여러 입력이 함께 작용하는 규칙. 비즈니스 로직은 결정 테이블(decision table)로 정리합니다. 페어와이즈는 설정과 서로 독립적인 옵션의 커버리지를 위한 기법입니다.
- 단일 핵심 파라미터. 페어와이즈는 각 파라미터 자체의 값에 대한 동등 분할과 경계값 분석을 대체하지 않습니다.
더 강한 변형(3-wise, 일반적으로는 t-wise)은 모든 세 값 조합이나 더 큰 튜플을 커버하지만, 그만큼 테스트 수가 늘어납니다.