본문 바로가기
엑셈 기업문화/엑셈 사람들

[윤진영]QA 기법의 다크호스, PairWise 조합테스팅 기법

by EXEM 2008. 9. 12.

사용자 삽입 이미지


자 오늘도 어김없이 계획을 세우고 테스트를 진행해보자.

교육을 마치고 필드에 나와 느끼는 일반적인 QA들의 기본적인 생각은 배의 배가 되는 테스트 대상의 복잡성일 것이다. 또한 테스트경우의 수는 가히 기하학적이다.

 

내가 너에게 오늘 백만원을 주겠다. 조건이 있다 첫날은 1원을 나에게 둘째 날은 첫날의 두배를 셋째 날은 둘째 날의 두 배의 돈을 주는 식으로 1달간 준다면 난 당장 너에게 100만원을 주겠다. “

 

컴퓨터 관련 공부를 한사람이면 2 10 == 1024라는건 기본이다. 어림짐작해서 1달이면 100만 원이 안될꺼 같은데 ..  “ OK “

100만원을 받는 다면 당신은 한달(31)뒤에 약 1072백만원의 손해를 보게 된다. 설마 10억이었을 줄이야~!

 

위에 이야기를 한 이유는 바로 요소가 많아지면 많아 질수록 수의 증가가 엄청나진다는 것이다.

( 현재 위 이야기가 은근히 관련없음을 느낀다…….. 하지만 잘 생각해보면 관련이 없진 않다.ㅜㅜ)

두 배의 위력이 이 정도인데 요소 요소가 가질 수 있는 값이 2개 이상일 경우 경우의 수는 엄청나게 늘어난다.

 

여기 많은 수의 조합에 관련된 테스트케이스가 나올 테스트노다지가 있다.

! 당신이라면 어떻게 테스트를 시작 하겠는가?  맞다 바로 그거다!

일단 다하지는 않는다 ^^; “

모두 하지 않으려면 상당히 머리를 써야 한다. 머리 잘 쓰면 몸이 상당히 편하다.

 

그럼 PairWise 조합테스팅 기법을 이용해보자

 

가상의 예를 들어 보면 이렇다

5개의 파라미터가 있고 각 파라미터가 가질 수 있는 값은 각 각 10가지일 경우

10만 가지의 테스트 케이스가 생긴다. 혹시나 더 다양한 값을 가지게 되면 엄청난 케이스가 만들어 진다. 테스트를 다하지 못 하는건 물론이겠거니와 TC작성 자체에 소비되는 시간도 엄청날 것 이다.

 

아래의 상황이 주어 졌다고 하자 ( 아래정보는 단순입력 값 이라 생각하자 )

( OS)                    ( WAS )                ( INTERMAX.ver)

XP                       Jeus4                   sp1

Win2003              jeus5                    sp2

Winpro                 jeus6                    sp3

Vista                    weblogic6             sp4

Sun                     weblogic7             sp5

hp                       weblogic8             sp6

linux                    websphere            sp7

 

7*7*7 = 343     343가지의 테스트가 이루어져야 한다

모두 할 수 있다면 더 할 나위 없이 좋겠지만 할 수 없다면 의미를 부여한 TC를 작성하자

 

PairWise방법은 대부분의 결함이 2개 요소의 상호작용에 기인한다는 것에 착안하여 2개 요소의 모든 조합을 다루는 것이다.

즉 페어와이즈 조합의 의미는 테스트를 하는데 필요한 각 값들이 다른 파라미터의 값과 최소한 한번씩은 조합을 이룬다는 것이다.

 

위의 정보로 작성한 PairWise조합은 다음과 같다

 

1

XP

Jeus4

sp1

3

2

XP

jeus5

sp2

3

3

XP

jeus6

sp3

3

4

XP

weblogic6

sp4

3

5

XP

weblogic7

sp5

3

6

XP

weblogic8

sp6

3

7

XP

Websphere

sp7

3

8

Win2003

Jeus4

sp2

3

9

Win2003

jeus5

sp1

3

10

Win2003

jeus6

sp4

3

11

Win2003

weblogic6

sp3

3

12

Win2003

weblogic7

sp6

3

13

Win2003

weblogic8

sp5

3

14

Win2003

Websphere

sp1

2

15

Winpro

Jeus4

sp3

3

16

Winpro

jeus5

sp4

3

17

Winpro

jeus6

sp1

3

18

Winpro

weblogic6

sp2

3

19

Winpro

weblogic7

sp7

3

20

Winpro

weblogic8

sp1

2

21

Winpro

Websphere

sp5

3

22

Vista

Jeus4

sp4

3

23

Vista

jeus5

sp3

3

24

Vista

jeus6

sp2

3

25

Vista

weblogic6

sp1

3

26

Vista

weblogic7

sp1

2

27

Vista

weblogic8

sp7

3

28

Vista

Websphere

sp6

3

29

Sun

Jeus4

sp5

3

30

Sun

jeus5

sp6

3

31

Sun

jeus6

sp7

3

32

Sun

weblogic6

sp1

2

33

Sun

weblogic7

sp2

3

34

Sun

weblogic8

sp3

3

35

Sun

Websphere

sp4

3

36

hp

Jeus4

sp6

3

37

hp

jeus5

sp5

3

38

hp

jeus6

sp1

2

39

hp

weblogic6

sp7

3

40

hp

weblogic7

sp3

3

41

hp

weblogic8

sp2

3

42

hp

Websphere

sp2

2

43

linux

Jeus4

sp7

3

44

linux

jeus5

sp1

2

45

linux

jeus6

sp5

3

46

linux

weblogic6

sp6

3

47

linux

weblogic7

sp4

3

48

linux

weblogic8

sp2

2

49

linux

Websphere

sp3

3

50

Win2003

jeus5

sp7

2

51

Winpro

jeus6

sp6

2

52

Vista

weblogic6

sp5

2

53

hp

weblogic8

sp4

2

 


343
의 테스트케이스를 53개로 줄였다

85%정도의 테스트케이스를 줄일 수 있다.

 

누군가는 이렇게 말할 수 있다.
 
“ 343
의 테스트케이스를 53개로 줄인 것이 뭐 어떻다는 것이냐!

나머지 부분에 대한 보장은 어떻게 할 것이냐!”

 

앞에서 말한봐와 같이 페어와이즈 조합테스팅은 모든 조합을 고려해 테스팅했을 때 발견할 수 있는 결함을 모두 발견 할 수 있는 것은 아니다 그러나 페어와이즈 조합 테스팅 기법을 사용하여 테스팅한 결과에 결함이 없다는 것까지는 보장성을 제공해준다.

 

위의 테스트케이스는 어디까지나 보장성의 한계를 설정하고 테스트를 좀더 효율적으로 하는데 목적이 있다.

 

특정 모듈에 대한 테스트에 한가지 기법만을 적용하지는 않는다. 위와 같은 보장한계를 명확히 할 수 있는 많은 기법들의 상호보완되는 점을 알고 테스트기법을 적용하고 테스트를 시행해서 주적 버그를 잡는 것이다.

 

댓글