막상 글을 쓰려니 내용에 대한 확신이 없어서 쉽게 써지질 않네요 -_-;; 틀린 내용을 유포했다가 잡혀가는건 아닌지 -_-;;
원래 블로깅을 하면서의 목적 중 하나가 공부한 내용을 남기는 것이었는데, 혼자 책보고 공부하는 내용을 올리는 것이라 그닥 확신이 없네요. 
사실 어느분이 '이건 틀려요, 이게 맞지 않나요?' 라고 말을 해주시면 저도 더 안목이 넓어지고 좋겠지만, 아쉽게도 이 블로그는 그리 방문객이 많은 편이 아니라 그런 토론할 기회조차 없네요. 이 블로그의 내용은 개인이 공부해서 올리는 내용이기 때문에, 틀린 내용이 있을 수 있음을 미리 감안하고 보시는게 좋을 것 같습니다. 

저번 포스팅에서 '수학적인' orthogonal array를 만들어 보았습니다. 그런데 'Software testing'에서 OA를 사용하는 이유 중 하나는 coverage의 희생을 최소화 하면서 test case의 수를 효율적으로 줄이기 위해서 입니다. 어떻게 줄일 수 있을까요?
물론 parameter의 모든 조합의 경우의 수를 다 테스트하는 것 (Exhaustive testing) 이 coverage가 더 높긴 합니다만, software의 특성상(?) 모든 parameter의 조합과 2개의 (pair) parameter의 조합에 의한 coverage가 큰 차이가 없다는 것을 전제로 합니다. 정말 그래? 라고 말할 수도 있지만, 많은 자료에서 실제로 그런 결과가 나온다고 하네요. 

어쨌든, OA를 이용한 test case의 최적화를 알아보겠습니다. Exhaustive testing에서는  k개의 parameter가 있고, 각 parameter가 v개의 값을 가지고 있다면, v의 k승 만큼의 tuple (test case)을 가지게 됩니다. 그러나 OA를 이용한다면 v의 제곱 만큼의 tuple을 가지게 됩니다. k는 갯수에 영향을 미치지 않습니다. 직접 만들어 보죠 ^^;

5개의 parameter가 있고 (k = 5), 각 parameter는 3개의 값 (v = 3)을 가지고 있는 경우의 test case최적화를 해보겠습니다. 


위와 같이 있다면, Exhaustive testing의 경우에는 3 x 3 x 3 x 3 x 3 = 243개의 조합이 있어야 합니다. 

OA를 작성할 때, k개의 parameter가 있다면, k - 2개의 Orthogonal Latin Square가 있어야 합니다. (Latin Square는 지난번 포스팅을 참조하세요)


위와 같이 3개의 Orthogonal Latin Square를 만들었습니다. 그리고 위의 3개의 orthogonal latin square를 합치겠습니다 (Superimposing)


근데 왜 k개의 parameter의 조합을 할 때, k-2개의 Latin Square가 필요할까요? 2개의 pair orthogonal 조합은 쉽게 만들어 낼 수 있기 때문입니다. 그건 바로 table의 row, column의 index입니다. table의 row, column을 조합에 포함시켜 위의 table을 array로 표현하면


아래 테이블이 완성된 OA를 이용한 Pair-wise 조합입니다. Result의 5개의 숫자 조합은 각 Parameter내 값이 index를 나타냅니다. (오른쪽에 다 표현해놨습니다 ^^)


위의 표를 살펴보면, 2개의 Parameter를 선택해서 (2개의 Column) 조합을 살펴보면, 2개의 column단위로는 모든 조합을 이루고 있음을 알 수 있습니다. 예를 들면 Param3, Param4의 조합을 보면

{(G,J), (G, K), (G, L), (H, K), (H, L), (H, J), (I, L), (I, J), (I, K)} 

을 모두 가지고 있음을 알 수 있습니다. 즉, 만약에 이렇게 2개의 parameter의 조합으로도 Exhaustive testing와 비슷한 coverage를 이룰 수 있다면, testing의 효율이 엄청나게 올라가겠죠 (243개 --> 9개, 약 97%의 resource 절약).

다음 포스팅때에는 Pair-wise를 만드는 또 다른 방법인 IPO (In Parameter Order)를 알아보도록 하겠습니다 ^^

'Software Testing > Knowledge Base' 카테고리의 다른 글

Combinational Analysis #3  (4) 2009.03.05
Combinational Analysis #2  (3) 2009.03.01
Combinational Analysis #1  (0) 2009.02.05
결함 정보는 Test case로 관리해라!!  (1) 2009.01.02
Issue Tracker (Bug Tracker)적용의 어려움  (1) 2009.01.02
Posted by yunseong
이전버튼 1 2 3 4 5 이전버튼