...
페어와이즈 테스트 (조합 테스트)
- 모든 가능한 입력 값들의 조합들을 테스트는 비현실적! 그래서 대신 모든 짝들의 조합(pairwise)을 테스트
- 대부분 결함이 두 입력 값의 상호작용에 기인하므로 입력 값이 많을 수록 복잡도 ↑
페어와이즈 실무 예제
아래 GUI 화면을 테스트 한다고 했을 때,
테스트 조합 갯수는 3 * 2 * 2 * 2 * 2 = 48개가 나온다.
하지만 페어와이즈 기법을 적용한 테스팅 기준은 아래와 같이 6건의 테스트 케이스로 충족되게 된다.
100%는 아니지만 그래도 아주 높은 확률로 저 6개만 테스트를 하면 48개를 테스트하는 것과 같은 효과를 얻을 수 있다.
이것이 페어와이즈의 매력이다.
페어와이즈 계산법
IPO알고리즘으로 페어들을 조합 도출하는 법
- 처음 두 입력 변수의 모든 쌍을 구한다.
- 그외의 모든 입력 변수의 쌍의 집합을 구하고, 이를 AP라고 한다.
- 처음 두입력 변수의 쌍에, 그 다음 입력 변수를 하나씩 리스트 하고, 이미 정의된, 포함된 쌍을 AP에서 삭제한다.
- AP에서 가장 많은 짝을 제거 할 수 있는 값을 할당한다. 모든 짝이 AP에서 삭제되기까지 반복한다.
다만 선행 가중치가 있을 경우 (비밀번호 > 새 비밀번호 > 새 비밀번호 확인) 도구를 이용해 가중치를 부여할 수 있다.
페어와이즈 계산 예제
다음과 같이 input 값들이 있을때
완전 조합일 경우 2x2x2=8개의 테스트 케이스가 도출됨.
하지만 페어와이즈 테스팅을 적용하면 4개로 커버 가능
1) 처음 두입력 변수 X와 Y의 모든 쌍을 구함.
x | y | z |
1 | Q | |
1 | R | |
2 | Q | |
2 | R |
(1,Q),(1,R),(2,Q),(2,R)
2) 그 외의 입력변수 집합 구함
AP = (1,5),(1,6),(2,5),(2,6),(Q,5),(Q,6),(R,5),(R,6)
3) 우선 Z값을 표에 차례대로 넣음. 그리고 해당값을 집합 지워줌
x | y | z |
1 | Q | 5 |
1 | R | 6 |
2 | Q | |
2 | R |
AP = (1,5),(1,6),(2,5),(2,6),(Q,5),(Q,6),(R,5),(R,6)
4) 남은 AP들 중에서 다음 z값에 어느 값을 넣으면 집합을 더 많이 지울수있는지 정해서 넣음.
만일 다음값을 5를 넣으면 (2,5)밖에 안지워지지만, 만일 6을 넣으면 (2,6),(Q,6)을 지울수 있기에 6을 넣음.
x | y | z |
1 | Q | 5 |
1 | R | 6 |
2 | Q | 6 |
2 | R |
AP = (1,5),(1,6),(2,5),(2,6),(Q,5),(Q,6),(R,5),(R,6)
5) 남은 5를 넣으면 AP가 모두 지워진다.
x | y | z |
1 | Q | 5 |
1 | R | 6 |
2 | Q | 6 |
2 | R | 5 |
페어와이즈 테스팅 지원 툴
페어와이즈 테스트 케이스를 자동 생성해 주는 여러 무료/유료 툴이 존재함
- ACTS(Automated Combinatorial Testing for Software): 독립형 Java 애플리케이션, 무료 쉐어웨어(2009년 이전에는 FireEye로 불려짐)
- allpairs: Perl 스크립트 기반 커맨드라인 툴, 무료
- AllPairs: Python으로 작성된 실행 소프트웨어, 무료
- Hexawise: 상용(무료 데모 계정)
- jenny: C로 작성된 커맨드라인 툴, 무료
- pairwise: ruby 기반 오픈 소스
- PICT(Pairwise Independent Combinatorial Testing): 커맨드라인 툴, 무료
- rdExpert: 상용
- SmartTest: 상용
- Testcover: 웹 기반 서비스, 상용
페어와이즈 자동화 툴 PICT 사용법
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.