제목: 기능 설계 검증을 위한 테스트 케이스 도출(Generating Functional Design Verification Tests)
저자: Susana Stoica, Ford Motor Company, Industry
문서유형: 저널 페이퍼(총 11페이지), 1999년
orthogonal array 기반의 테스트 케이스 도출 방법인 RTM(the robust test method) 방법을 예를 들어 설명한 자료
RTM(The robust test method) 이란
- 직교배열(orthogonal arrays)에 기반한 기능 테스트 케이스 도출 방법
- 동시에 상태가 변하는 다수의 컴포넌트 또는 다수의 입력 엔터티간의 인터액션 테스팅(interaction testing)에 적절한 방법
- 직교 배열은 테스트 대상 범위를 균형 있게 커버하는데 기여한다(모든 입력 값이 테스트에서 커버되고, 커버되는 횟수도 동일하다).
History
- 50~60년대 일본 기업의 높은 품질의 제품 생산 노력의 일환으로 Genichi Taguchi가 직교배열(orthogonal arrays)을 활용하는 Design of Experiments 기법을 개발
- 80년대 AT&T의 Madhav Phadke가 직교배열을 소프트웨어 테스팅에 적용하는 방법을 정의
- 1994년 Madhav Phadke가 자신의 테스트 방법(RTM)을 Ford Motor Company에 소개. 서브시스템의 기능 설계 검증에 효과적으로 사용됨
- RTM은 다구치가 사용했던 것과 동일한 직교배열 집합을 사용하지만, 다구치의 design-of-experiments 방법이 프로세스 패러미터 변형(process parameter variations)을 다루었던 것에 반해 RTM은 테스트 대상 디바이스의 기능적 입력 값(functional input values)에 중점을 둠
RTM 적용 예 – 버전 A
RTM 방법을 설명하기 위해 아래와 같은 가상의 오디오 시스템을 가정한다.
1) 오디오 시스템 명세
이 시스템은 On 또는 Off 상태를 가지는 여러 오디오 컴포넌트(라디오, 폰, 테이프 덱, CD 플레이어, TV 세트)로 구성되어 있다. 이 컴포넌트들은 시작키(the ignition key)가 On 상태일 때만 동작하므로 시작키의 상태도 하나의 변수(variable) 또는 인자(factor)로 여긴다. 아래 표는 오디오 시스템의 입력 인자 및 인자의 레벨(해당 인자가 가질 수 있는 값)을 우선순위가 높은 순서대로 리스트하고 있다.
위의 인자들은 아래와 같은 기능 요구사항을 가진다(인자들 간의 interdependency가 존재).
1. 시작키가 Off이면, 그 외 모든 것이 Off이다.
2. 폰이 On이면, 그 외 모든 것이 Off이다.
3. 폰이 Off 일 때 TV 가 On이면, 그 외 모든 것은 Off가 된다.
4. 폰과 TV가 Off 인 상태에서 CD 플레이어가 On이면, 라디오와 테이프 덱은 Off가 된다.
5. 폰, TV, CD 플레이어가 Off인 상태에서 테이프 덱이 On이면, 라디오는 Off가 된다.
2) 도출해야 할 최소 테스트 케이스 수 산정
이 예제 시스템은 6개의 인자(inputs)가 존재하며, 각 인자는 두 개의 레벨 값을 가진다. 이 시스템의 최소 테스트 케이스 수를 산정하는데 아래의 두 가지 패러미터를 고려한다.
1) 총 자유도 수(the total number of degrees of freedom): Nfr = 1 + 6 ´ (2-1) = 7
2) 전체 인자 중 가장 높은 레벨을 가진 인자 두 개의 레벨을 곱한 값(the product of the number of levels of the two highest-level count factors): Ph = 2 ´ 2 =4
최소 테스트 케이스 수: Tmin = MAX (Nfr, Ph),
산정된 최소 테스트 케이스 수는 7이다.
3) 직교배열(orthogonal array) 선정
RTM 방법은 테스트 대상 범위를 균형 있게 커버하는 최적의 인자 조합을 만들기 위해 직교배열을 활용한다(직교배열 목록은 the design of experiments 기법을 다루는 책에서 찾을 수 있음). 사용할 직교배열은 테스트 대상 시스템의 최소 테스트 케이스 수, 인자 수, 각 인자의 레벨 수에 의해 정해진다. 예를 들어, L36 (211 ´ 312) 직교 배열은 총 23개 인자를 위한 36개의 테스트 케이스를 가진다. 이 23개 인자 중 11개 인자는 2개의 레벨을 가지고 있고 나머지 12개 인자는 3개의 레벨을 가지고 있다. 예제로 사용된 오디오 시스템의 경우 7개의 테스트 케이스와 6개의 인자(각 인자는 2개의 레벨을 가짐)가 있으므로, 이를 매핑할 수 있는 직교배열이 필요하다. 이 조건들을 만족시키는 가작 작은 직교배열은 L8(27)이다. 아래 제시된 L8(27) 직교배열은 테스트 케이스 수가 8이고(> 7), 2개의 레벨로 된 인자를 7개 지원한다(> 6).
직교성이란? 왜 직교배열이라고 하는가?
- 배열의 각 열(factor)에서 레벨 값(1과 2)의 등장 빈도가 항상 동일
- 두 개 factor가 쌍으로 조합되는 경우, 각 레벨 값의 조합되는 횟수가 동일. 즉, 4가지 조합 패턴(1-1, 1-2, 2-1, 2-2)이 같은 빈도로 등장한다.
L8(27) 직교배열은 필요한 것 보다 인자가 하나 많으므로 열을 한 개 삭제할 수 있다. 배열이 직교성을 가지므로 어떤 열을 삭제해도 무방하지만, 이 경우 7번째 열을 삭제하기로 한다. 테스트 케이스를 도출하기 위해 테스트 대상 시스템의 인자를 직교배열의 열에 매핑하고, 배열의 레벨 번호(즉, 1과 2)는 시스템 인자의 레벨 값으로 대체한다. 아래는 오디오 시스템에 적용된 L8(27) 이다.
4) 요구사항 커버리지 확인
다음 단계는 앞서 기술한 시스템의 5개 요구사항이 직교배열에 제시된 테스트 케이스로 커버가 되는지 확인하는 것이다. 요구사항 1, 2를 커버하는 테스트 케이스는 충분히 있지만, 요구사항 3, 4, 5를 커버하는 테스트 케이스는 충분하지 못하다(요구사항 4는 테스트 케이스 3번으로 커버되는 것 같은데…). 해결 방법으로 아래 표처럼 모든 테스트 케이스에서 시작키가 항상 On이라는 가정하에 추가적인 직교배열을 생성하는 것이다(이전 배열과는 좀 달라진 인자 조합을 얻기 위해 레벨 값 할당도 일부 변경함).
RTM 적용 예 – 버전 B (직교배열의 인자 및 레벨 조정 방법)
선택할 수 있는 직교배열의 수는 제한적이고 테스트 대상 시스템의 인자가 직교배열과 정확히 맞아 떨어지는 경우가 별로 없어서, 매핑을 위해 직교배열을 조정하거나 또는 테스트 대상시스템의 요구사항을 조정 한다. 조정하는 방법으로 열 합병(merging columns), 가상 레벨 추가(adding dummy levels), 인자 조합(compounding factors) 세 가지가 있다.
1) 시스템 명세
조정을 통해 직교배열을 사용하는 방법을 설명하기 위해 앞에서 나온 오디오 시스템의 명세를 아래처럼 변경한다. 시작키는 3개의 레벨(Accessory, Run, Off)을 가지며, 폰도 Hold라는 새로운 레벨 값이 추가되었다(다른 컴포넌트들 관점에서 보면 Hold는 Off와 동일). 테이프 덱은 3개의 레벨을 가지고, 라디오는 총 4개의 레벨을 가진다. 이 경우 인자들이 각기 다른 수의 레벨을 가지므로 이 요구사항에 정확하게 들어맞는 직교배열을 선택할 수 없다.
2) 최소 테스트 케이스 수 산정
Nfr = 1 + 3 ´ (3 - 1) + 2 ´ (2 - 1) + 1 ´ (4 - 1) = 12
Ph = 4 ´ 3 = 12
Tmin = MAX(Nfr, Ph) = 12
3) 직교 배열 선정
직교배열 목록에 L12가 있지만 모든 인자가 두 개의 레벨만을 가지고 있고 열 조정(column manipulation)도 허용되지 않아서 L12는 사용할 수 없다. 그 다음으로 적합한 배열은 4개 레벨로 된 5개의 인자가 있는 L’16(45)이다. 인자수가 필요한 것보다 하나가 부족하므로 조정이 필요하다. 위 명세에서 2개의 레벨을 가진 인자 두 개를(TV와 CD) 조합하여 4개 레벨을 가진 하나의 인자로 만들면 L’16(45)의 인자수에 맞출 수 있게 된다. 즉, 아래와 같이 조합된다.
Level 1 = TV와 CD가 둘 다 Off
Level 2 = TV는 Off, CD는 On
Level 3 = TV는 On, CD는 Off
Level 4 = TV와 CD가 둘 다 On
L’16(45)는 4개의 레벨로 된 인자들로 구성되어 있는 반면 시스템 명세에는 레벨이 3개인 인자들이 존재하므로(시작키, 폰, 테이프 덱), L’16(45)를 사용하기 위해서 또 다른 기법인 가상 레벨(dummy levels)을 적용해 부족한 부분을 채운다. 인자의 레벨 값들 중 중요도가 높은 것이나 또는 타 인자들을 테스트 하는데 도움이 되는 레벨 값이 가상 레벨로 사용된다. 예를 들어, 테이프 덱 인자의 가상 레벨로 Off가 사용되었는데, 이것이 다른 두 개의 레벨 값(Side1, Side2)보다 특별히 더 중요성을 띄지는 않지만 이웃 라디오 인자의 상태를 테스트 할 더 많은 기회를 제공한다. 아래는 테스트 대상 시스템에 적용한 L’16(45)를 보여준다.
L’16(45) 배열 외에 또 다른 옵션으로 L18(21 ´ 37) 직교배열을 사용하는 방법이 있다. 4 레벨을 가진 인자(라디오)를 표현하기 위해서 L18(21 ´ 37)의 열 두 개를 병합한다. 아래 표처럼 첫 번째와 두 번째 열을 병합하여 6 레벨의 인자열을 만들고 나머지 인자열은 3 레벨을 가지도록 가상 레벨을 추가하였다. TV와 CD는 Off 상태를 가상 레벨로 추가하였고(Off’로 표시), 라디오에서는 FM2’와 AM’이 추가된 가상 레벨이다. 할당된 것이 없는 8번째 열은 표에서 제외.
RTM 적용 예 – 버전 C (테스트 케이스 수를 줄이는 슬라이딩-레벨 기법)
슬라이딩-레벨 기법과 필수적이지 않은 인자 레벨들을 제외 하는 방법으로 테스트 케이스 수의 감소가 가능하다. 즉, 더 작은 규모의 직교배열로 테스트 요구사항을 충족시킬 수 있다.
1) 시스템 명세
라디오 인자가 10 레벨(3개의 AM, 3개의 FM1, 3개의 FM2, 그리고 Off)로 늘어난 더 복잡한 오디오 시스템을 가정한다(아래 표 참조).
2) 최소 테스트 케이스 수 산정
Nfr = 1 + 2 ´ (2 - 1) + 3 ´ (3 - 1) + 1 ´ (10 - 1) =18
Ph = 10 ´ 3 = 30
Tmin = MAX(Nfr, Ph) = 30
테스트 케이스 수를 30보다 작게 하기 위해 슬라이딩-레벨(the sliding-level) 기법을 이용한다. 즉, 높은 레벨을 가진 라디오 인자를 상대적으로 적은 레벨로 된 두 개의 인자로 재 표현한다. 한 인자는 라디오 밴드(AM, FM1, FM2, 또는 Off)를 나타내고 또 다른 인자는 밴드의 파장(wavelength)을 나타낸다. 예를 들어 직교배열에서 Radio = FM1과 Radio level = 2를 조합하면, FM1의 95.5를 테스트 하는 것이다. 아래는 슬라이딩-레벨 기법으로 오디오 시스템의 명세를 조정한 것이다.
변형된 명세 버전으로 최소 테스트 케이스 수를 재 산정하면 아래와 같다.
Nfr = 1 + 4 ´ (3 - 1) + 2 ´ (2 - 1) + 1 ´ (4 - 1) = 14
Ph = 3 ´ 4 = 12
Tmin = MAX(Nfr, Ph) =14
3) 직교배열 선정
이 경우 2 레벨 인자 두 개와,
3 레벨 인자 4개, 4 레벨 인자 한 개를
표현할 수 있는 직교배열이 필요하다. 아래 표처럼 L18
(21 ´ 37) 배열이 이 기준을 맞출 수 있다.
RTM 적용 예 – 버전 D (테스트 케이스 수를 줄이는 방법)
1) 시스템 명세
테스트 케이스 수를 감소하는 또 다른 방법으로 모든 가능한 조합들의 중요도를 분석하여 중요도가 적은 테스트 케이스가 있다면 이를 직접 제거한다. 만약 모든 조합들이 중요하여 테스트가 필요하다면, 테스트 케이스 집합을 규모가 작은 여러 집합으로 나눌 수 있다. 예를 들어, 각 라디오 밴드의 파장 레벨을 전부 테스트 할 필요 없이 두 개만 확인하면 충분한 경우, 파장 두 개를 바꾸어 가면서 테스트 하고 TV와 CD 인자는 병합하는 방식으로 명세를 조정할 수 있다(아래 표 참조).
가장 높은 레벨이 4 이고 인자가 5개인 이 명세는 L16’(45) 배열에 매핑할 수 있다. 라디오의 상태를 더 잘 커버하기 위해서 TV+CD에서 그다지 많은 정보를 생성하지 않는 “On/Off” 상태를 “Off/Off”로 대체했다.
위 배열에 설계된 테스트 케이스를 이용하여 시스템 컴포넌트들 간의 상호작용(interaction)이 정확한지를 테스트 하고, 이것 만으로 라디오 스테이션 자체의 검증이 부족하다고 판단되는 경우 이를 위한 별도의 테스트 케이스 집합을 도출 할 수 있다.
RTM 적용 예 – 버전 E (State-dependent tests)
특정 인자의 상태가 이전 상태(a previous state)에 의존하는 경우가 있는데, 이를 설명하기 위한 새로운 버전의 오디오 시스템은 폰과 라디오만으로 구성되어 있고 아래와 같은 요구사항을 가진다.
1) 시스템 명세
1. 시작키(The ignition key)는 Off, Acc., Run, Crank(잠금)의 4개 상태를 가진다.
2. 시작키가 Off이면, 그 외 모든 것이 Off이다.
3. 시작키가 Crank이면, 폰과 라디오가 사용불가(disabled)가 된다.
4. 폰이 On이면, 라디오가 On이더라도 소리가 들리지 않는다.
5. 폰이 Hold 또는 Off 상태이고 라디오가 On이면, 라디오 소리가 들린다.
6. 라디오는 AM, FM1, FM2 밴드를 가진다.
7. 라디오는 증가(Seek_U) 또는 감소(Seek_D)하면서 다른 라디오 스테이션을 찾는 Seek 키를 가진다.
8. 라디오가 Seek 동작을 하다가 밴드의 끝에 도달하면 이 라디오 밴드의 다른 끝이 다음 스테이션으로 선택된다. 예를 들어 스테이션이 107.5 MHz 일 때 Seek_U(FM)를 누르면 다음 스테이션으로 선택되는 것은 88.7 MHz이다. 88.7 스테이션에 있을 때 Seek_D를 누르면 라디오가 107.5를 다음 스테이션으로 선택한다.
9. 폰이 On일 때 Seek_U와 Seek_D 기능이 사용불가(disabled)가 된다.
아래 표는 각 인자의 이전 레벨 값과 다음 레벨 값을 명세하고 있다.
라디오 스테이션 파장(wavelength)은 선택된 스테이션에 따라 값이 달라지는 슬라이딩 레벨(Rlevel)로 정의되었다. 아래 표는 라디오 스테이션 파장 값들을 보여준다. (왜 FM1/FM2 구분이 안되어 있나?)
2) 최소 테스트 케이스 수 산정
위 명세에 따르면 버전 E 오디오 시스템은 3 레벨의 인자 3개, 4 레벨의 인자 4개, 6 레벨의 인자 1 개를 가지고 있다.
Nfr = 1 + 3 ´ (3- 1) + 4 ´ (4 - 1) + 1 ´ (6 - 1)= 24
Ph = 6 ´ 4 = 24
Tmin = MAX(Nfr,Ph) = 24
3) 직교배열 선정
최소 24개의 테스트 케이스를 가지고 8개 인자를 지원하는 직교 배열이 필요하다. L25(56) 배열은 테스트 케이스 수는 적당하지만 5 레벨의 인자 6개 만을 지원하므로 충분하지 않고, L’32(21 ´ 49)가 요구를 만족시키는 가장 작은 직교배열이다. 아래 표와 같이 테스트 케이스 도출을 위해 첫 번째와 두 번째 열을 조합하였다.
표에서 * 는 의미가 없는 경우이므로 건너 띈다는 표시이다. 위
표에서는 테스트 케이스를 완성하기 위해 예상 결과(expected results)도 기술한다.
RTM 테스팅이 효과적이기 위한 선결 조건
RTM 방법으로 양질의 테스트 케이스를 도출할 수 있으려면 아래와 같은 조건이 만족되어야 한다.
- 테스트 대상 시스템의 잘 정의된 요구사항 명세가 존재하고 사용 가능해야 한다.
- 이 명세를 꼼꼼하게 검토하고 이해할 수 있는 충분한 시간이 테스트 엔지니어에게 주어져야 한다.
- 데이터를 만들고 직교 배열을 선정하는 사람이 충분한 지식과 경험을 가지고 있어야 한다.
'테스트케이스설계기법별 > 명세 기반' 카테고리의 다른 글
원인-결과 그래프(Cause-Effect Graph) 테스팅 (1) | 2020.10.12 |
---|---|
문서요약 - 조합 테스팅(COMBINATORIAL TESTING) by Kuhn (0) | 2020.04.27 |
문서요약 – 직교 배열표 테스팅 기법 by Harrell (0) | 2020.04.13 |
페이퍼요약 - 이벤트 시퀀스를 활용한 효과적인 상호운용성 테스팅 방법 by Kuhn (0) | 2020.04.06 |
문서요약 - 커버링 어레이 소개 by NIST (0) | 2020.03.30 |