2010년 1월 19일 화요일

Pairwise Testing


페어와이즈(pairwise) 조합 테스팅은 커버해야할 기능적 범위에 비해 상대적으로 적은 량의 테스트 세트를 구성하여 소프트웨어의 결함을 찾고 테스트에 대한 자신감(Confidence)을 얻을 수 있는 방법 중의 한가지 이다. 페어와이즈는 관찰 결과 대부분의 결함이 2개 요소의 상효작용(Interactions of two factors)에 기인한다는 것에 착안하여 2개 요소의 모든 조합을 다룬다. 즉, 페어와이즈 조합의 의미는 테스트를 하는데 필요한 각 값들이 다른 파라메터의 값과 최소한 한번씩은 조합을 이룬다는 의미이다.
제 약된 자원으로 제한된 시간에 테스트를 해야 하는 상황에서 테스트 대상 소프트웨어의 설정, 기능, 이벤트 등의 조합을 모두 테스트 하는 것은 현실적/경제적으로 가능하지 않은 경우가 대부분이다. 반면, 테스트를 하지 않거나, 일부 조합을 의도적으로 누락시키는 것은 그만큼의 리스크를 동반하게 되므로 조합 테스팅은 매우 중요한 의미를 갖는다.
페어와이즈 조합 테스팅은 모든 조합을 고려해 테스팅했을 때 발견할 수 있는 결함을 모두 발견할 수 있는 것은 아니다. 그러나 페어와이즈 조합 테스팅기법을 사용하여 테스팅한 결과에 결함이 없었다는 것까지는 보장성을 제공해 준다. 그리고 경험적으로 의미있고 결함을 발견할 가능성이 높다고 판단되는 조합을 추가하여 관리 가능한 선에서 조합을 늘리는 것은 조합 테스팅의 효과성을 높이는데 도움이 된다. 물론, 늘어난 조합을 감안하여 도출한 테스트 케이스가 보장하는 범위는 페어와이즈 조합 테스팅 기법이 보장하는 범위까지이다.
조 합 테스팅에서 파라미터(Parameters)는 조합할 값을 대표하는 요소로서 소프트웨어의 다양한 기능, 사용자 또는 하드웨어 설정, 속성, 선택옵션 등의 종류를 파악함으로써 알 수 있다. 값(values)은 각 파라미터에 대한 선택 가능한 개별적인 값을 의미하는 것으로 숫자, 텍스트,또는 리스트에서의 선택된 것이 해당될 수 있다.
3개의 파라미터가 있고 각 파라미터가 5가지, 4가지, 5가지의 값을 가질 경우를 생각해 보자. 모든 조합을 고려하면 5 * 4* 5 = 100가지의 조합이 생긴다. 이러한 100가지의 조합을 가지고 100가지의 경로로 테스트를 수행해 준다고 가정하면 10,000개의 테스트 케이스를 수행해야 한다. 조합할 것이 조금 더 많아지고 테스팅하는 경로나 종류가 더 다양해진다면 테스트에 엄청난 시간과 비용이 소요될 것이다. 이런 경우, 합리적으로 일정 수준의 보장성을 확보 하면서 조합의 수를 줄여 주어야 한다.
=================================
아래 사이트에 가면 pairwise testing 기법에 대해 많은 정보를 얻을 수 있다.
http://www.pairwise.org
pairwise.org에서 Effectiveness of Pairwise 항목중 하나를 옮겨본다.

We measured the coverage of combinatorial design test sets for 10 Unix commands: basename, cb, comm, crypt, sleep, sort, touch, tty, uniq, and wc. […] The pairwise tests gave over 90 percent block coverage.

[D. M. Cohen et al., 1996]

10가지 unix 명령을 페어와이즈 만으로 90%의 블럭 커버리지를 준다면.. 사용해 볼 만한 가치가 있지 않은가??

댓글 없음:

댓글 쓰기