SW 테스팅의 가장 중요한 핵심 이슈는 "조합"이라고 할 수 있다. 이 사실은 테스트 대상이 코드건 시스템 명세건 모든 경우에 적용된다. 이러한 조합의 문제는 테스트 입력값의 수라던가 테스트 케이스의 분량에 직접적으로 영향을 미쳐 결국 테스트 실행 시간과 같은 리소스 활용에 가장 중요한 요소가 된다.
이를 테면, 4개의 테스트할 파라미터가 존재하고 각 파라미터는 5가지의 값을 가진다고 가정하면, 모든 조합을 테스트 하기 위해서는 5X5X5X5=625개의 테스트 케이스가 필요하다. 여기에 만약 테스트할 경로나 몇가지 조합이 더 추가되게 된다면 그 수치는 기하급수적으로 상승할 것이다. 이때 조합의 문제가 발생한다. 어느정도의 보장성을 확보하면서 조합을 줄여갈것인가가 테스트 매니저 또는 엔지니어가 고민해야할 문제이고 페어와이즈 조합은 좋은 대안 중 한가지이다.
페어와이즈 테스팅을 기법으로 굳이 분류해야 하는지는 잘 모르겠다. 다만 테스트 설계 기법으로 크게 범주를 두고 포함시킨다면, 명세기반기법(Specification-based technique)의 일종이라고 볼 수 있다.
ISTQB 표준용어(Ver 2.0)에 수록된 페어와이즈 테스팅의 사전적 의미는 다음과 같다. 원래는 표준용어에 수록되지 않았었는데, 2007년 12월에 공개된 2.0 버전에는 용어가 새로 추가 되었다. (내용은 임의로 번역)
pairwise testing: A black box test design technique in which test cases are designed to execute all possbile discrete combinations of each pair of input parameters. See also orthogonal array testing.
페어와이즈 테스팅 : 입력 파라미터의 각 쌍의 개별 조합을 실행하기 위한 테스트 케이스를 설계하는 블랙박스 테스트 설계 기법. 직교 배열 테스팅(orthogonal array testing)을 참고.
페어와이즈 조합의 의미는 테스트를 하는데 필요한 각 값(또는 데이터)들이 다른 파라미터의 값과 최소한 한번씩은 조합을이룬다는 것을 뜻한다. 테스트를 수행할 때, 대부분의 경우 2가지 요소의 상호작용에 의해 결함이 발견된다는 사실에 착안하여 2개 요소의 모든 조합을 테스트 한다.
제한된 프로젝트 환경과 리소스 하에서 모든 조합을 테스트하는 것은 사실상 불가능하다(테스트 7가지 기본 원리 참고). 그러나 일부 조합을 의도적으로나 아니면 실수로라도 누락시킨다면 그만큼의 리스크를 동반하게 되므로 참으로 난처한 상황에 국면하게 된다. 페어와이즈 조합 테스팅은 이런면에서 매우 중요한 의미를 가질 수 있다.
개념적으로는 이해하고 있을지라도 실제로 페어와이즈 조합을 실무에 잘 활용하지 못하는 경우가 빈번하다. 좀 더 구체적인 예를 들어 이해를 돕도록 하겠다. 세가지 파라미터의 예시로 페어와이즈 조합을 만들어보는 과정을 간단히 살펴보자.
| 재생 | 볼륨 | 이퀼라이저 |
| play | 크게 | Off |
| play | 크게 | On |
| play | 작게 | Off |
| play | 작게 | On |
| stop | 크게 | Off |
| stop | 크게 | On |
| stop | 작게 | Off |
| stop | 작게 | On |
[그림 1]
음악 플레이어의 기능을 세가지 파라미터로 가정한 후 필요한 값들을 각 기능당 두가지씩 최소화 시켜 보았다. 각각 2가지 파라미터들의 모든 조합을 고려하면 [그림 1]과 같이 8가지 조합이 생성된다(2X2X2). 이 테스트 조합에 페어와이즈 기법을 적용시켜서 조합 수를 줄이면 얼마나 될까? 한번 절차에 따라 기법을 적용시켜보자.
(1) 두 가지 요소의 개별 조합(Discrete combinations)만을 고려한다.
예시 [그림 1]에는 '재생', '볼륨', '이퀼라이저' 이 세가지 요소가 존재한다. 이때 중요한 것은 각각 두가지 요소의 개별 조합에 집중해야 한다는 것이다. 이것이 페어와이즈 조합의 핵심이다. 이를테면, '재생'과 '볼륨' / '재생'과 '이퀼라이저' / '볼륨'과 '이퀼라이저' 와 같은 식으로 두 컬럼에 속한 값들을 각각 비교해서 모든 조합을 고려해주면 된다.
(2) 먼저, 두가지 요소(파라미터)의 각 값들을 중복되지 않게 배열한다.
| 재생 | 볼륨 |
| play | 크게 |
| play | 작게 |
| stop | 크게 |
| stop | 작게 |
[그림 2]를 보면, '재생'과 '볼륨'(두 가지 요소)의 값들이 모든 조합을 이루고 있다는 것을 확인할 수 있다. (2X2=4가지) 이제 여기다가 나머지 요소의 조합까지 고려해주면 된다.
(3) 나머지 요소의 값들을 재생/볼륨 파라미터 각각의 값과 순차적으로 중복되지 않게 배정한다.
(3) 나머지 요소의 값들을 재생/볼륨 파라미터 각각의 값과 순차적으로 중복되지 않게 배정한다.
| 재생 | 볼륨 | 이퀼라이저 |
| play | 크게 | Off |
| play | 작게 | On |
| stop | 크게 | On |
| stop | 작게 | Off |
[그림 3]
'이퀼라이저' 파라미터의 값을 [그림 3]과 같이 배정하면 페어와이즈 조합이 완성된다. 우선, '이퀼라이저'의 값들과 '재생'의 값들은 모든 조합을 이룬다(2X2=4가지). 또한 '이퀼라이저'의 값들과 '볼륨'의 값들 또한 모든 조합을 이룬다(2X2=4가지). 결과적으로 보면 [그림 3]의 4가지 조합의 테스트 케이스를 수행함으로써 세가지 요소들의 모든 값들이 "한 쌍"씩 모든 조합을 이룰 수 있다. 따라서 "페어(pair)" 와이즈인 것이다. 총 8가지 조합에서 4가지 조합으로 수를 줄였다. 조합의 수를 50%까지 줄일 수 있다는 것이 놀랍지 않은가? 그러나 몇가지 집고 넘어가야할 이슈가 존재한다.
- 예제와 같이 간단한 조합에서 50%까지 조합의 수를 줄일 수 있다면, 방대한 분량의 조합에서도 가능한가?
- 마찬가지로 조합의 수가 늘어나게 되면 이와 같은 방식으로는 페어와이즈 조합을 구하는 것은 불가능하지 않은가?
이 문제는 다음 포스팅(allpairs 툴 사용법)에서 다뤄보도록 하겠다.
Reference.
개발자도 알아야할 소프트웨어 테스팅 제 2판, 권원일 외
문제로 배우는 소프트웨어 테스팅, 권원일 외
Standard glossary of terms used in Software Testing Version 2.0, ISTQB
트랙백 주소 :: http://ktworld.tistory.com/trackback/2
-
Subject: 명세기반의 Pairwise 테스트
Tracked from 게으름뱅이 다니엘~! 2010/05/18 23:19 삭제명세기반의 Pairwise 테스트

댓글을 달아 주세요
심오하네요..ㅎㅎ
알면알수록 심오한 세계입니다. ^^
댓글 감사합니다.
안녕하세요~ 생물 공부하는 사람인데요 페어와이즈 테스트로 검색해서 들어왔는데 이해가 잘 안되서 이렇게 글을 남깁니다. 논문은 읽는데, 지역 A, B, C 세 지역에서 각각 네 차례씩 조사를 해서 값(숫자)이 각각 나왔는데(지역 A-a1,a2,a3,a4, 지역B-b1,b2,b3,b4, 지역C-c1,c2,c3,c4) 페어와이즈 테스트 결과 세 지역이 서로 모두 유의한 차이를 보였다고 합니다. a1,b1,c1은 같은 시기에 조사를 한 것이고 a2,b2,c2/ a3,b3,c3/a4,b4,c4도 마찬가지구요. 여기에서 어떤 값들을 비교해서 차이가 난 것인지 궁금합니다. 같은 시기에 조사한 값끼리만 비교를 하는 것인지, 아니면 a1과 b2처럼 다른 시기에 조사한 값끼리도 비교를 하는 것인지요. 두서가 없어서 이해가 안되실지도 모르겠네요--;; 암튼 궁금해서 이렇게 장문의 글을 남깁니다..답변해 주셨으면..^^;
아!! 그리고 한번에 세 개의 값도 비교 가능한가요? a1b1/a1c1을 따로 비교하는건지 아님 a1b1c1을 한번에 비교할 수 있는지도 궁금합니다.^^;
문의 감사합니다. 죄송하네요 요새 너무 바빠 블로그 관리가 안되니..
최대한 시간내어 곧 답변 드리겠습니다. ㅠㅠ