KR101334806B1 - 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법 - Google Patents

테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법 Download PDF

Info

Publication number
KR101334806B1
KR101334806B1 KR1020130036712A KR20130036712A KR101334806B1 KR 101334806 B1 KR101334806 B1 KR 101334806B1 KR 1020130036712 A KR1020130036712 A KR 1020130036712A KR 20130036712 A KR20130036712 A KR 20130036712A KR 101334806 B1 KR101334806 B1 KR 101334806B1
Authority
KR
South Korea
Prior art keywords
input
test case
model
variable
test
Prior art date
Application number
KR1020130036712A
Other languages
English (en)
Inventor
유기원
박현상
이효걸
김경준
Original Assignee
비티에스테크놀로지스(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 비티에스테크놀로지스(주) filed Critical 비티에스테크놀로지스(주)
Priority to KR1020130036712A priority Critical patent/KR101334806B1/ko
Application granted granted Critical
Publication of KR101334806B1 publication Critical patent/KR101334806B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 테스트 케이스 자동 생성 시스템에서 SMT(Satisfiability Modulo Theories) 솔버(solver)와 모델 시뮬레이션 도구를 이용하여 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법에 관한 것이다.
본 발명의 방법은, 테스트 케이스 자동 생성 시스템에서 입력 생성부가 변수와 입력 간의 관계를 찾기 위해 모델 분석하는 제 1 단계; 시뮬레이션을 이용하여 변수를 분석하는 제 2 단계; 테스트 조건에 사용된 상수 또는 시뮬레이션 실행 중에 변하지 않는 변수를 숫자로 치환하는 제 3 단계; 에스엠티 솔버(SMT solver)를 이용하여 테스트 조건을 만족하는 해를 구하는 제 4 단계; 및 테스트 조건을 참으로 만드는 입력 값의 집합을 생성하는 제 5 단계로 구성된다.
본 발명의 방법에 따르면, Simulink/Stateflow 모델로부터 테스트 케이스를 자동 생성할 때, 시스템 모델의 입력과 변수 간의 관계를 분석하여 SMT 솔버(solver)와 시뮬레이션을 통해 휴리스틱(heuristic)한 입력의 조합을 매우 짧은 시간 안에 찾아낼 수 있다.

Description

테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법{METHOD OF PROUDCING INPUT SETS OF TEST CASE IN TEST CASE GENERATING SYSTEM}
본 발명은 시스템 모델링 정보로부터 테스트 케이스를 자동으로 생성하는 기술에 관한 것으로, 더욱 상세하게는 테스트 케이스 자동 생성 시스템에서 SMT(Satisfiability Modulo Theories) 솔버(solver)와 모델 시뮬레이션 도구를 이용하여 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법에 관한 것이다.
일반적으로, 자동차, 중공업 장비, 가전제품 등과 같은 다양한 전장품(임베디드 시스템)을 개발하는 프로세스에서, 테스트 단계는 제품의 품질을 보장하기 위해서 필수적으로 요구되는 프로세스이다. 이러한 테스트 단계는 여러 단계를 걸쳐서 이루어지는데, 보통 4 단계 정도 걸쳐서 이루어진다. 먼저, 제 1 단계는 소프트웨어와 하드웨어 개발시 단위 테스트 등을 수행하는 것으로, 전장품의 특성상 하드웨어와 소프트웨어를 동시에 개발하며, 각 개발 부서에서 소프트웨어 자체 및 하드웨어 자체에 대한 테스트를 수행하는 것이다. 제 2 단계는 전장품 단위 테스트로서, 하드웨어에 소프트웨어를 설치하여, 전장 단위로 테스트를 수행한다. 이때 테스트를 위한 입/출력은 하드웨어 입/출력 포트를 이용한다. 제 3 단계는 통합 테스트로서 자동차나 중공업 장비 등은 여러 전장품과 기계장비가 개별적으로 개발되어, 조립되어 하나의 완성품이 만들어지므로, 이러한 여러 부품들을 조립하여 테스트하는 단계이다. 따라서 개발 전장품이 전체적으로 합쳐졌을 때 정상적인 기능을 수행하는지 테스트한다. 제 4 단계는 전수 테스트로서, 전수 테스트는 보통, 제품 생산 단계에서 수행하는 테스트로서, 아주 기본적인 기능들을 살펴봄으로써, 조립이나 컴포넌트 오류로 인한 품질 문제를 찾기 위해서 수행한다.
한편, 테스트를 수행하기 위해서는, 각 단계별 목적에 맞는 테스트 케이스를 생성하는 것이 중요하다. 특히, 총 4단계 중, 해당 기술과 가장 적합한 테스트 단계는 제 2 단계이며, 제 3 단계 역시 활용 가능하다. 전장품 단위 테스트에서는 반드시 해당 전장품이 처음 기획한 요구사항 대로 구현되었는지 확인하여야 한다.
종래에 알려진 자동 테스트 케이스 생성 방법으로는 등록번호 제10-0709964호로 등록된 자동 테스트 케이스 생성 방법 및 시스템이 있는데, 종래의 자동 케이스 생성 시스템은 변환규칙에 따라 판독 가능한 데이터로 표준 SDL을 변환하는 SDL 변환모듈과, 변환된 SDL을 분석하고 검증하여 그 커버리지를 계산하는 커버리지 분석모듈과, 커버리지 분석모듈의 분석 및 검증결과에 따라 변환된 SDL에 대응하는 표 결합 표기법 형식의 테스트 케이스를 생성하는 테스트 케이스 생성모듈로 이루어져 통신시스템에 사용되는 테스트 케이스를 생성하였다.
여기서, 테스트 케이스라는 것은 입력과 그에 상응하는 예상 출력을 시간 순서대로 나열한 것을 나타낸다. 따라서 테스트 케이스는 테이블 형태로 표현할 수 있다. 예를 들면, 다음 표1과 같이 세로축(열)은 시간을, 가로축(칼럼)은 입력 변수와 출력 변수로 표현하고, 그에 상응하는 값을 표현하는 식으로 나타난다. 전장품 단위 테스트는 보통 블랙박스 형태로 수행하므로 입력과 출력 변수는 실제 ECU의 입/출력에 대응되는 것으로서, 요구사항 모델에만 사용되는 내부 변수들은 사용할 수 없다.
Time(msec) I1 I2 I3 O1
0 0 0 0 0
100 1 0 0
1100 1 1 0
2000 1 1 0 1
3000 1 1 1 1
3100 1 1 1 0
전장품 단위 테스트에서 수행하여야 하는 테스트 케이스는 테스트 성공을 결정하는 주요한 요소이므로 테스트 케이스를 표준화된 방법으로 목적에 맞게 정교하게 만들 수 있어야만 한다.
다른 한편, 테스트 케이스는 기본적으로 실행 선행조건(execution precondition), 입력 값의 집합(set of inputs), 예상 결과(expected result)로 구성되며 어떤 테스트 조건을 커버하기 위해 생성한다. 입력 값의 집합에는 시스템에 들어가는 입력뿐만 아니라 시간 또한 포함될 수 있다.
SMT(Satisfiability Modulo Theories) 솔버(solver)는 논리식을 참으로 만들 수 있는 해가 있는지 없는지 판별하고 그 해를 구하는 도구인데, 이 SMT 솔버 모듈을 이용하면 테스트 조건을 참으로 만들 수 있는 변수 값의 해를 찾을 수 있다.
테스트 조건을 커버하기 위한 테스트 케이스를 구성하는 입력 값의 집합을 자동으로 찾는 방법은 테스트 조건에 사용된 변수가 영향을 받는 입력들의 조합과 입력 타이밍을 찾는 것으로서, 매우 어렵고 오버헤드가 많이 드는 과정이다. 통상 가장 단순한 방법은 테스트 조건을 참으로 만들 때까지 입력 값의 조합을 무작위로 생성해 보는 방식인데, 이러한 종래의 방식은 많은 시간과 자원을 소모하게 되는 문제점이 있다.
본 발명은 상기와 같은 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 테스트 케이스 자동 생성 시스템에서 논리식의 해를 찾는 SMT 솔버(solver)와 시뮬레이션 도구를 이용하여 테스트 케이스를 구성하는 입력 값의 집합을 자동으로 산출하는 방법을 제공하는 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명의 방법은, 사용자가 선택한 커버리지 기준에 따라 요구사항 모델로부터 커버리지 목표를 생성하고, 테스트 케이스 생성 과정에서 커버리지 목표 달성 여부를 확인하는 커버리지 목표 관리부와, 요구사항 모델의 내부 상태 변수 및 내부 상태 값을 이용하여 상태를 정의하되, 요구사항 모델의 초기 상태로부터 입력 값을 인가함에 따라 요구사항 모델의 상태를 하나의 노드로 정의하고, 생성된 노드들을 트리로 관리하는 모델 상태 트리 관리부와, 테스트 케이스 생성 알고리즘에서 커버리지 목표를 찾아가려고 할 때 필요한 요구사항 모델의 말단 포트별로 인가해야 하는 값을 생성하는 입력 생성부와, 정형 요구사항 모델을 변경하지 않고, 블랙박스 테스트용 테스트 케이스를 입력하기 위하여 다이나믹 데이터 분석 기법을 사용하여 요구사항 모델에서 찾아낸 테스트 케이스 입력을 인가하고, 인가한 입력에 의해 실제 커버리지 목표가 달성되었는지 확인하거나 시스템 상태를 살펴보거나 예상 출력 값을 얻어내기 위한 모델 시뮬레이터와, 테스트 케이스 DB와, 상기 커버리지 목표를 만족시키기 위한 테스트 케이스를 생성하여 생성된 테스트 케이스를 상기 테스트 케이스 DB에 저장하는 테스트 케이스 생성 도구를 구비하는 테스트 케이스 자동 생성 시스템의 입력값 생성 방법에 있어서,
상기 입력 생성부가 변수와 입력 간의 관계를 찾기 위해 모델 분석하는 제 1 단계; 시뮬레이션을 이용하여 변수를 분석하는 제 2 단계; 테스트 조건에 사용된 상수 또는 시뮬레이션 실행 중에 변하지 않는 변수를 숫자로 치환하는 제 3 단계; 에스엠티 솔버(SMT solver)를 이용하여 테스트 조건을 만족하는 해를 구하는 제 4 단계; 및 테스트 조건을 참으로 만드는 입력 값의 집합을 생성하는 제 5 단계를 포함하는 것을 특징으로 한다.
상기 제 1 단계는 스테이트플로우(Stateflow)에 사용되는 변수에 영향을 주는 입력들을 검색하는 과정으로서, 입력 값이 그대로 변수 값에 매핑이 되는지를 분석하고, 상기 제 2 단계는 모델의 시뮬레이션 상태 S0를 저장하고, 입력을 고정시킨 후 1 틱(tick) 시뮬레이션을 실행하여 시뮬레이션 상태 S1을 만들고, 상태 S0와 S1에서 모델의 모든 변수들의 값을 비교하여 값이 변경된 변수들을 찾아낸 후 다시 상태 S0에서 동일하게 입력을 고정시킨 후 2 틱(ticks) 시뮬레이션을 실행하여 상태 S2를 만들어, 상태 S1과 S2에서 찾아낸 변수들의 값을 비교하여 상태가 S0 -> S1 -> S2로 진행되면서 변수 값들이 증가하거나 감소하는 변수들을 상태 S0에서의 시간 변수들로 등록하고, 상기 제 5 단계는 에스엠티 솔버(SMT Solver)를 통해 해를 얻은 변수에 대해서 모델의 입력에 의해 값이 변하는 변수인지 시간에 의해 값이 변하는 변수인지를 판별한 후, 모델의 입력에 의해 값이 변하는 변수라면 해당 입력에 값을 넣는 테스트 케이스를 생성하고, 시간에 의해 값이 변하는 변수라면 해당 시간 동안 또는 틱(tick) 동안 대기(wait)하는 테스트 케이스를 생성한다.
본 발명에 따른 요구사항 모델 기반 테스트 케이스 자동 생성 시스템 및 방법은 블랙박스 테스팅에 걸 맞는 시간에 따른 외부 입력 시퀀스를 찾아낸다. 이때 테스트 케이스 생성을 위하여 원본 정형 요구사항을 다른 형태의 모델로 변경하지 않고 직접 분석하여 사용하며, 정적 분석뿐만 아니라, 동적 분석 방법을 이용하여 시스템의 상태를 추적해 나간다.
그리고 본 발명의 방법에 따르면, Simulink/Stateflow 모델로부터 테스트 케이스를 자동 생성할 때, 시스템 모델의 입력과 변수 간의 관계를 분석하여 SMT 솔버(solver)와 시뮬레이션을 통해 휴리스틱(heuristic)한 입력의 조합을 매우 짧은 시간 안에 찾아낼 수 있다.
도 1은 본 발명에 따른 전장품 단위 테스트 절차를 나타낸 순서도,
도 2는 본 발명에 따라 정형적인 요구사항 모델로부터 테스트 케이스를 생성하는 것을 설명하기 위한 예,
도 3은 본 발명에 따른 요구사항 모델 기반 테스트 케이스 자동 생성 시스템을 도시한 구성 블럭도,
도 4는 본 발명에 따른 테스트 케이스 생성 시스템의 테스트 케이스 생성 절차를 도시한 순서도,
도 5는 본 발명에 따라 SMT/시뮬레이션을 이용하여 입력값을 생성하는 절차를 도시한 순서도,
도 6은 도 5에 도시된 모델 분석 단계를 설명하기 위한 도면의 예,
도 7은 도 5에 도시된 시뮬레이션 분석 단계를 설명하기 위해 도시한 도면의 예,
도 8은 도 5에 도시된 테스트 조건 치환 단계를 설명하기 위해 도시한 도면의 예이다.
본 발명과 본 발명의 실시에 의해 달성되는 기술적 과제는 다음에서 설명하는 본 발명의 바람직한 실시 예들에 의하여 보다 명확해질 것이다. 다음의 실시 예들은 단지 본 발명을 설명하기 위하여 예시된 것에 불과하며, 본 발명의 범위를 제한하기 위한 것은 아니다.
도 1은 본 발명에 따른 전장품 단위 테스트 절차를 도시한 도면으로서, 테스트 케이스 생성 도구가 정형적으로 표현된 요구사항 모델을 입력받아 전장품 테스트용 테스트 케이스 세트를 생성하고(S1~S3), 블랙박스 테스트 실행 도구가 전장품 테스트용 테스트 케이스 세트를 입력받아 테스트 대상 시스템을 블랙박스 테스팅한다(S4,S5).
도 1을 참조하면, 테스트 케이스 생성 도구(S2)는 정형적으로 표현된 요구사항 모델로부터 표준화된 방법으로 테스트 케이스를 생성하고, 생성된 테스트 케이스는 테스트 실행 도구(S4)를 이용하여 블랙박스 테스팅을 진행한다.
이와 같이 본 발명에 따라 요구사항 기반으로 테스트 케이스를 정량화할 수 있는 표준화된 테스트 케이스 생성 방법은 커버리지 기준을 이용한 테스트 케이스 생성 방법을 사용하는데, 널리 사용되어지는 커버리지 기준들은 다음과 같다.
문장 커버리지(Statement Coverage)는 요구사항의 조건이나 행동이 문장으로 표현된다고 할 때, 문장을 한번씩 검사하거나 행해보아야 한다는 조건이다.
조건 커버리지(Condition Coverage)는 생성한 테스트 케이스가 모든 조건들을 검사해보았을 때, 해당 테스트 케이스는 조건 커버리지(Condition Coverage)를 만족하는 테스트 케이스 세트라고 부른다. 여기서, 조건이라는 것은 조건 문장에서 사용되어지는 논리적인 최소 입력 변수를 일컫는다. 예를 들어, "C1∧C2"문장이 있을 때, 해당 문장에는 총 2개의 조건이 C1과 C2가 존재한다. 따라서, 테스트 케이스는 반드시 각 컨디션의 모든 값을 검사해보아야 한다. 즉, C1이 'True'일때와 'False'일 때, C2가 'True' 일 때와 'False'일 때를 확인할 수 있는 테스트 케이스가 필요하다.
결정 커버리지(Decision Coverage)는 생성된 테스트 케이스가 모든 결정을 검사해보았을 때, 해당 테스트 케이스 세트는 결정 커버리지(Decision Coverage)를 만족하였다고 말한다. 여기서, 결정이라는 것은 조건 문장에서의 결과 값이다. 예를 들어, "D=C1∧C2" 문장이 있을 때, D값이 'True'이고 'False'인 것을 확인해보아야 한다는 것이다.
변형된 조건 및 결정 커버리지(Modified Condition and Decision Coverage (MC/DC))는 모든 테스트 케이스가 결정 커버리지와 조건 커버리지를 만족하고, 추가적으로 다른 조건의 값이 고정된 상태에서 하나의 조건의 변화로 결정이 변화하는 것을 보아야 한다는 제한 사항이 추가된 것이다. 예를 들어, "D=C1∧C2" 문장이 있을 때 MC/DC는 다음 표2의 진리표(Truth Table)를 만족하여야 한다.
No. C1 C2 D=C1 ∧C2
1 T T T
2 T F F
3 F T F
위 테이블에서 볼 수 있듯이, C1이 고정되었을 때, C2의 변화에 따라 결정(Decision)값이 변화하고 있으며, C2가 고정되었을 때, C1의 변화에 따라 결정(Decision)값이 변화하고 있음을 알 수 있다.
상태 커버리지(State Coverage)는 상태 다이어그램에서 상태를 모두 한 번씩 방문해보아야 하는 것을 말한다. 상태 전이 커버리지(Transition Coverage)는 상태 다이어그램에서 상태와 상태 사이의 모든 전이를 한 번씩은 방문해보아야 한다는 것을 말한다.
도 2는 정형적인 요구사항 모델로부터 테스트 케이스를 생성하는 것을 나타내기 위한 예제이다. 도 2에서, 요구사항은 n개의 입력이 I1, I2, .... In -1, In 정의되어 있으며, m개의 출력 O1, O2,.... Om-1, Om이 정의된다. 이러한 입/출력에 따라 요구사항 로직을 상태 다이어그램이나 기타 다른 방법을 이용하여 표현할 수 있다. 이때, 내부 상태를 표현하기 위한 내부 변수 "From"과 "To"라는 변수를 이용한다. 그리고 테스트 커버리지는 이러한 내부 변수를 이용하여 표현된다. 예를 들어, "To==T&&From==F"라는 전이 조건을 위해서는 다음의 조건이 만족하면 MC/DC가 만족한다.
To==T From==F To==T&&From==F
T T T
T F F
F T F
그러나 실제 구현된 전장품(ECU)에서는 To라는 변수와 From이라는 변수를 직접적으로 제어할 수 없기 때문에, 전장품의 입력 I1,....In을 시간순서에 따라 적절하게 변화시켜서 "From"과 "To" 값을 만들어 내야 한다.
도 3은 본 발명에 따른 요구사항 모델 기반 테스트 케이스 자동 생성 시스템을 도시한 구성 블럭도이다.
본 발명에 따른 테스트 케이스 자동 생성시스템(100)은 도 3에 도시된 바와 같이 테스트 케이스 생성도구(110), 커버리지 목표 관리부(120), 모델상태 트리 관리부(130), 입력 생성부(140), 모델 시뮬레이터(150), 테스트 케이스 데이터베이스(160)로 구성되어 정형적 요구사항으로부터 커버리지 기준을 적용하여 자동으로 입력 순서를 시간 순으로 생성하고, 해당 입력 순서에 따라 예상되는 출력 값을 생성한다.
도 3을 참조하면, 테스트 케이스 생성도구(110)는 후술하는 바와 같이 테스트 케이스 생성 알고리즘에 따라 커버리지 목표 관리부(120), 모델 상태 트리 관리부(130), 입력 생성부(140), 모델 시뮬레이터(150)를 이용하여 테스트 케이스를 생성한다.
커버리지 목표 관리부(120)는 사용자가 선택한 커버리지 기준에 따라, 모델로부터 커버리지 목표를 생성하고, 테스트 케이스 생성 과정에서 커버리지 목표 달성 여부를 확인하는 역할을 수행한다. 커버리지 목표(Coverage Target)라 함은, 커버리지 기준에 따라서, 만족해야만 하는 항목을 커버리지 목표라고 한다. 테스트 케이스 생성 도구(110)는 이러한 커버리지 목표를 만족시키기 위한 테스트 케이스, 즉 시간에 따른 입력 인가 순서를 생성한다.
모델 상태 트리 관리부(130)는 요구사항 모델의 구석구석을 방문하기 위하여 상태 트리를 만들고 관리하는 역할을 수행한다. 높은 커버리지를 만족하는 테스트 케이스를 생성하기 위해서는 요구사항의 많은 조건들을 확인하여야 한다. 따라서 요구사항 모델의 구석구석을 뒤져야 하는데, 이를 위하여 먼저 요구사항 모델의 내부 상태 변수 및 내부 상태 값을 이용하여 상태를 정의한다. 모델은 시스템(요구사항 모델)의 초기 상태로부터 입력 값을 인가함에 따라 시스템(요구사항 모델)의 상태가 계속해서 새로이 정의된다. 이러한 상태를 하나의 노드로 정의하고, 이러한 노드들을 트리로 관리한다.
입력 생성부(140)는 테스트 케이스 생성 알고리즘에서, 커버리지 목표를 찾아가려고 할 때 필요한, 시스템의 말단 포트별로 인가해야 하는 값을 생성하는 역할을 수행한다. 입력 생성부(140)는 모델을 정적분석하여 값을 생성하거나, 때에 따라 무작위로 생성하거나, 특정 선도에 따라 생성하거나, 통계적인 분포에 따라 값을 생성한다.
모델 시뮬레이터(150)는 다이나믹 데이터 분석 기법을 사용하기 위하여 모델을 시뮬레이션 한다. 정형 요구사항 모델을 변경하지 않고, 블랙박스 테스트용 테스트 케이스를 입력하기 위하여 정적 분석 기법뿐만 아니라, 다이나믹 데이터 분석 기법을 사용한다. 모델 시뮬레이터(150)를 이용하여 모델에 찾아낸 테스트 케이스 입력을 인가하고, 인가한 입력에 의해 실제 커버리지 목표가 달성되었는지 확인하거나 시스템 상태를 살펴보거나 예상 출력값을 얻어내기 위한 목적으로 사용된다.
테스트 케이스 DB(160)는 생성된 테스트 케이스를 저장하기 위한 저장 장소이다.
도 4는 본 발명에 따른 테스트 케이스 생성 시스템의 테스트 케이스 생성 절차를 도시한 순서도이다.
도 4를 참조하면, 제1 단계(S101)는 사용자 설정에 따른 커버리지 목표를 생성하는 단계이다. 커버리지 목표는 커버리지 목표 관리부(120)에서 담당하며, 해당 모듈에서 목표를 생성한다.
제2 단계(S102)는 트리 확장을 위한 상태 노드를 선택하는 단계로서, 특정 노드에서 시간이나 입력 값의 변화에 따라 새로운 노드가 생성된다. 트리가 확장을 시작하는 노드를 모델 상태 트리 관리부(130)를 이용하여 선택한다.
제3 단계(S103)는 입력 생성단계로서, 새로운 커버리지 목표를 만족하기 위하여 입력을 생성하는 단계이다. 해당 단계는 입력 생성부(140)에서 담당한다.
제4 단계(S104)는 모델 시뮬레이터(150)에 입력을 인가하여 시뮬레이션 하는 단계로서, 생성한 입력을 시뮬레이션 한다.
제5 단계(S105)는 새로 달성한 커버리지 목표를 검색하는 단계로서, 모델 시뮬레이터(150)를 이용하여 시뮬레이션 하는 동안 커버리지 목표가 달성되는지를 커버리지 목표 관리부(120)를 이용하여 확인하고 기록한다.
제6 단계(S106)는 입력 순서 및 예상 출력이 포함된 테스트 케이스 등록 단계로서, 시뮬레이션이 종료되고, 새로 달성한 커버리지 목표가 존재한다면, 생성한 입력은 테스트 케이스로서 유효한 것이므로, 테스트 케이스 DB(160)에 테스트 케이스를 저장한다.
제7 단계(S107)는 커버리지 목표를 모두 만족하는지 검사하는 단계로서, 만약 커버리지 목표 관리부(120)에 아직 만족하지 않은 커버리지 목표가 있다면, 다시 커버리지 목표를 찾기 위해서 입력 생성 파트로 이동하며, 그렇지 않은 경우 테스트 케이스 생성을 종료한다.
다시 도 3을 참조하면, 커버리지 목표 관리부(120)는 다음의 기능을 담당한다. 사용자가 지정한 커버리지 기준에 요구사항 모델을 분석하여 커버리지 목표를 생성한다. 본 발명의 실시예에서는 다음 표 4와 같은 커버리지 기준을 지원한다.
Statement Coverage Criteria
Condition Coverage Criteria
Decision Coverage Criteria
Modified Condition and Decision Coverage(MC/DC) Criteria
State Coverage Criteria
Transition Coverage Criteria
Boundary Coverage Criteria
또한 커버리지 목표 관리부(120)는 전체 커버리지 목표를 관리하고, 테스트 케이스가 생성됨에 따라 달성한 커버리지 목표와 달성하지 못한 커버리지 목표를 분류하여 관리하며, 통계 자료를 보여주는 역할을 수행하고, 모델 시뮬레이터(150)로부터 시스템 모델의 상태를 얻어 와서, 만족하지 못한 커버리지 목표들 중 새로이 달성한 커버리지 목표를 찾아내는 기능을 수행한다. 커버리지 목표는 정형 요구사항의 내부 데이터 변수들의 조건 수식으로 표현된다. 예를 들어, 상태 커버리지(State Coverage)의 경우에 상태(State)를 표현하는 변수 v_state라는 변수가 존재한다고 가정할 때, v_state=="state_off"와 같은 형태로 표현한다.
그러나 실제 도구를 구현하는데 있어서는 위의 포멧이 Post-fix형 수식으로 표현되어져, 다이나믹 요구사항 모델로부터 커버리지 목표 달성을 검사할 때 빠르게 검사가 가능하도록 한다.
모델 상태 관리부(130)는 요구사항 모델의 내부 상태 변수 및 상태 다이어그램의 상태 값을 이용하여 모델 상태를 정의한다. 즉, 내부 변수와 상태 다이어그램의 상태 값을 이용하여 모델의 상태를 다음 수학식1과 같이 고유하게(Unique) 정의할 수 있게 된다.
Figure 112013029343391-pat00001
여기서, ValueOf(Vk)은 내부 변수 또는 상태 변수 Vk의 값을 의미한다.
그리고 이러한 모델 상태를 트리로 관리하기 위하여 하나의 모델 상태를 트리의 노드로 정의하고, 시간별 입력 변수 값 세트인 Sm(I)에 의해서 트리 노드가 확장된다. 이러한 입력 변수 값 세트 Sm(I)를 생성하는 모듈이 입력 생성부(140)이다.
본 발명에 따른 입력 생성부(140)는 시스템의 말단 입력 변수에 어떠한 값을 넣어야 할지를 결정하는 모듈로서, 도 5에 도시된 바와 같이 총 다섯 단계들로 구성된 프로세스를 따라 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출한다.
모델 시뮬레이터(150)는 입력에 따라 모델의 행동을 시뮬레이션 하는 역할을 담당한다. 모델 시뮬레이터(150)는 테스트 케이스 생성기에서 입력에 따라 모델을 시뮬레이션 하여 출력 값을 검토하기 위한 목적과, 입력에 따라 내부 변수 값이나 상태가 변화하는 것을 확인하기 위한 목적으로 사용된다. 이는 내부 변수 값이나 상태 변화를 확인하여야만 테스트 커버리지 목표가 달성되었는지 달성되지 않았는지 확인할 수 있기 때문이다.
이러한 모델 시뮬레이터(150)는 테스트 케이스 생성도구(110)에 다음의 기능을 제공한다. 즉, 시간에 따라 변화하는 입력에 대응하는 출력의 변화를 얻어올 수 있고, 시간에 따라 변화하는 입력에 대응하는 내부 변수나 상태 값을 얻어 올 수 있으며, 시뮬레이터의 상태를 저장하는 'Snapshot'기능과, 복구(Restore) 기능을 제공한다.
테스트 케이스 DB(160)는 테스트 커버리지 목표를 만족하는 입력 시퀀스를 저장하고 있다. 이때 저장되는 테스트 케이스는 시간에 따른 입력 시퀀스 뿐만 아니라 그에 상응하는 예상 출력 값도 모델로부터 얻어와 기록한다. 또한 해당 테스트 케이스가 달성한 테스트 커버리지 정보도 같이 저장한다.
도 5는 본 발명에 따라 SMT/시뮬레이션을 이용하여 입력값을 생성하는 절차를 도시한 순서도이다.
본 발명에 따라 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 절차는 도 5에 도시된 바와 같이, 변수와 입력 간의 관계를 찾기 위한 모델 분석 단계(S201)와, 시뮬레이션을 이용한 변수 분석 단계(S202)와, 테스트 조건에 사용된 상수 및 변수를 숫자로 치환하는 단계(S203)와, 에스엠티 솔버(SMT solver)를 이용하여 테스트 조건을 푸는 단계(S204)와, 테스트 조건을 참으로 만드는 입력 값의 집합 생성하는 단계(S205)로 구성된다.
도 5를 참조하면, 변수와 입력간의 관계를 찾기 위한 모델 분석 단계(S201)는 스테이트플로우(Stateflow)에 사용되는 변수에 영향을 주는 입력들을 검색하는 과정으로서, 입력 값이 그대로 변수 값에 매핑이 되는지를 분석한다. 즉, 입력 값으로 1을 입력하면 영향을 받는 변수 값이 1이 되어야 한다.
시뮬레이션을 이용한 변수 분석 단계(S202)는 모델의 시뮬레이션 상태 S0를 저장하고, 입력을 고정시킨 후 1 틱(tick) 시뮬레이션을 실행하여 시뮬레이션 상태 S1을 만든다. 상태 S0와 S1에서 모델의 모든 변수들의 값을 비교하여 값이 변경된 변수들을 추려낸다. 다시 상태 S0에서 동일하게 입력을 고정시킨 후 2 틱(ticks) 시뮬레이션을 실행하여 상태 S2를 만든다. 상태 S1과 S2에서 추려낸 변수들의 값을 비교하여 상태가 S0 -> S1 -> S2로 진행되면서 변수 값들이 증가하거나 감소하는 변수들을 상태 S0에서의 시간 변수들로 등록하며, 틱(tick) 마다의 값의 변화량을 함께 파악하게 된다.
테스트 조건에 사용된 상수 및 변수를 숫자로 치환하는 단계(S203)는 SMT 솔버(solver)에 테스트 조건의 논리식을 넣기 전에 테스트 조건에 사용된 상수 또는 시뮬레이션 실행 중에 변하지 않는 변수를 숫자로 치환한다.
SMT 솔버(solver)를 이용한 테스트 조건 풀기 단계(S204)는 SMT solver를 이용하여 테스트 조건의 변수 값의 해를 구한다.
그리고 테스트 조건을 참으로 만드는 입력 값의 집합 생성하는 단계(S205)는 SMT solver를 이용하여 구한 변수가 제 1 단계의 모델 분석(S201)을 통해 입력의 영향을 받는 변수인지 제 2 단계의 시뮬레이션 분석(S202)을 통해 시간의 영향을 받는 변수인지 판별한 후, 변수 값의 해를 입력 값에 반영 또는 시간에 반영한다.
이와 같은 본 발명의 방법에 따르면, Simulink/Stateflow 모델로부터 테스트 케이스를 자동 생성할 때, 시스템 모델의 입력과 변수 간의 관계를 분석하여 SMT solver와 시뮬레이션을 통해 휴리스틱(heuristic)한 입력의 조합을 매우 짧은 시간 안에 찾아낼 수 있다.
도 6은 도 5에 도시된 모델 분석 단계를 설명하기 위한 도면의 예이다.
모델 분석 단계(S201)는 도 6에 도시된 바와 같이, 스테이트플로우(Stateflow)에 사용된 "Power"라는 변수는 Stateflow를 포함하고 있는 컨트롤러(Controller) 블록의 입력 포트 중에 Power 포트와 매핑되어 있으며, Power 포트는 선을 통해 Power 입력 블록과 연결되어 있다. Power 입력 블록은 더 이상 선행 방향으로 연결되어 있는 블록이 존재하지 않는다. 즉, Power 입력 블록이 Stateflow에 사용된 Power 변수와 매핑 관계를 가진다. 또한 Power 입력 블록에 값 1을 넣으면 Stateflow의 Power 변수 값이 1이 된다.
도 7은 도 5에 도시된 시뮬레이션 분석 단계를 설명하기 위해 도시한 도면의 예이다.
시뮬레이션 분석 단계(S202)는 도 7에 도시된 바와 같이, 현재 시뮬레이션 상태(S0)에서의 모든 변수의 값들과 입력을 동일하게 고정시킨 후 1 틱(tick), 2 틱(ticks)를 실행한 상태 S1과 S2의 변수 값들을 비교하여 시간에 따라 증가 되거나 감소 되는 변수들을 시간 변수로 가정한다. 그리고 각 틱(tick) 마다 증가 또는 감소되는 변화량을 시간 변수마다 가지게 된다. 즉, 도 7에서 "section"이라는 시간 변수는 틱(tick) 마다 1씩 증가 된다 라는 정보를 가지게 된다.
도 8은 도 5에 도시된 테스트 조건 치환 단계를 설명하기 위해 도시한 도면의 예이다.
도 8을 참조하면, 테스트 조건 치환 단계(S203)는 Stateflow의 트랜지션(transition)에 사용되는 테스트 조건의 논리식에 있는 상수와 시뮬레이션 중 값이 변하지 않는 변수를 이미 알고 있는 숫자로 치환한다.
이어서 SMT Solver 적용 단계(S204)에서는 [A_Cap < 119.05] 등의 치환된 테스트 조건을 SMT Solver 모듈에 넣으면 SMT Solver의 출력으로 치환된 테스트 조건을 참으로 만드는 A_Cap 변수를 해를 얻을 수 있다. 예를 들어, A_Cap=119라는 해를 얻게 된다.
그리고 테스트 입력 생성 단계(S205)에서는 SMT Solver를 통해 해를 얻은 변수에 대해서 모델의 입력에 의해 값이 변하는 변수인지 시간에 의해 값이 변하는 변수 인지를 판별한다. 그 후 모델의 입력에 의해 값이 변하는 변수라면 해당 입력에 값을 넣는 테스트 케이스를 생성하고, 시간에 의해 값이 변하는 변수라면 해당 시간 동안 또는 틱(tick) 동안 대기(wait)하는 테스트 케이스를 생성한다.
이상에서 본 발명은 도면에 도시된 일부 실시 예를 참고로 설명되었으나, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.
100: 테스트 케이스 생성 시스템 110: 테스트 케이스 생성도구
120: 커버리지 목표 관리부 130: 모델 상태 트리 관리부
140: 입력 생성부 150: 모델 시뮬레이터
160: 테스트 케이스 DB

Claims (4)

  1. 사용자가 선택한 커버리지 기준에 따라 요구사항 모델로부터 커버리지 목표를 생성하고, 테스트 케이스 생성 과정에서 커버리지 목표 달성 여부를 확인하는 커버리지 목표 관리부와, 요구사항 모델의 내부 상태 변수 및 내부 상태 값을 이용하여 상태를 정의하되, 요구사항 모델의 초기 상태로부터 입력 값을 인가함에 따라 요구사항 모델의 상태를 하나의 노드로 정의하고, 생성된 노드들을 트리로 관리하는 모델 상태 트리 관리부와, 테스트 케이스 생성 알고리즘에서 커버리지 목표를 찾아가려고 할 때 필요한 요구사항 모델의 말단 포트별로 인가해야 하는 값을 생성하는 입력 생성부와, 정형 요구사항 모델을 변경하지 않고, 블랙박스 테스트용 테스트 케이스를 입력하기 위하여 다이나믹 데이터 분석 기법을 사용하여 요구사항 모델에서 찾아낸 테스트 케이스 입력을 인가하고, 인가한 입력에 의해 실제 커버리지 목표가 달성되었는지 확인하거나 시스템 상태를 살펴보거나 예상 출력 값을 얻어내기 위한 모델 시뮬레이터와, 테스트 케이스 DB와, 상기 커버리지 목표를 만족시키기 위한 테스트 케이스를 생성하여 생성된 테스트 케이스를 상기 테스트 케이스 DB에 저장하는 테스트 케이스 생성 도구를 구비하는 테스트 케이스 자동 생성 시스템의 입력값 생성 방법에 있어서,
    상기 입력 생성부가 변수와 입력 간의 관계를 찾기 위해 모델 분석하는 제 1 단계;
    시뮬레이션을 이용하여 변수를 분석하는 제 2 단계;
    테스트 조건에 사용된 상수 또는 시뮬레이션 실행 중에 변하지 않는 변수를 숫자로 치환하는 제 3 단계;
    에스엠티 솔버(SMT solver)를 이용하여 테스트 조건을 만족하는 해를 구하는 제 4 단계; 및
    테스트 조건을 참으로 만드는 입력 값의 집합을 생성하는 제 5 단계를 포함하고,
    상기 제 1 단계는
    스테이트플로우(Stateflow)에 사용되는 변수에 영향을 주는 입력들을 검색하는 과정으로서, 입력 값이 그대로 변수 값에 매핑이 되는지를 분석하고,
    상기 제 2 단계는
    모델의 시뮬레이션 상태 S0를 저장하고, 입력을 고정시킨 후 1 틱(tick) 시뮬레이션을 실행하여 시뮬레이션 상태 S1을 만들고, 상태 S0와 S1에서 모델의 모든 변수들의 값을 비교하여 값이 변경된 변수들을 찾아낸 후 다시 상태 S0에서 동일하게 입력을 고정시킨 후 2 틱(ticks) 시뮬레이션을 실행하여 상태 S2를 만들어, 상태 S1과 S2에서 찾아낸 변수들의 값을 비교하여 상태가 S0 -> S1 -> S2로 진행되면서 변수 값들이 증가하거나 감소하는 변수들을 상태 S0에서의 시간 변수들로 등록하며,
    상기 제 5 단계는
    에스엠티 솔버(SMT Solver)를 통해 해를 얻은 변수에 대해서 모델의 입력에 의해 값이 변하는 변수인지 시간에 의해 값이 변하는 변수인지를 판별한 후, 모델의 입력에 의해 값이 변하는 변수라면 해당 입력에 값을 넣는 테스트 케이스를 생성하고, 시간에 의해 값이 변하는 변수라면 해당 시간 동안 또는 틱(tick) 동안 대기(wait)하는 테스트 케이스를 생성하는 것을 특징으로 하는 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법.
  2. 삭제
  3. 삭제
  4. 삭제
KR1020130036712A 2013-04-04 2013-04-04 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법 KR101334806B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130036712A KR101334806B1 (ko) 2013-04-04 2013-04-04 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130036712A KR101334806B1 (ko) 2013-04-04 2013-04-04 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법

Publications (1)

Publication Number Publication Date
KR101334806B1 true KR101334806B1 (ko) 2013-11-29

Family

ID=49858830

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130036712A KR101334806B1 (ko) 2013-04-04 2013-04-04 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법

Country Status (1)

Country Link
KR (1) KR101334806B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180104414A (ko) * 2017-03-13 2018-09-21 국방과학연구소 임베디드 시스템의 테스팅을 위한 테스트 스크립트 생성 장치 및 그 방법
CN113190439A (zh) * 2021-04-22 2021-07-30 北京百度网讯科技有限公司 测试用例的执行方法、装置和电子设备
CN113468065A (zh) * 2021-07-19 2021-10-01 京东科技控股股份有限公司 测试用例的运行方法及装置
CN114076683A (zh) * 2020-08-17 2022-02-22 上海汽车集团股份有限公司 一种智能驾驶功能的测试评价方法及装置
CN115617700A (zh) * 2022-12-19 2023-01-17 华东交通大学 基于关系分析的测试用例设计、生成方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110036796A (ko) * 2008-05-19 2011-04-11 존슨 컨트롤스 테크놀러지 컴퍼니 하나의 소프트웨어의 적어도 일 부분을 검증하기 위해 테스트 케이스들을 자동 공식화하는 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110036796A (ko) * 2008-05-19 2011-04-11 존슨 컨트롤스 테크놀러지 컴퍼니 하나의 소프트웨어의 적어도 일 부분을 검증하기 위해 테스트 케이스들을 자동 공식화하는 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문1:정보과학회논문지 : 컴퓨팅의 실제 및 레터 제15권 제1호, 2009.1 *
논문1:정보과학회논문지 : 컴퓨팅의 실제 및 레터 제15권 제1호, 2009.1*

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180104414A (ko) * 2017-03-13 2018-09-21 국방과학연구소 임베디드 시스템의 테스팅을 위한 테스트 스크립트 생성 장치 및 그 방법
KR101989311B1 (ko) * 2017-03-13 2019-06-14 국방과학연구소 임베디드 시스템의 테스팅을 위한 테스트 스크립트 생성 장치 및 그 방법
CN114076683A (zh) * 2020-08-17 2022-02-22 上海汽车集团股份有限公司 一种智能驾驶功能的测试评价方法及装置
CN113190439A (zh) * 2021-04-22 2021-07-30 北京百度网讯科技有限公司 测试用例的执行方法、装置和电子设备
CN113190439B (zh) * 2021-04-22 2024-03-22 北京百度网讯科技有限公司 测试用例的执行方法、装置和电子设备
CN113468065A (zh) * 2021-07-19 2021-10-01 京东科技控股股份有限公司 测试用例的运行方法及装置
CN115617700A (zh) * 2022-12-19 2023-01-17 华东交通大学 基于关系分析的测试用例设计、生成方法及系统

Similar Documents

Publication Publication Date Title
US6385765B1 (en) Specification and verification for concurrent systems with graphical and textual editors
KR101334806B1 (ko) 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법
US20130191689A1 (en) Functional testing of a processor design
CN111382070B (zh) 兼容性测试方法、装置、存储介质和计算机设备
CN113127347B (zh) 一种接口测试方法、装置、设备及可读存储介质
US20210103514A1 (en) Reusable test cases for identifiable patterns
CN103186463B (zh) 确定软件的测试范围的方法和系统
CN109669436B (zh) 一种基于电动汽车的功能需求的测试用例生成方法和装置
US20160170868A1 (en) Method and apparatus for the automated testing of a subsystem of a safety critical system
Kaya et al. E-Cosmic: A business process model based functional size estimation approach
Hamza et al. Web and mobile applications' testing using black and white box approaches
KR101291817B1 (ko) 요구사항 모델 기반 테스트 케이스 자동 생성 시스템 및 방법
US20120166168A1 (en) Methods and systems for fault-tolerant power analysis
Mehrabadi et al. Verification, validation and uncertainty quantification (VV&UQ) framework applicable to power electronics systems
CN111580409B (zh) 面向实时嵌入式系统的故障仿真测试方法
CN115248783B (zh) 软件测试方法、系统、可读存储介质及计算机设备
US9916412B2 (en) Automatic generation of test layouts for testing a design rule checking tool
Lai et al. Defining and verifying behaviour of domain specific language with fUML
CN113688134A (zh) 基于多维数据的可视化变量管理方法、系统及设备
KR101330141B1 (ko) 테스트 케이스 자동 생성 시스템의 노드 선택 방법
Safarpour et al. Trace compaction using SAT-based reachability analysis
EP3572945A1 (en) System and method for safety-critical software automated requirements-based test case generation
CN114143235A (zh) Nfv自动测试方法、装置、设备及存储介质
Khalilian et al. On the evaluation of automatic program repair techniques and tools
US9477800B1 (en) System, method, and computer program product for automatically selecting a constraint solver algorithm in a design verification environment

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171227

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee