'페어와이즈테스팅'에 해당하는 글 1건

ALLPAIRS

설치본 다운로드


설치 가이드

폴더에 압축해제하기만 하면 끝이다.

 사용법

올페어즈는 각각의 파라매터 셋의 개별 값이 최소한 한번 이상 쌍의 조합이 되는 합리적인 테스트 케이스 셋을 만드는 펄 스크립트이다. 솔직히 내가 말하는게 정확하게 맞는 건지 모르지만, 한번 얘기해보도록 하겠다. 만일 테스트 셋에서 포함해야 한 2개의 파라메터 즉, 프린터와 운영 체제를 예로 들면 다음과 같이 구성될 수 있을 것이다.

운영체제

Win98

Win2K

WinXP


프린터

HP 4050

HP 4100


모든 쌍의 조합을 테스트 하려면 테스트 케이스는 다음과 같을 것이다.

CASE

OS

Printer

1

Win98

HP 4050

2

Win98

HP 4100

3

Win2K

HP 4050

4

Win2K

HP 4100

5

WinXP

HP 4050

6

WinXP

HP 4100

두 매개변수의 경우에서 모든 쌍은 모드 가능한 조합을 의미한다. 하지만 세번째 매개변수를 추가했을 때는 무슨 일이 발생하는지 보자.

듀플렉스 프린트

Y

N

CASE

OS

Printer

Duplex

1

Win98

HP 4050

Y

2

Win98

HP 4100

Y

3

Win2K

HP 4050

Y

4

Win2K

HP 4100

Y

5

WinXP

HP 4050

Y

6

WinXP

HP 4100

Y

7

Win98

HP 4050

N

8

Win98

HP 4100

N

9

Win2K

HP 4050

N

10

Win2K

HP 4100

N

11

WinXP

HP 4050

N

12

WinXP

HP 4100

N

저 매개변수들의 각각의 경우에 대한 모든 조합은 12개의 테스트 케이스를 생성하게된다. 하지만 우리에게 진정으로 필요로 한 것이 최소한 하나의 케이스에 각 파라메터의 한 개의 조합을 보장하는 테스트 케이스라면? 그러면 더 적은 테스트 케이스를 얻을 수가 있을 것이다. 아래를 보면 6개가 도출된다.

CASE

OS

Printer

Duplex

1

Win98

HP 4050

Y

2

Win98

HP 4100

N

3

Win2K

HP 4050

N

4

Win2K

HP 4100

Y

5

WinXP

HP 4050

Y

6

WinXP

HP 4100

N

세 파라메터 중 어느 하나의 값이 다른 하나 혹은 둘의 값과 한 쌍이 되었을 때, 버그가 발생한다면 이 테스트 케이스로 발견할 수 있을 것이다. 만일 세 개의 특정한 값이 조합되었을 때만 버그가 발생한다면, 이 조합의 케이스로는 발견할 수 없을 것이다. 하지만 적어도 모든 쌍에 대해서는 수행하게 된다.

올페어 커버리지는 모든 조합보다 수행하기 훨씬 수월하다. 예를 들면 26개 값을 가진 10개의 매개변수를 테스트 한다면, 모든 조합은 141,167,095,653,376 개의 테스트 케이스가 필요하게 될 것이다. 올페어는 1094 개가 필요할 뿐이다.

Allpairs 를 사용하려면 탭으로 구분된 매개변수의 테이블을 준비해야 한다. 가장 쉬운 방법은 엑셀을 사용하는 것이다.

Operating System

Printer

Duplex

Win98

HP 4050

Y

Win2K

HP 4100

N

WinXP

 

 

그리고 나서 엑셀 테이블을 복사하여 텍스트 파일에 붙여넣기 하라. 그리고 다음과 같이 DOS 커맨드 라인에서 Allpairs 프로그램을 실행해라.

ALLPAIRS VARS.TXT > TESTCASES.TXT


혹시 Perl 을 설치했다면 다음과 같이 실행하는 것도 가능하다. 

PERL ALLPAIRS.PL VARS.TXT > TESTCASES.TXT


testcases.txt 의 내용은 엑셀로 붙여넣기 좋게 다음과 같이 작성될 것이다. 


결과물의 첫번재 부분이 테스트 케이스이다. "pairings" 컬럼은 Allpairs 가 발견한 유일한 쌍의 갯수를 알려준다.

결과물의 두번째 부분은 어떻게 쌍의 조합이 이뤄졌는지를 알 수 있게 해준다. 각각의 쌍을 나열하고, 테스트 케이스 테이블 내에 그 쌍이 몇 번이나 나타나는지를 보여준다. 그리고 그런 쌍이 발생하는 특정 테스트 케이스 혹은 케이스들을 나열한다.

 "~" 는 중요하지 않다는 의미 

때때로 모든 조합의 쌍이 이미 수행되었기 때문에 테스트 케이스 테이블의 특정 셀의 값은 의미가 없다. 이런 경우에 선택된 값이 그 테스트 케이스의 다른 셀들에 비해 상대적으로 가장 적은 수만큼 쌍이 된 것이다. 또한 그 셀은 Allpairs 가 선택한 값을 다른 값으로 대체할 수 있으며 all-pairs 커버리지 목표를 여전히 달성하고 있음을 알려줄 수 있도록 "~" 기호로 표기된다.

예제

zip 파일에 포함된 마이크로소프트 워드 파일에 실제 테스트 예제가 포함되어 있다. Printing.txt 는 데이터 파일, The Printing.xls 에는 결과가 담겨있다.(좀 더 읽기 편하도록 일부 수정하였다.)

조언

테스트 설계
매개변수를 치환할 때, 매개변수를 더 많이 선택할 수록, 각 테스트 케이스를 위해 해야 할 일이 더 많아진다. 그렇기 때문에 적당하게 서로 연관이 있는 매개변수를 선정하는 것이 좋다. 게다가 버그 발생의 중요성에 대해 고민해야 한다. 만일 애매한 2개의 매개변수의 두 값이 동시에 사용되었을 때만 문제가 발생한다면, 결과는 아무도 수정하려고 하지 않을 버그가 될 것이다.

값이 "중요하지 않음"(~) 이라면 실패 가능성을 최대화 하거나 발생시 실패 영향력을 최대로 하는 값을 선택하라.

다른 도구들
내 도구는 최적화된 해결책을 제시하지는 못한다. 하지만 스스로 최적화 된 해결책을 찾는데 있어 신경을 끄는데 충분한 정도는 된다. 10개의 값을 가진 10개의 매개변수로 이뤄진 테스트 케이스를 고려하자. allpairs 는 177개의 조합을 찾을 것이다. 가장 적은 숫자의 가능한 테스트 케이스는 100~177 개 사이가 될 것이다. 나는 대략 130 개 이하가 될 것으라 예상한다. 하지만 모든 순열을 수행하기 위한 10억개의 테스트 케이스와 비교햇을 때 177개 정도는 나쁘지 않은 수준이다.

Telcordia Technologies (<http://www.argreenhouse.com>) 에서 Allpairs 보다 더 좋은 웹 기반 툴을 제공한다. 예를 들어 3개의 값을 지닌 40개의 매개변수로 그 툴은 21개의 테스트 케이스로 모든 쌍을 커버할 수 있다. Allpairs 는 29를 필요로 한다. 하지만 그 툴은 자그마치 $6000 의 비용을 필요로 한다. 무료 버전과 한번 비교해보면...

 출처: By James Bach, james@satisfice.com <mailto:james@satisfice.com>, www.satisfice.com

 

WRITTEN BY
하이런

,