...
직교 배열 테스트 Orthogonal Arrays(이하 OA)
- 직교 배열의 행x열 조합이 겹치지 않도록 하는 기법
- 모든 워소가 pairwise하여 비용 효율적
[직교 배열표 관련 용어]
❏ 런(Runs): 배열표에서 행의 수. 직교 배열표 기법에 의해 생성되는 테스트케이스 수
❏ 인자(Factors): 배열표에서 열의 수. 해당 배열표가 취급할 수 있는 변수들의 최대 수
❏ 레벨(Levels): 개별 인자가 취할 수 있는 값들의 최대 수. 직교 배열표가 0에서부터 레벨-1까지의 값들을 포함하게 됨
❏ 강도(Strength): 서브셋 열의 수 t. 선택된 t개 열의 모든 레벨 조합이 동등한 빈도로 직교 배열표에 등장함
아래 예와 같은 강도 2(t=2)의 직교 배열표에서는 어떤 두 개 열을 선택하더라도 그 값들의 모든 페어와이즈 조합이 균등하게 분배되어 있다.
[런=9, 인자=4, 레벨=3, 강도=2인 L9(34) 직교 배열표]
L런(레벨^인자)
[직교 배열표 테스팅 적용 방법]
① 단계1: 얼마나 많은 독립 변수들이 상호 작용 측면에서 테스트 될지 결정한다. 이게 직교 배열의 인자(Factors)로 매핑된다.
② 단계2: 각 독립 변수가 취하게 될 값들의 최대 수를 결정한다. 이게 직교 배열의 레벨(Levels)로 매핑된다.
③ 단계3: 최소 런(Runs) 수를 가지는 적절한 직교 배열표를 찾는다. 적절한 직교 배열표란 최소한 단계1에서 결정된 인자 수와 단계2에서 식별된 각 인자의 레벨 수 만큼이 포함될 수 있는 것을 말한다.
④ 단계4: 인자와 그 값들을 직교 배열표 상에 매핑한다.
⑤ 단계5: “남겨진(left over)" 레벨이 있는 경우 이를 위한 값들도 결정하여 할당한다.
⑥ 단계6: 각 런을 테스트케이스로 변환한다. 직교 배열표에 의한 생성에는 포함되지 않지만 특별히 의심스러운(우려가 되는) 조합이 있다면 이를 테스트케이스 셋에 추가한다.
[OA를 적용할 경우의 주의 사항]
- 동치 분할, 경계값 분석 등의 기법으로 범위를 축소한 이후에 그 결과를 가지고 OA를 적용해 본다.
- OA를 이용해서 효과를 보기 위해서는 파라메터와 레벨을 선정하는 과정이 매우중요하다. 따라서, 적절한 파라메터나 레벨을 찾는 과정은 해당 제품의 전문가나 제품 코드를 알고 있는 개발자 또는 다른 테스트 엔지니어의 조언이 필요하다.
- OA의 목적은 철저하게 테스트 하는 것이 아니라 테스트 케이스를 최소화 하는것이기 때문에, Critical Application에 이를 적용하는 것은 법적인 문제와 여러 다른 문제를 야기할 소지가 있다. 적용 범위에 대해서는 OA의 위험성을 충분히 인지한 이후에 사용해야 한다.
- OA는 정해진 논리에 입각해 최적의 케이스를 추려주는 것으로 입력 파라메터와 레벨을 잘 선정하지 않으면 원하는 결과를 얻을 수 없다. 다시 한 번 강조하지만 파라메터와 레벨을 잘 선정하는 것이 중요하다.
[OA 적용이 적합한 테스트 유형]
+ API Test
+ GUI Test
+ Configuration Test(SW, HW 호환성 테스트)
예)
웹 페이지가 상단, 중간, 하단의 세 구획(sections)으로 구분되어 있고, 사용자가 각 구획을 개별적으로 보이게 하거나 감출 수 있음. 이 세 구획들의 상호 작용을 테스트하고자 할 때, 직교 배열표 기법을 사용하여 아래와 같이 테스트케이스 셋을 생성한다.
단계1: 3개의 독립 변수(웹페이지의 세 개 구획)가 존재함.
factor = 3
단계2: 각 변수가 2개의 값(숨김, 보임)을 취할 수 있음
level = 2
단계3: 레벨=2이고 인자=3이므로 이 시스템을 테스트하기 위해 L4(2^3) 직교 배열표를 선택함. 적절한 직교 배열표를 고르는데 있어서 런의 수는 필수적이지 않음
단계4: 이 예를 선택된 직교 배열표에 매핑하면 아래와 같음. 숨김(Hidden)=0, 보임(Visible)=1
단계5: 남겨진 레벨이 없음(즉, 배열표에서 모든 레벨에 매핑된 값이 있다).
단계6: 각 런으로부터 테스트케이스를 취하면 총 4개의 테스트케이스가 생성됨. 즉, 3개 변수 간의 모든 페어와이즈 상호 작용을 테스트하는데 필요한 테스트케이스 수가 4이다. 이 테스트케이스들을 해석하면 아래와 같다.
- Test 1. 홈 페이지를 디스플레이하고 모든 구획을 감춘다.
- Test 2. 홈페이지를 디스플레이하고 상단(Top) 구획을 제외한 모든 구획을 보이게 한다.
- Test 3. 홈페이지를 디스플레이하고 중간(Middle) 구획을 제외한 모든 구획을 보이게 한다.
- Test 4. 홈페이지를 디스플레이하고 하단(Bottom)을 제외한 모든 구획을 보이게 한다.
멀티레벨 직교 배열표 예)
5개의 독립 변수(A, B, C, D, E)가 있는 시스템에서 변수 A와 B가 각각 2개 값, 변수 C와 D는 각각 3개 값, 그리고 변수 E는 6개 값을 가지고 있음. 이 시스템의 가능한 조합 전부를 테스트하려면 216개의 테스트케이스(2 x 2 x 3 x 3 x 6 = 216)가 필요함. 반면 직교 배열표 기법을 사용하면 18개의 테스트케이스로 모든 페어와이즈 조합을 테스트하는게 가능함
단계1: 5개의 독립 변수가 존재함
단계2: 5개의 변수 중 2개 변수는 2개 값을 취할 수 있고, 다른 2개 변수는 3개 값을 취할 수 있으며, 나머지 한 개 변수는 6개 값을 취할 수 있음
단계3: 적절한 직교 배열표를 찾기 위해 직교 배열표 카달로그에서 적어도 5개 인자와 6개 레벨을 갖는 배열표를 찾는다. 이 조건에 맞는 가장 작은 배열표로 L49(78)이 있음. 단일 레벨을 가진 이 배열표를 선택하면 49개의 테스트를 생성하게 됨. 레벨 수가 하나로 통일되지 않은 혼합 레벨 직교 배열표도 일부 존재하는데, 그 중 우리 조건에 맞는 최소 배열표로 L18(3661)가 있다(7개 인자를 위한 18개 런이 존재하며, 6개 인자는 3레벨을 나머지 한 개 인자는 6레벨을 가짐). 이 멀티레벨 배열표를 선택하면 테스트 셋의 테스트케이스 수가 처음 식별된 49개에서 18개로 감소됨
단계4: 선택한 멀티레벨 배열표에 아래 값들을 매핑한다.
- 변수 A: 값 A1=0; 값 A2=1.
- 변수 B: 값 B1=0; 값 B2=1.
- 변수 C: 값 C1=0; 값 C2=1; 값 C3=2.
- 변수 D: 값 D1=0; 값 D2=1; 값 D3=2.
- 변수 E: 값 E1=0; 값 E2=1; 값 E3=2; 값 E4=3; 값 E5=4; 값 E6=5.
[인자 매핑 전의 직교 배열표]
[인자 매핑 후의 직교 배열표]
단계5: 배열표에 필요하지 않는 여분의 인자가 있는데 이는 무시하고 빈칸 처리한다(그림에서 회색 빈칸 부분). 또한 배열표에 “남겨진(left over)" 레벨들도 존재한다. 변수 A와 B를 위해 원래 배열표에는 3개 레벨이 주어졌지만 해당 변수들이 단지 두 개 값만을 취하므로 매핑 후에 한 개의 레벨이 남겨지게 됨(그림에서 노란색으로 표시됨). 완전 명세된 테스트케이스를 얻기 위해서 이 남겨진 레벨의 셀에 테스터가 임의로 인자 값을 채워 넣게 됨
단계6: 총 18개 테스트케이스가 직교 배열표 기법에 의해 생성됨
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.