본 글은 Microsoft Press의 How to Test Software at Microsoft와  'An Evaluation of Combination Strategies for Test Case Selection' (Mats Grindal et al) paper를 참조했음을 미리 밝힙니다.



어떤 한 Test case의 parameter가 여러개 일 때, 이들을 어떻게 조합시킬 수 있을까요? 일반적으로 2가지 방법이 있습니다. 

첫째는 Random 혹은 ad-hoc 방식으로 조합하는 것입니다. 이 것은 tester의 능력과 경험에 따라 다른 결과가 나올 수 있으며 운에 따라 결과가 영향을 받을 수도 있습니다. 이 부분은 논외로 하겠습니다 ^^;

두번쨰는 좀더 제어를 가능하게 하여 시스템적인 접근을 하는 것입니다. 이러한 방법 중에는 EC (Each Choice), BC (Base Choice), OA (Orthogonal Array), 그리고 Exhaustive Test 등이 있습니다. EC부터 살펴보겠습니다. 

EC는 가장 단순한 Test case combination technique입니다. 1-wise test로 볼 수도 있습니다. 예를 들어 설명하는 것이 가장 이해가 빠를 것 같네요 

  1. p1 = {v1, v2, v3}
  2. p2 = {v4, v5, v6}
  3. p3 = {v7, v8}

위와 같이 각각의 parameter는 다른 값과 다른 갯수를 가지고 있다고 가정합니다. 물론 각각의 parameter는 다른 parameter에 대해 독립적입니다. (영향을 받지 않습니다. 영향을 받는 다면 그것은 하나의 parameter로 묶어야 합니다). 

tc(n) = f(p1, p2, p3)라 표현한다고 가정하면, EC의 경우에는 다음과 같이 조합될 수 있습니다.
  1. tc(0) = f(v1, v4, v7)
  2. tc(1) = f(v2, v5, v8)
  3. tc(2) = f(v3, v6, v7)

위와 같이 조합할 수 있습니다. 위의 parameter를 분석해보면, p1이 가질 수 있는 3개의 값을 모두 한번 씩 이용했고 (coverage를 확보했고), p2, p3역시 모두 마찬가지 입니다. 단, tc(2)를 보면 이미 위에 나와있던 v7이 다시 나왔습니다. 이는 p3가 갖는 value의 갯수가 하나 적으므로, 중복되게 들어간 것입니다. 위의 값을 보면 알 수 있듯이, 모든 값이 각각 한번씩 선택되었습니다. (Each Choice). EC의 경우 test case의 갯수는 가장 많은 value를 가진 parameter의 value 갯수가 됩니다. 

2번째로 BC (Base Choice)를 알아보겠습니다. BC역시 1-wise test이지만, BC의 coverage는 n-wise test에 뒤지지 않는다는 연구결과가 있다고 합니다. 어쨌든 한번 조합을 만들어보겠습니다. 
BC의 Key point는 'Base Case'가 있어야 한다는 것입니다. 이 base case는 사용자의 관점에서 가장 선택될 빈도가 높고, 단순하며, 일반적으로는 정상동작할 수 있는 것을 선택하는 것이 좋습니다. (Most common, Most normal)

Assume that base case is [v1, v4, v7] 

위처럼 가정하면, 다음과 같은 parameter의 조합이 나오게 됩니다.
  1. tc(0) = f(v1, v4, v7)
  2. tc(1) = f(v2, v4, v7)
  3. tc(2) = f(v3, v4, v7)
  4. tc(3) = f(v1, v5, v7)
  5. tc(4) = f(v1, v6, v7)
  6. tc(5) = f(v1, v4, v8)

위에 주황색으로 표시한 부분을 제외하면 모두 base case의 값을 유지하고 있습니다. 즉, base case에서 하나의 parameter에만 변경을 주어 해당 variation에 대한 동작의 추이를 볼 수 있는 조합법 입니다.  BC의 coverage를 모두 만족하는 test case의 최소 갯수는 1 + (각 parameter의 value 갯수 - 1)입니다.  즉, 위의 예를 들면, 1 + (3 - 1) + (3 - 1) + (2 - 1) = 6 입니다. (사실 ∑를 써서 표현해야 하는데, 잘 못쓰겠네요 -_-;;)

다음은 OA (Orthogonal Array, 직교배열) 입니다. 이 것은 다음 post에....

'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 이전버튼