swtest

페어와이즈 테스팅(Pairwise testing) all pairs툴과 PICT 툴로 알아보기


by Kitle · 2020. 08. 21.



페어와이즈 테스팅

페어와이즈 테스팅은 조합 테스팅의 하나의 방법이다. 대부분의 결함이 2개의 요소의 상효작용에 기인한다는 점을 착안하여 각 요소들이 최소한 한 번씩 조합을 이루게 하는 것을 말합니다. 조합된 값을 바탕으로 테스트를 수행할 수 있습니다.


조합 예시
Format method: Quick, Slow
File system:   FAT, FAT32, NTFS
Compression:   On, Off

다음과 같이 파라메터 3개와 각 Values 가 주어졌을때, 두개의 파라메터의 값들이 한번씩 조합하도록 설계를 한다면 다음과 같이 할 수있습니다.

  Format method File system Compression
1 Quick                 FAT32             Off
2 Slow                 FAT             Off
3 Slow                 NTFS         On
4 Slow                 FAT32         On
5 Quick                 FAT             On
6 Quick                 NTFS         Off

임의로 1,2,3,4,5,6 번호를 매겨봤습니다. Quick 의 경우는 FAT/FAT32/NTFS 한번씩, On/Off 를 한번씩 만나야하죠.
FAT/FAT32/NTFS 는 1, 5, 6에 각각 한번씩 만났습니다. On/Off는 1, 5 에 한번씩 만났습니다.
Slow의 경우도 FAT/FAT32/NTFS 2,3,5 에 한번씩, On/Off는 2,3 에 한번씩 만났습니다. 조합하는 순서가 꼭 순서대로 조합되지는 않습니다.  최적의 조합(케이스 수 감소)을 위해 먼저 조합되는 파라메터가 달라지기도 합니다. 이부분은 다른 포스팅에서 기회가 되면 설명하도록 하겠습니다.

보시다시피 수동으로 조합하기엔 매우 복잡하고 빠지는 경우도 발생하겠죠? 그래서 보통 툴을 사용합니다. 가장 유명한 툴은 All pairs 와 PICT 툴이 있습니다.

All Pairs vs PICT
간단하게 사용하기엔 allpairs 툴이 쉽고 입문하기 좋습니다.
그러나 파라메터사이에 특수성(제약조건)이 생기는 경우 allpairs 툴에서 커버를 할 수 없습니다. 이 경우 PICT 툴에서는 IF문등 각종 제약 조건을 걸 수 있어 좀 더 복잡한 상황을 적용 가능합니다. PICT 문법에 아주 약간의 프로그래밍 적인 요소가 있어 학습 및 적용에 약간이 시간이 걸릴 수 있다는 점이 단점으로 볼 수 있겠죠?


조합으로 인한 테스트 케이스 수 감소
Format method: Quick, Slow
File system:   FAT, FAT32, NTFS
Compression:   On, Off

케이스를 살펴 봅시다. 모든 조합을 고려한다고 하면 2 * 3 * 2 = 12개의 조합이 나왔습니다. 이정도는 뭐 사실 모두 테스트 해도 어려운 방법은 아니지만, 갯수가 100개 1000개 정도 넘어가면 답이 나오지 않죠. 위에서 조합한 경우 6개로 감소 되었습니다.

또다른 케이스를 볼까요. 파라메터의 값들이 각각 2, 2, 4, 4, 4, 4 라고 가정할때,  2 * 2 * 4 * 4 * 4 * 4 = 1024개의 케이스를 가지만 페어와이즈를 사용했을 경우 21개의 케이스로 도출 되었습니다. 정말 획기적이죠?

페어와이즈 조합 장단점 및 주의사항
페어와이즈가 테스트 케이스를 획기적으로 줄여준다고 하지만 만능은 아닙니다.
단점 : 조합에 포함되지 않은 케이스에서 오류가 나지 않는다는 보장은 없습니다.
특징 : 툴마다 조합 결과가 조금씩 다를 수 있습니다. 한번씩만 페어링 되면 되므로 조합을 하다보면 이미 조합은 되었지만 파라메터 값을 선택해야 하는 (아무거나 와도 되는 Don't care 조건이라고 하죠) 경우가 생기는데요 나머지 값들은 각 툴의 특성에 맞게 선택됩니다. 이부분은 오류라고 본다기 보다, 툴을 개발한 개발자의 알고리즘 특성에 맞게 선택 된다고 봐야 합니다.
주의사항: 각 파라메터간의 연관관계가 딱히 없는 경우 조합은 무의미 할 수 있습니다. 조합테스팅이 맞는 경우도 있고, 최대/최소값을 선정하는 부분이 의미 있는 케이스도 있습니다. 혼합해서 사용하면 더 좋은 커버리지가 보장된다고 볼 수 있겠습니다.


참고자료

https://github.com/Microsoft/pict
http://www.amibugshare.com/pict/help.html
http://www.satisfice.com/tools.shtml