The Korean Society Of Automotive Engineers

Current Issue

Transactions of the Korean Society of Automotive Engineers - Vol. 32 , No. 4

[ Article ]
Transactions of The Korean Society of Automotive Engineers - Vol. 27, No. 2, pp. 85-92
Abbreviation: KSAE
ISSN: 1225-6382 (Print) 2234-0149 (Online)
Print publication date 01 Feb 2019
Received 06 Aug 2018 Revised 13 Sep 2018 Accepted 14 Sep 2018
DOI: https://doi.org/10.7467/KSAE.2019.27.2.085

분류트리방법과 상태천이시험법을 결합한 모터제어기의 체계적인 기능 시험 방법
이우택*, 1) ; 정호영1) ; 권재희2)
1)창원대학교 제어계측공학과
2)한양대학교 미래자동차공학과

Systematic Function Test Method of Motor Controller Using Classification-tree Method and State Transition Test Method
Wootaik Lee*, 1) ; Hoyoung Jeong1) ; Jaehee Kwon2)
1)Department of Control and Instrumentation Engineering, Changwon National University, Gyeongnam 51140, Korea
2)Department of Automotive Engineering, Hanyang University, Seoul 04763, Korea
Correspondence to : *E-mail: wootaik@changwon.ac.kr


Copyright Ⓒ 2019 KSAE / 159-01
This is an Open-Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License(http://creativecommons.org/licenses/by-nc/3.0) which permits unrestricted non-commercial use, distribution, and reproduction in any medium provided the original work is properly cited.
Funding Information ▼

Abstract

A systematic function test technique is proposed, and its feasibility is evaluated through a practical motor controller function test. This technique organizes the test case generation procedure in four phases to derive the test cases systematically, and combines conventional test techniques to cover all the aspects of functions-under-test in a unified manner. The proposed technique is mainly based on a classification-tree method, and adopts a state transition test method to cover the functions of dynamic systems without missing any test case and with less redundancy in test cases. Considering whether or not the inputs of functions-under-test are related with system states, the inputs are classified into basic inputs, discrete-state inputs, and continuous-variable dynamic inputs. The dynamic functions are modeled as state-machine, and test sequences are derived by using a state-transition tree to cover all the states and the transitions of the state-machine. The classification-tree method framework represents all derived test sequences in a graphic manner, and alleviates testers’ difficulties by managing test cases.


Keywords: Classification-tree method, State-transition test method, Function test, Discrete-event dynamic function, Continuous variable dynamic function, Equivalence partitioning, Boundary value analysis
키워드: 분류트리방법, 상태천이시험법, 기능시험, 이산-이벤트 동적 기능, 연속변수 동적 기능, 동등분할, 경계값 분석

1. 서 론

최근 차량의 연비 향상과 사용자 편의 증가를 위하여 모터를 이용한 제어 시스템의 적용이 급격히 증가하는 추세이다. 급변하는 시장에서 경쟁력을 확보하기 위하여 제조사와 부품사들은 제어시스템을 신속하게 개발할 수 있는 능력을 갖추어야만 한다. 설계 단계에서는 모델기반의 개발 방법이 사용되어 개발기간을 단축하고 있다. 이를 위하여 시험단계에서도 여러 가지 방법이 제안되고 있다.1) 또한 다양한 기능이 추가되어 시험의 복잡도가 높아지고, ISO26262와 같은 기능안전에 대한 요구가 높아지면서 체계적이고 효율적인 시험의 중요성은 더욱 커지고 있다.2)

효율적인 시험을 위해서 시험 자동화를 도입하여 인력과 시간을 줄여가고 있다.3) 다른 한편으로는 시험자의 경험과 직관에 근거하여 시험케이스를 도출하는 대신, 이론에 근거한 체계적인 도출 방법에 대하여 활발히 연구하고 있다.

단위부품이나 단위소프트웨어는 비교적 간단한 방법으로 시험케이스를 도출할 수 있다. 시스템의 입력을 적절히 분할하여 시험 케이스를 도출하는 등가분할, 경계값 분석과 같은 방법이 이에 해당한다.

그러나 입력이 여러 가지 이거나, 상태를 갖는 기능을 시험할 경우에는 위와 같은 단순한 방법으로 할 수 없으므로, 여러가지 새로운 방법이 제시되고 있다.4) 이산 상태를 갖는 시스템을 위하여 상태와 천이조건을 고려한 상태천이시험법이 제안되었다.5,6) 아울러 여러 입출력에 대하여 다양한 시험케이스를 도출하고 효율적으로 관리하는 방법으로 분류트리방법이 제안되어 활발하게 사용되고 있다.7-9)

시스템 기능 시험을 효율적으로 하기 위해서는 필요한 수준으로 커버리지를 갖추고 불필요한 중복요소를 최소화 하는 시험케이스를 도출하는 것이 중요하다. 기존의 시험 방법은 개별적인 기능에 대해서는 적용이 가능하나, 포괄적으로 체계적인 시험 케이스를 도출하고 관리하기에는 불충분하다.

이 논문에서 시험 대상 시스템의 입력과 상태를 고려하여, 전체 커버리지를 갖고 중복을 최소화한 시험 케이스를 도출하는 체계적인 방법을 제시한다. 여러 시험들을 분류트리방법을 사용하여 효율적으로 도출하고 관리하도록 하고, 상태를 갖는 기능은 상태천이시험방법을 활용하여 시험의 커버리지를 높이도록 한다.

2장에서 일반적인 기능시험 방법들을 설명하고 각 방법의 핵심적인 요소들과 장단점을 살펴본다. 3장에서 상태천이시험방법을 활용하여 분류트리시험방법을 개선한 체계적인 시험법을 제시한다. 아울러, 모터제어기의 대표적인 기능 중에 하나인 주파수변화 기능을 예로 들어 설명한다. 결론에서 제안하는 시험 방법의 특징에 대하여 정리한다.


2. 일반적인 기능시험 방법

시스템 기능시험이란 시스템이 기능 요구사항 명세에 부합하는지를 확인하는 시험이다. 기능시험은 설계에 대하여 수행하기도 하지만 기본적으로는 사용자의 기대에 맞게 동작하는지를 확인하는 과정이다. 그러므로 하드웨어, 혹은 소프트웨어의 기능에 대해서만 시험하는 것이 아니라 통합된 시스템을 대상으로 시험하여야 한다.

일반적으로 기능시험은 시스템 혹은 소프트웨어 내부 구조에 대하여 상세한 이해 없이 예상되는 동작을 잘 수행하는지를 확인하는 시험이므로 블랙박스시험이라고도 한다. 한편 명세서에 맞게 동작하는지를 확인하므로 명세기반 시험이라고도 한다. 이 시험 방법은 이론적으로는 시스템의 개발 단계의 전 과정(단위시험, 통합시험, 시스템 시험, 수용 시험 등)에서 적용할 수 있다.

기능시험 단계에서 다음의 방법이 일반적으로 사용된다.

· 등가분할(Equivalence partitioning), 경계값분석(Boundary value analysis)
· 페어와이즈 시험(Pair-wise testing)
· 결정테이블 시험(Decision table testing)
· 상태천이시험법(State transition testing)
· 사용예 시험(Use case testing)
· 분류트리방법(Classification tree method)

다음에서 제안하는 시험 방법의 중요한 요소기술인 상태천이시험법과 분류트리방법에 대하여 상세하게 살펴보고자 한다.

2.1 상태천이시험법

많은 임베디드 시스템은 상태기반의 동작 특성을 가지고 있다. 해당 기능이 상태에 기반한 것이라면, 명세화 단계 혹은 설계 단계에서 상태를 모델링하여 사용한다. 이 상태기반 모델은 물론 시험 단계에서도 활용할 수 있다.

상태기반의 모델은 일반적으로 상태도로 표시한다. 이와 동등하지만 다른 표현 방법인 상태-이벤트 테이블, 혹은 액티비티 차트로도 표현할 수 있다. 상태기반 동작을 테스트하는 방법은 상태 천이에 영향을 주는 입력 이벤트와 조건을 시스템에 인가하여 주고, 올바른 상태로 천이되고 출력되는 지를 확인하는 것이다. 여러가지 상태기반 시험 방법들 중에 모든 상태와 천이를 전체 커버리지로 시험할 수 있는 상태천이시험 기법이 널리 사용되고 있다.5)

상태천이시험기법은 다음과 같은 절차로 이루어진다.

(1) 상태-이벤트 테이블 구성: 상태도를 활용하여 각 상태에서 이벤트 입력에 대하여 어떻게 다음 상태로 천이해 가는지 테이블로 구성한다. 각 상태 천이에 대하여 고유한 식별자를 할당하여 구분지어 놓는다. 상태-이벤트 테이블은 상태도와 등가의 의미를 갖는다. 상태-이벤트에 대하여 모든 커버리지를 확인하기 위하여 테이블을 구성하는 것이다. 간단한 경우라면 상태-이벤트 테이블을 생략할 수도 있다.

Fig. 1에 예시로 준비(Ready), 동작(Run), 오류(Fault) 상태를 갖는 간단한 시스템의 상태도를 나타내었다. 이 시스템은 천이 화살표 위에 표시된 이벤트가 발생하였을 경우 다음 상태로 천이하게 된다. 이 시스템을 상태-이벤트 테이블로 표현하면 Table 1과 같이 나타낼 수 있다.


Fig. 1 
State diagram example

Table 1 
State-event table example
Event Ready Run Fault
Start Run: 1 X X
Stop X Ready: 3 X
Error Fault: 2 Fault: 4 X
Clear X X Ready: 5

(2) 상태천이트리 구성: 초기 상태가 천이트리의 시작점(Root)이 된다. 이 시작점으로 부터 천이되는 상태들로 다음 레벨 상태들을 나열한다. 상태-이벤트 테이블에서 붙여놓은 식별자를 각 천이화살표에 표시한다. 천이결과 상태가 초기 상태나 이미 트리에 나와 있는 상태라면(이 점을 조건부 종료점, Provisional Terminal Point, 라 한다) 여기서 중지하고, 아니면 위의 단계를 계속 반복한다.

Fig. 2는 예시 시스템의 상태천이트리이다. 초기상태인 Ready에서 시작하여 초기상태인 Ready 혹은 조건부 종료점인 Fault 상태에서 마치게 된다.


Fig. 2 
State transition tree example

(3) 유효한(Legal) 테스트 케이스에 대한 시퀀스 구성: 상태천이트리를 사용하여 모든 경로를 지나갈 수 있도록 시퀀스를 구성한다. 각 테스트 시퀀스는 시작점에서 시작하여 시작점에서 종료하여야 한다.

Table 2에 예시 시스템의 유효한 상태 천이 시퀀스를 나타내었다. L1.1 - L1.3와 L2.1 - L2.2 - L2.3 그리고 L3.1 - L3.2, 이렇게 3개의 유효한 시퀀스를 구성할 수 있다.

Table 2 
Legal transition sequence example
ID Event State etc
L1.1 1. Start Run
L1.3 3. Stop Ready
L2.1 1. Start Run
L2.2 4. Error Fault
L2.3 5. Clear Ready
L3.1 2. Error Fault
L3.2 5. Clear Ready

(4) 무효한(Illegal) 테스트 케이스에 대한 시퀀스 구성: 상태-이벤트 조합에서 상태 천이를 일으키지 않는 경우에 대하여 테스트 시퀀스를 구성한다. 해당 상태로 천이 시키기 위해서는 유효한 테스트 케이스를 사용하고, 그 상태에서 반응을 보이면 안되는 이벤트들을 나열한다.

Table 3에 무효한 테스트 시퀀스를 구성하였다. I1- I2와 I3-I4, 그리고 I5-I6-I7 이렇게 3개의 시퀀스를 구성할 수 있다. 이 무효 시퀀스는 개별적으로 실행하는 것이 매우 어려우므로, 해당 상태로 천이시키는 유효 시퀀스와 결합하여 실행한다.

Table 3 
Illegal transition sequence example
ID Set-up Event State
I1 (Init) Stop Ready
I2 (Init) Clear Ready
I3 L2.1 Start Run
I4 L2.1 Clear Run
I5 L3.1 Start Fault
I6 L3.1 Stop Fault
I7 L3.1 Error Fault

상태천이시험방법은 상태를 가지고 있는 시스템의 상태와 천이 조건들에 대하여 커버리지를 고려하여 확실하게 시험할 수 있는 방법이다. 이 방법이 보편화 되어 자동으로 시험 케이스를 도출하는 방법까지 나와 있다.4,10)

그러나 위의 예에서 보았듯이 시험을 위해서 여러 가지 그림과 테이블을 구성해야 하고 이것들을 체계적으로 관리하여야 한다. 또한 이 방법은 이산-이벤트 동적 기능의 경우에는 전형적으로 적용이 가능하지만, 단순 입력 기능과 연속변수 동적 시스템의 기능에 대해서는 직접적인 적용이 불가능 한다.

2.2 분류트리방법

분류트리방법은 여러개의 입출력에 대한 시험을 체계적으로 관리하는 기법으로 1993년도에 Grimm과 Grochtmann에 의해 제안되어 소프트웨어 혹은 시스템 시험의 여러 단계에서 활발하게 사용되고 있다.7) 최초의 분류트리방법은 소프트웨어의 기능 시험을 위한 것으로 제안되었지만 향후 임베디드 시스템의 시험을 위한 것으로 확장되었다.8) 이 확장된 제안에서는 단순한 시험 케이스에 대한 관리 뿐만 아니라 각 시험 케이스를 나열한 테스트 시퀀스 개념, 각 스텝의 유지 시간, 그리고 스텝을 넘어가는 단계에서 신호의 천이 방법에 대한 구체적인 표기법 등이 보완되었다. 최근에는 이 방법을 지원하는 상용 프로그램도 나오고 있다.11)

분류트리방법은 크게 입력을 분류하여 트리를 만드는 단계와 각 입력 클래스를 조합하는 단계로 구성된다(Fig. 3).


Fig. 3 
Classification tree example

첫번째 분류트리를 만드는 단계에서는 시험과 관련된 입력을 인지하고 이것으로 분류(Classification)를 만들고 각 분류 내에 클래스(Class)을 결정한다. 시스템의 기능 명세서, 사용예 등 정보를 참고하여 시험자가 분류트리를 결정 한다. Fig. 3은 입력이 3가지가 있는 기능에 대하여 분류트리를 구성한 예제이다. 각 입력의 유효한 범위를 인식하고, 출력에 영향을 미치는 클래스로 나눈다. 예를 들어 Fig. 3에서 ‘Test Input A’는 A1, A2, A3의 클래스를 갖고 있다.

두번째 단계에서는 각 분류의 클래스들을 조합하여 표를 구성하고 모든 클래스를 커버할 수 있도록 나열하여 시험케이스들을 도출한다. 이때 분류들 간에 상관관계를 논리합으로 혹은 논리곱으로 고려할 수 있다. 논리합의 관점으로 도출한다면 제일 큰 분류의 클래스 개수 만큼의 시험 케이스를 도출하게 되고, 논리곱 관점으로 고려한다면 각 분류의 클래스 개수의 곱 만큼 시험 케이스를 도출하게 된다. Fig. 3의 경우에서는 ‘Test Input A’와 ‘Test Input C’가 각각 3개의 클래스를 가지고 있다. 논리합 관점에서 유도한다면 최소 3개의 시험 케이스만 있다면 전체 입력 공간을 확인할 수 있는 시험 케이스를 만들 수 있다. 논리곱 관점으로 시험 케이스를 유도한다면 총 18가지 (A의 3가지 × B의 2가지 × C의 3가지) 시험 케이스를 만들 수 있다. 위의 예는 시퀀스를 사용하여 이를 절충한 6가지의 시험 케이스를 유도한 것이다.

분류트리방법은 시험과 관계된 많은 정보들을 그래픽한 방법으로 표현할 수 있다는 장점이 있다. 특히 개별적인 입력과 조합을 일목요연하게 표현할 수 있다. 이 표현 방법은 시험의 설계 단계부터 최종 보고 단계에 이르기 까지 매우 유용하게 사용할 수 있다.

그러나 규모가 큰 시스템이거나 상태를 갖는 복잡한 시스템의 경우에는 시험자의 직관과 경험에 의존하고 있는 요소들이 있다. 시험대상의 입력이 많을 경우에는 시험자가 임의로 시험을 분할해서 관리 가능한 크기로 조정하여야 한다. 아울러 단순 동작에 대해서는 잘 설명되어 있으나, 상태를 갖는 복잡한 동작에 대해서는 구체적인 적용방법을 제시하지 않고 있다.


3. 분류트리방법을 확장한 체계화된 시험도출법

시험자의 주관적인 요소를 최소화 하고 체계적인 시험방법을 만들기 위해서 분류트리방법을 보완할 필요가 있다. 단순 기능과 복잡한 동적기능에 대하여 분류하고, 각각 구체적인 시험 케이스 도출 하는 체계적인 절차가 필요하다.

상태와 무관한 단순동작 기능에 대해서는 기존의 분류트리방법을 그대로 활용한다. 이산 상태 기반의 동적 기능은 상태천이시험 방법을 사용하여 전체 커버리지를 갖는 시험 시나리오를 도출하고 이를 분류트리방법을 사용하여 관리하도록 한다. 연속변수 동적 기능은 관련 기능을 단순화된 상태기계로 모델링하고 연속변수에 대한 상승시간, 안정화 시간 등을 고려하여 이산 상태 기반 기능과 유사한 방법으로 관리하도록 한다.

Table 4에 분류트리방법을 확장한 체계화된 시험도출 방법에 대하여 요약하였다. 일련의 과정을 4단계로 나누어 구체화 하였다. 기능의 속성을 단순동작기능, 이산상태기반 기능, 연속변수동적 기능의 3가지로 분류한다. 단순동작의 기능의 경우에는 기존의 분류트리 방법에 따라 적용하고, 이산상태기반 기능과 연속변수 동적 기능은 상태천이시험방법을 활용하여 적용한다.

Table 4 
Systematic test techniques of expanded classification tree method
Step A. Simple behavior function B. Discrete state based function C. Continuous dynamic function
I. Determine I/O & State ∙ Determine I/O
∙ Test group
+Determine state machine +Rising time
+Settling time
II. Partition test inputs ∙ Equivalence partitioning
∙ Boundary value analysis
+State transition input +State transition condition
III. Design test scenario ∙ Combine test inputs +Legal/illegal test script +Timing for state transition
IV. Define test input ∙ Compose test input profile Same as left Same as left

제안하는 방법의 이해를 높이고 유효성을 살펴보기 위하여, 모터제어기의 주파수 관련 기능을 구체적인 예로 설명한다. 예시 기능의 명세를 요약하면 다음과 같다.

(1) 운전과 정지

(1.1) 전원이 인가되면 설정값을 디폴트값으로 초기화하고 정지 상태에서 대기한다.

(1.2) 정지 상태에서 운전(RUN)이 입력되면 운전방향, 출력주파수, 가속/감속 시간 설정 값에 따라서 동작한다.

(2) 운전방향 설정

(2-1) 정방향/역방향으로 운전 방향을 설정

(2-2) 운전방향의 변경은 정지 상태에서만 할 수 있다.

(3) 출력주파수 설정

(3-1) 사용자가 원하는 드라이버의 출력 주파수(회전속도)로 정의한다.

(3-2) 0 부터 최대주파수 [Hz]범위까지 0.01[Hz] 단위로 설정 가능하다.

(4) 가속/감속 시간 설정

(4-1) 가속시간은 0에서 최대주파수(300)까지(감속시간은 최대주파수에서 0까지) 변화할 때 걸리는 시간으로 정의

(4-2) 0.1 ~ 3000 [초] 범위까지 0.1[초] 단위로 설정 가능하다.

Fig. 4에서 관련기능의 사용예를 운전 상태와 함께 나타내었다. t1 시간에 주파수 지령치가 바뀌면, 정지 상태에서 대기 하고 있던 시스템이 가속시간으로 설정된 기울기에 따라 가속하고, 지령치에 도달하면 그 속도를 유지하게 된다. t2 시간에서 주파수 지령치를 0으로 바꾸게 되면 설정값에 따라 감속하다가 정지하게 된다. 이 예에서도 살펴볼 수 있듯이 주파수 출력은 현재 입력값에 의해서만 결정되는 것이 아니라 시스템의 상태와 여러 설정정보의 영향을 받고 있다. 그러므로 이러한 입력과 상태들을 고려하여 시험케이스를 정확하게 도출하는 과정이 필요하다.


Fig. 4 
Frequency time profile

다음의 각 절에서 각 단계에서 고려해야 하는 사항들과 그 단계의 결과물에 대하여 상세히 설명한다.

3.1 입출력과 상태 결정

첫단계로 명세서와 사용예를 분석하여 시험 대상의 입출력을 정확히 인식하고 시스템의 상태를 결정한다.

각 입력의 범위와 단위 인식하고, 단순 동작 관련 입력인지, 이산 상태를 결정하는 입력인지, 연속변수 동적 기능과 관련된 입력인지 구분하여야 한다. 시스템의 출력의 경우 내부적인 피드백을 통해서 시스템의 상태에 영향을 미치는 경우라면 이것 또한 입력으로 간주한다.

이산 상태의 경우에는 상태기계로 직접적으로 모델링하여야 한다. 명세서에 명시적으로 표현되어 있지 않더라도 시험케이스 도출을 위하여 모델링하는 것이 더욱 효율적이다. 연속변수 동적 기능은 대부분 성능 시험과 직접적인 연관을 가지고 있으나 기능시험 단계에서도 제한적으로 기능을 시험할 수 있다. 정상상태, 혹은 과도상태를 활용하여 시험을 위한 상태기계로 표현한다.

출력을 결정하는 입력이 많은 경우 모든 입력을 한꺼번에 고려하면 트리가 너무 커져서 관리가 어렵다. 이런 경우 입력의 상호 의존성과 시험의 편의성을 고려하여 시험 그룹으로 나누어 관리하는 것이 효율적이다.

Fig. 5는 출력주파수 기능에 대하여 입출력을 표현한 블록선도이다. 주파수 출력을 결정하기 위하여 총 5가지의 입력이 관련되어 있다. 명시적이지는 않지만 주파수 지령치와 주파수 출력치를 비교하여 가속/감속구간의 운전 상태를 결정짓는다. 그러므로 주파수 출력치 또한 피드백이 되는 입력으로 볼 수 있다. 이 입력들의 속성을 살펴보면, 가속시간, 감속시간 입력은 단순 동작을 결정하는 입력으로 볼 수 있고, 운전/정지, 운전 방향 입력은 이산 상태를 결정하는 입력이 된다. 그리고, 주파수 지령치, 주파수 출력치는 연속변수 동적 기능을 결정하는 입력이 된다. Table 5에 입출력들과 관련된 속성들을 요약하였다.


Fig. 5 
Input/Output determination

Table 5 
Input/Output properties
Name I/O Range Unit etc.
Acceleration interval I 0.1 ~ 3000 sec Simple
Deceleration interval I 0.1 ~ 3000 sec Simple
Run/Stop command I RUN/STOP Discrete
Rotating direction I For./Back. Discrete
Frequency reference I 0~max (3000) Hz Continuous
Frequency output I/O 0~max (3000) Hz Continuous

주파수출력 기능에 대하여 상태기계로 모델링 하면 Fig. 6과 같다. 운전/정지 입력은 이산상태를 결정하는 입력으로 볼 수 있다. 운전 방향 입력은 운전 상태에서 회전 방향을 결정짓는 조건이 되며, 주파수 지령치와 주파수 출력치 또한 4개의 운전 상태를 결정하는 조건이 된다. 운전 방향과 주파수 조건에 따른 상태들은 모두 운전 상태의 하위 상태로 간주할 수 있으며, 이 두가지 조건은 서로 병렬적으로 동작하게 된다.


Fig. 6 
State diagram

Fig. 7에 시험과 관련된 분류트리를 나타내었다. 이 예에서는 운전/정지와 운전 방향 입력 만을 가지고 이산상태에 대한 시험 그룹과 주파수 지령치와 가속/감속시간 입력을 가지고 연속변수 동적 기능에 대한 시험 그룹으로 나누어서 관리하고자 한다.


Fig. 7 
Test groups

3.2 시험 입력 분할

각 입력의 유효하고 의미있는 시험값을 결정하여 분류트리를 구성한다. 입력의 유효한 범위 내에서 서로 중첩되지 않고 전체 범위를 대표할 수 있도록 분할한다. 각 분할 구간을 대표하는 입력 값을 선정한다. 단순 동작 기능과 관련된 입력은 동등 분할, 경계값 분석 등의 방법을 활용한다. 상태천이와 관련되는 입력은 다음 단계의 시나리오 구성과 밀접한 관련이 있으므로 세심한 관리가 필요하다.

예제의 입력 중에 분할한 값들의 결과를 요약하면 다음과 같다.

· 가속시간: [0.1, 30, 3000]
· 가속시간: [0.1, 30, 3000]
· 운전/정지: [RUN, STOP]
· 운전 방향: [FORWARD, BACKWARD]
· 주파수 지령치: [0, 100, 200, 300]

단순입력인 가속/감속시간의 경우 경계값인 0.1, 3000을 선택하고, 사이 구간의 값 중에 시험의 편의성을 고려하여 30을 선택하였다. 경계값 분석을 위하여 경계값 0.1과 근접한 0.2와 0.0 등을 추가적으로 선택할 수 있다. 이산 상태 동작 입력은 상태 천이에 영향을 미치는 값들을 선택하였다. 연속변수 동작 입력인 주파수 지령치는 경계값인 0과 300을 선택하고 사이값을 선택하였다. 사이값은 다시 가속, 감속 하는 경우를 시험하기 위하여 100, 200 두가지를 선택하였다.

3.3 시험 시나리오 구성

단순 기능 관련 입력만 모아서 시험을 구성해도 되고 다른 입력들과 결합하여 시험을 구성해도 된다. 시험의 편의성과 유효성을 고려하여 시험자가 구성하면 된다.

이산 상태 입력은 상태도에 따라 상태천이 이벤트와 조건들을 고려하여 상태천이트리를 구성하고 반응/무반응 시험 시퀀스를 만든다. 이 시험 시퀀스를 분류트리방법의 시퀀스를 사용하여 표현한다.

연속변수 동적 입력의 경우에도 상태천이 조건과 시간을 고려하여 상태천이트리를 구성하고 시험 시퀀스를 구성한다. 상승시간, 안정화 시간과 같은 과도상태에 대한 기능 요구 사항을 고려하여야 하고, 정상상태에 도달한 경우도 연속 변수 값의 허용범위를 고려하여야 한다.

주파수 출력기능의 예에서 이산 상태 입력에 대한 상태천이트리와 이것을 사용한 시험시퀀스를 Fig. 8Fig. 9에 각각 나타내었다. 이산상태 기능은 원래 2단계의 계층구조로 되어 있지만 시험의 편의와 이해도를 위하여 1단계로 단순화시켜서 상태천이트리를 구성하였다.


Fig. 8 
State transition tree for discrete-event dynamic functions


Fig. 9 
Test sequences for discrete-event dynamic functions

단순 동작 입력과 연속변수 동작 입력을 결합한 시험 그룹에 대한 상태천이트리는 Fig. 10과 같다. Fig. 11은 이 시험 그룹의 시험 시퀀스이다. 이때 상태 천이 조건에 암묵적으로 영향을 미치는 주파수 출력치를 고려하여 해당 스텝의 유지시간을 결정한다. 예를 들어 가속/감속시간이 30초인 두번째 시퀀스(SEQ2)의 STEP_A의 경우, 정지상태로 부터 최대출력의 2/3인 200[Hz]까지 도달하는 데 걸리는 시간은 기능 명세상으로 20초 정도가 걸리게 된다. 그러므로 STEP_A의 상태를 20초 이상 유지해 주어야 한다. 마찬가지로 주파수 출력의 변화를 고려하여 각 스텝의 유지시간을 설정해 준다.


Fig. 10 
State transition tree for continuous-variable dynamic functions


Fig. 11 
Test sequences for continuous-variable dynamic functions

3.4 시험 데이터 결정

앞서 결정한 각 시험 시나리오에 대한 구체적인 신호파형을 결정하고 각종 시험환경에서 사용할 데이터 집합을 만들어 준다.

시스템 시험의 경우에는 각 신호에 대한 변화 양상을 고려한 신호 파형이 필요하다. 이때 시험 입력의 변화 양상을 스텝, 램프, 혹은 사인파 모양 등으로 다양하게 고려해 줄 수 있다. 각 신호들을 조합하여 시험입력 집합으로 만들어서 시험 대상에 공급해 주어야 한다.

주파수 출력의 예에서는 주어진 5개의 입력에 대하여 파형을 구성해 주어야 한다. 이 예에서는 주파수 지령치가 스텝으로 변화하도록 신호 파형을 만들어 준다.


4. 결 론

이 논문에서 시험 대상 시스템의 입력과 상태를 고려하여 전체 커버리지를 갖는 최소한의 시험 케이스를 체계적으로 도출하고 효율적으로 관리하는 방법을 제시한다. 제안된 방법을 사용 하면 누락없이, 중복을 최소화 하여 체계적으로 시험 케이스를 도출할 수 있다.

기존의 분류트리방법을 확장하여 테스트 케이스들을 효율적으로 관리하도록 한다. 아울러 상태를 갖는 기능은 전체 커버리지로 시험할 수 있는 상태천이시험 방법을 사용한다. 특히 연속변수 동적기능을 간략화된 상태머신으로 모델링하고 상승시간, 안정화시간 등과 같은 동적 기능의 검사에 필요한 값을 고려하여 각 스텝에서 유지시간을 설정한다.

과정을 간단히 요약하면, 첫단계로 기능 명세서로부터 시스템의 입력과 상태를 인식하고 시험그룹을 결정짓는다. 두 번째 단계에서 각 입력 분류에 대하여 시험에 필요한 구체적인 값을 결정하고, 세 번째로 상태를 고려할 필요가 있는 기능에 대하여서는 상태천이시험 방법을 활용하여 시험 시나리오를 구성한다. 이렇게 만들어진 각각의 시험 시나리오에 대하여 시험 데이터 집합을 만들어 시험에 활용하도록 한다.

모터제어기 주파수 변화 기능을 예로 시험케이스를 도출하는 일련의 과정을 설명하였다. 이 예로 제안하는 방법을 사용하여 체계적으로 시험케이스를 도출할 수 있음을 확인할 수 있었다.


Acknowledgments

이 논문은 2017~2018년도 창원대학교 자율연구과제 연구비 지원으로 수행된 연구결과임.


References
1. I. S. Park, E. H. Kang, J. S. Chung, J. W. Sohn, M. H. Sunwoo, K. G. Lee, W. T. Lee, J. M. Youn, and D. H. Won, “Timing Verification of AUTOSAR-compliant Diesel Engine Management System Using Measurement-based Worst-case Execution Time Anaysis”, Transactions of KSAE, 22(5), p91-101, (2014).
2. J. -H. Cho, Y. J. Jung, S. H. Jeon, T. M. Han, and H. S. Kim, “An Implementation of Automotive Development Methodology Based on ISO-26262”, KSAE Annual Conference Proceedings, p2052-2059, (2010).
3. H. Y. Jeong, and W. T. Lee, “Development of Test Automation System for Efficient Function Test of Automotive Motor Controller”, KSAE Fall Conference Proceedings, p329, (2016).
4. P. M. Kruse, and J. Wegner, “Test Sequence Generation from Classification Trees”, IEEE International Conference on Software Testing, Verification and Validation, p539-548, (2012).
5. B. Broekman, and E. Notenboom, Testing Embedded Software, Int. Edn., Addison-Wesley, London, (2003).
6. R. V. Binder, Testing Object-oriented Systems: Models, Patterns, and Tools, Addison-Wesley, Boston, (2000).
7. M. Grochtmann, and K. Grimm, “Classification-trees for Partitioning Testing”, Software Testing, Verification, and Reliability, 3(2), p63-82, (1993).
8. M. Conrad, and A. Krupp, “An Extension of the Classification-Tree Method for Embedded Systems for the Description of Events”, Electronic Notes in Theoretical Compute Science, 164(4), p3-11, (2006).
9. J. H. Shin, K. H. Chung, and K. H. Choi, “Research on BLDC Motor Controller Test Using Classification Tree Method”, Institute of Electronics Engineers of Korea Conference, p1599-1601, (2013).
10. K. W. Shin, and D. J. Lim, “Model-based Automatic Test Case Generation for Automotive Embedded Software Testing”, Int. J. Automotive Technology, 19(1), p107-119, (2018).
11. Assystem, Testona - Test design with the Classification tree method, https://www.assystem-germany.com/en/products/testona/, (2018).