KR101038397B1 - 로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템 - Google Patents
로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템 Download PDFInfo
- Publication number
- KR101038397B1 KR101038397B1 KR1020090055053A KR20090055053A KR101038397B1 KR 101038397 B1 KR101038397 B1 KR 101038397B1 KR 1020090055053 A KR1020090055053 A KR 1020090055053A KR 20090055053 A KR20090055053 A KR 20090055053A KR 101038397 B1 KR101038397 B1 KR 101038397B1
- Authority
- KR
- South Korea
- Prior art keywords
- test
- factors
- alternating
- relationship
- factor
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test 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)
- Stored Programmes (AREA)
Abstract
Description
본 발명의 실시예들은 로봇 소프트웨어에 대한 단위 테스트 적용 시 테스트의 신뢰도를 높이기 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템에 관한 것이다.
소프트웨어는 점점 복잡해지고 끊임없이 변화하므로 소프트웨어 검증(test)에 대한 요구 또한 갈수록 복잡해지고 어려워지고 있다. 일반적으로, 소프트웨어의 테스트 타입은 소프트웨어의 유닛 단위로 테스트하는 유닛 테스트(Unit Test), 복수의 유닛인 인터그레이션 단위로 테스트하는 인테그레이션 테스트(Integration Test), 또는 시스템 단위로 테스트하는 시스템 테스트(System Test)로 크게 구분된다. 소프트웨어의 테스트는 소프트웨어의 기능을 테스트하기 위한 테스트 프로그램에 각종 변수를 대입하여 소프트웨어를 시뮬레이션 하는 형식으로 이루어진다.
여기서, 유닛 테스트란, 테스트 대상 소프트웨어의 최소 모듈을 결정한 후, 결정된 최소 모듈을 나머지 코드와 분리하고, 분리한 최소 모듈이 예상대로 정확하 게 동작하는지 여부를 테스트하는 방법이다. 또한, 인터그레이션 테스트(통합 테스트)란, 유닛 테스트가 논리적으로 확장된 테스트 방법이다. 가장 단순한 형태의 인터그레이션 테스트는 이미 테스트를 마친 두 유닛을 하나의 구성 요소로 통합하고 두 유닛 사이의 인터페이스를 테스트하는 것이다. 즉, 인터그레이션 테스트는 유닛이 결합될 때 발생하는 문제점을 식별하기 위한 테스트 방법이다. 한편, 시스템 테스트란, 하나의 시스템 단위로 테스트 하는 방법으로 개별적인 소프트웨어 프로그램들의 테스트가 끝난 후 실행되는 전체적인 테스트 방법이다. 여기서, 시스템 테스트는 프로그램 테스트뿐 아니라 사용자가 직접 시스템을 이용하는 부분까지도 테스트할 수 있다.
그러나, 이러한 소프트웨어 테스트는 사용자가 소프트웨어의 테스트 타입을 선택하고 테스트하는데 사용되는 변수, 서브 함수 등을 모두 별도로 정의하고 테스트 케이스를 만들어야 하는 완전수동 방식으로 수행되게 된다.
한편, 로봇 소프트웨어 분야에서 역시 마찬가지로 소프트웨어의 기술이 발전하면서 소프트웨어 검증에 대한 부담이 늘어나고 비용도 늘어나게 된다. 로봇 소프트웨어의 경우 사람의 안전에 관련될 수 있기 때문에 매우 높은 안정성과 신뢰성이 요구되고 있다. 소프트웨어 테스트시 가장 먼저 시행되는 것이 각 소프트웨어 모듈의 단위 테스트가 될 것이다. 이는 개발하는 모든 코드에 대해 시행하게 되는데 이때 테스트의 인자로 들어가는 값들의 조합을 모두 고려하여 테스트하게 되면 시간이 매우 오래 걸리게 된다. 때문에, 모든 조합을 테스트하지 않고 상관 관계가 있는 인자들의 조합을 중심적으로 테스트 하게 되는데, 이때 몇 가지의 인 자의 교호강도를 가지고 테스트 할 것인지는 개발자만이 알 수 있다. 기존의 방법에 의한 소프트웨어 테스트는 인자의 교호강도의 수가 휴리스틱하다고 할 수 있다.
본 발명의 일실시예는 로봇 소프트웨어의 단위 테스트 적용 시 모든 인자의 조합을 테스트 하지 않고 필요한 만큼의 테스트를 진행하여 테스트의 시간과 비용을 아낄 수 있는 로봇 소프트웨어 테스트의 교호강도 결정 방법을 제공한다.
본 발명의 일실시예는 로봇 소프트웨어 테스트의 교호강도 결정 방법을 이용하여 인자의 모든 조합의 테스트 케이스를 생성하지 않고 최적의 테스트 케이스를 자동으로 생성할 수 있는 로봇 소프트웨어의 자동화 테스트 시스템을 제공한다.
본 발명의 일실시예에 따른 로봇 소프트웨어의 자동화 테스트 시스템은 사용자가 입력한 소스코드에서 테스트 대상함수를 인식하는 소스 인식 모듈; 상기 테스트 대상함수의 테스트 인자 간 상호관계로부터 테스트 교호강도 수를 결정하는 인자 패턴 분석 모듈; 및, 상기 테스트 교호강도 수에 따라 상기 테스트 인자의 조합으로 테스트 케이스를 생성하는 테스트 케이스 생성 모듈을 포함한다.
본 발명의 일실시예에 따른 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법은 소스 인식 모듈과 인자 패턴 분석 모듈로 구성된 자동화 테스트 시스템의 테스트 교호강도 결정 방법에 있어서, 상기 소스 인식 모듈에서 사용자가 입력한 소스코드에서 테스트 대상함수를 인식하는 단계; 및, 상기 인자 패턴 분석 모듈에서 상기 테스트 대상함수의 테스트 인자 간 상호관계로부터 테스트 교호강도 수를 결정하는 단계를 포함한다.
본 발명의 일실시예에서 상기 테스트 교호강도 수를 결정하는 단계는, 상기 테스트 대상함수에서 상기 테스트 인자 간의 상호관계를 분석하는 단계와, 상기 상호관계에 있는 테스트 인자가 발견되면 상기 테스트 교호강도 수를 증가시키는 단계와, 상기 테스트 대상함수에 대한 분석이 끝나는 시점의 테스트 교호강도 수를 최종 테스트 교호강도 수로 결정하는 단계를 포함한다.
본 발명의 일실시예에서 상기 테스트 인자 간의 상호관계는 서로 다른 둘 이상의 테스트 인자가 한 문장에 같이 사용되는 동시 사용 관계, 서로 다른 둘 이상의 테스트 인자 중 한 문장에 선택적으로 사용되는 선택적 사용 관계, 서로 다른 둘 이상의 테스트 인자 중 하나의 테스트 인자가 사용된 문장과 연속적으로 나타나는 문장에서 다른 하나의 테스트 인자가 사용되는 종속 관계, 서로 다른 둘 이상의 테스트 인자 중 하나의 테스트 인자 이후의 블록 문장 내에서 다른 하나의 테스트 인자가 사용되는 포함 관계를 포함한다.
본 발명의 일실시예에서 상기 테스트 인자 간의 상호관계는 상기 동시 사용 관계, 선택적 사용 관계, 종속 관계, 포함 관계 중 적어도 두 개의 관계가 조합된 관계 또는, 상기 테스트 대상함수의 리턴 값에 직접 영향을 주는 관계를 더 포함한다.
본 발명의 일실시예에 따른 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법은 상기 자동화 테스트 시스템은 테스트 케이스 생성 모듈을 더 포함하는 것으로, 상기 테스트 케이스 생성 모듈에서 상기 결정된 테스트 교호강도 수에 따라 상기 테스트 인자의 조합으로 테스트 케이스를 생성하는 단계를 더 포함 한다.
본 발명의 일실시예에서 상기 테스트 케이스를 생성하는 단계는 상기 테스트 교호강도 수에 따라 상기 테스트 인자의 직교배열을 이용하여 상기 테스트 케이스를 생성한다.
본 발명의 일실시예에 따르면, 로봇 소프트웨어의 단위 테스트 시 테스트되는 함수의 인자들의 교호강도 수를 임의로 정하는 것을 소스 코드를 분석함으로써 최적의 교호강도 수를 제시할 수 있다. 이를 통하여 최소한의 테스트 케이스를 생성하여 최대한의 테스트 효과를 얻음으로써 테스트에 소요되는 시간과 비용을 현저히 줄일 수 있다. 특히, 테스트 케이스를 작성하는 과정을 자동화 함으로써 로봇 소프트웨어의 테스트를 더욱 신속하게 진행할 수 있다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명의 일실시예는 로봇 소프트웨어의 단위 테스트 적용 시 최적의 테스트 케이스를 자동으로 생성할 수 있는 테스트 교호강도 결정 방법 및 자동화 테스트 시스템을 제공한다.
도 1은 본 발명의 일실시예에 따른 로봇 소프트웨어의 자동화 테스트 시스템의 내부 구성을 도시한 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 로봇 소프트웨어의 자동화 테스트 시스템은 사용자 인터페이스(101)와, 소스 인식 모듈(102)과, 인자 패턴 분석 모듈(103)과, 테스트 케이스 생성 모듈(104)과, 테스트 케이스 저장소(105)로 구성된다.
사용자 인터페이스(101)는 사용자와의 인터페이스 역할을 수행하는 것으로 사용자로부터 소프트웨어의 소스 코드를 입력 받는다.
소스 인식 모듈(102)은 사용자의 요청에 따라 사용자가 사용자 인터페이스(101)를 통해 입력한 소스 코드에서 테스트 대상이 되는 함수 즉, 테스트 대상함수를 인식하는 기능을 수행한다.
인자 패턴 분석 모듈(103)은 소스 코드 내에서 테스트 대상함수의 인자(이하, '테스트 인자'라 칭함)들이 어떻게 사용되는지를 분석하면서 테스트 인자 간의 상호관계로부터 테스트 교호강도 수를 결정하는 기능을 수행한다.
테스트 케이스 생성 모듈(104)은 인자 패턴 분석 모듈(103)에서 결정된 테스트 교호강도 수에 따라 테스트 인자의 조합으로 테스트 케이스를 생성하는 기능을 수행한다.
테스트 케이스 저장소(105)는 테스트 케이스 생성 모듈(104)에서 생성된 테스트 케이스를 저장하기 위한 수단으로, 테스트 케이스를 생성 날짜와 해당 테스트 대상함수의 이름을 기준으로 구별하여 저장한다.
인자 패턴 분석 모듈(103)에서 테스트 교호강도 수를 결정하는 과정을 상세하게 설명한다.
인자 패턴 분석 모듈(103)은 테스트 대상함수 내에서 교호작용이 일어나는 테스트 인자를 분석한다. 교호작용이란 테스트 대상함수로 들어가는 각 테스트 인자 간의 상호작용에 의해 해당 함수의 결과가 달라지는 것을 의미한다. 이때, 각기 다른 테스트 대상함수는 테스트 인자의 수가 다르며 특히 교호작용이 일어나는 테스트 인자의 수가 다르게 된다. 이러한 교호작용이 일어나는 테스트 인자들의 수 중에서 가장 큰 값을 교호강도라고 한다. 예를 들어, 테스트 대상함수에 테스트 인자 A,B,C,D,E가 있을 때 A와 B가 교호작용을 하고 C,D,E가 교호작용을 한다면 해당 테스트 대상함수의 교호강도는 3이 된다.
로봇 소프트웨어 화이트 박스 단위 테스트 시에 테스트 커버리지를 만족하면서 테스트의 신뢰성을 높이기 위해서는 테스트 교호강도의 수를 결정하는 것이 바람직하다. 본 발명의 일실시예는 인자 패턴 분석 모듈(103)을 통해 프로그램 소스에서 테스트 대상함수의 테스트 인자가 어떤 식으로 사용되는지를 분석하여 테스트 교호강도의 수를 자동으로 결정할 수 있다. 인자 패턴 분석 모듈(103)은 소스 상에서 테스트 인자 간의 상호 관계 즉, 테스트 인자의 사용 패턴을 분석하여 특정 상호 관계에 있는 테스트 인자가 발견되면 테스트 교호강도의 수를 늘리는 방식으로 테스트 대상함수에 대한 분석이 끝나는 시점에 최적의 테스트 교호강도 수를 결정할 수 있다.
도 2는 본 발명의 일실시예에 따른 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법의 과정을 설명하기 위한 도면이다. 여기서, 본 발명의 일실시예에 따른 테스트 교호강도 결정 방법은 도 1에 도시한 자동화 테스트 시스 템에 의해 실행될 수 있다.
소스 코드의 분석을 시작하는 시점에 소스에 들어있는 문장의 끝을 나타내는 플래그 값(EndFlag)과 테스트 교호강도 수를 나타내는 교호강도 값(N)은 0(zero)으로 설정된다(S201)(S202).
소스에서 한 문장씩 읽어오고 현재 읽어온 문장이 끝 문장인지 판단한다(S203)(S204). 이때, 상기 읽어온 문장이 끝 문장일 경우 플래그 값을 1로 변경하고(S205), 끝 문장이 아닐 경우 상기 읽어온 문장에서 테스트 대상함수의 테스트 인자들이 존재하는지 여부를 확인한다(S206).
테스트 대상함수에 테스트 인자가 존재하지 않으면 다른 문장을 읽어오고 테스트 인자가 존재하면 테스트 인자 간에 교호작용이 일어나는 상호관계를 분석하여 테스트 인자 간의 상호관계에 따라 교호강도 수를 증가시킨다(S207)(S208)(S209).
테스트 인자 간의 상호관계는 동시 사용 관계, 선택적 사용 관계, 종속 관계, 포함 관계가 있을 수 있다. 테스트 대상함수의 파라미터에는 입력 인자와 출력 인자가 포함되어 있는데 테스트 인자 간의 상호관계는 함수의 출력에 영향을 주게 되는 입력인자의 상호관계를 의미할 수 있다.
테스트 인자 간의 상호관계는 다음과 같이 정리할 수 있다.
(1) 동시 사용 관계: 동시 사용이란 소스코드의 한 문장(이때, 문장이란, ;로 끝나는 코드를 의미한다.) 안에서 입력으로 들어가는 인자들이 같이 사용되는 경우를 의미한다. 한 문장에서 같은 인자가 사용되는 것은 두 인자 사이의 관계가 함수 출력에 영향을 줄 수 있다. 표기는 '∧'로 한다.
(2) 선택적 사용 관계: 선택적 사용이란 소스코드의 한 문장 안에서 입력 인자가 둘 이상 사용되는 경우를 의미한다. 이는 인자들 간에 서로 영향을 끼치지 않기 때문에 이 인자들의 조합을 테스트할 필요가 없게 된다. 표기는 '∨'로 한다.
(3) 종속 관계: 테스트 인자들이 종속 관계에 있다는 것은 소스 코드 내에서 출력에 영향을 줄 수 있다는 것을 의미한다. 영향을 주기 위해서는 출력에 영향을 주는 변수와 관련된 곳에 사용되는 경우이다. 소스 상에서 대괄호 안의 연속된 문장에서 인자들이 사용되게 될 때 종속 관계에 있다고 하며 표기는 '←'로 한다.
(4) 포함 관계: 포함 관계란 테스트 인자 하나가 다른 인자의 사용에 영향을 주는 것으로, 하나의 인자가 사용되고 그 다음에 오는 문장에 앞서 사용된 인자의 문장에 포함되는 경우를 의미한다. 표기는 '⊃'로 한다.
본 발명의 일실시예는 기본적인 4가지 형식의 테스트 인자 간 상호관계를 이용하여 소스 코드를 분석할 수 있다. 또한, 테스트 인자 간 상호관계는 상기한 4가지의 기본적인 상호관계 중 적어도 두 개의 관계가 조합된 형식을 가질 수 있다.
테스트 인자 간의 상호관계 형식은 표 1과 같이 정의할 수 있다.
번호 | 상호관계의 형식 | 설명 | 예시 | 교호강도 수 계산법 |
1 | A∧B | 한 문장 내에서 인자가 함께 쓰이는 경우 | If(A=0 &&B="dd"){ If(A = =B){ If, for, while |
1 증가 |
2 | A∨B | A 또는 B가 선택적으로 사용되는 경우 | If (A) {} else (B){} |
증가 없음 |
3 | A←B | A의 사용 후 연속적으로 나타나는 문장에서 B가 쓰이는 경우 | int a=A int b=B |
1 증가 |
4 | A⊃B | A 이후의 블록문 내에서 B가 사용되는 경우 | If(A){ int b=B; } |
1 증가 |
5 | (A∧B)∨C 즉, 1∧2 |
If(A&&C){} else (B) {} |
1 증가 | |
6 | (A∧B)←C 즉, 1∧3 |
A나 B의 조합 다음 C가 따라서 오는 경우 | If(A=0&&B="dd"){ int c=C; } |
2 증가 |
7 | (A∧B)∨(A⊃B) 즉, 1∧4 |
3 증가 | ||
8 | (A∨B)∨(A←B) 즉, 2∧3 |
1 증가 | ||
9 | (A∨B)⊃C 즉, 2∧4 |
A나 B의 조합 다음 C가 따라서 오는 경우 | 3 증가 | |
10 | (A←B)⊃C 즉, 3∧4 |
If(A){ int c=C int b=B } |
3 증가 | |
11 | return⊃A | 리턴에 영향을 주는 인자를 추적 | 인자의 개수만큼 증가 | |
12 | 출력에 관계된 인자 | 출력에 관계된 인자는 테스트 케이스의 조합에 포함하지 않는다. | 증가 없음 | |
13 | A∧B∧C (상호작용이 일어나는 인자의 수가 지속적으로 늘어날 경우) |
교호강도 수의 증가에 영향을 주는 형식은 1,3,4로서 이 조합이 더해지게 되면 교호강도 수를 증가시킨다. | 더해지는 인자의 수 만큼 증가 | |
14 | 중복 | 같은 인자가 여러 곳에서 사용될 경우 가장 큰 값만을 계산한다. |
여기서, 번호 1 내지 4는 기본적인 형식에 해당하는 동시 사용 관계, 선택적 사용 관계, 종속 관계, 포함 관계를 의미하고, 번호 5 내지 10은 번호 1 내지 4의 기본적인 형식을 조합으로 나타낸 패턴을 의미한다. 그리고, 번호 11은 함수의 리턴에 직접 영향을 주는 경우의 패턴을 의미하고 번호 12는 인자가 함수에 대한 입력이 아닌 값을 받아오는 경우의 패턴을 의미한다. 마지막으로, 번호 13은 번호 1 내지 4 중 어느 하나의 형식이 연속적으로 나타날 경우의 패턴을 의미하는데 이때는 추가되는 인자의 수에 따라 조합 수를 증가시키면 된다.
본 발명의 일실시예는 테스트 대상함수를 분석할 때 테스트 인자가 4가지 기본적인 조합이 있는지 먼저 살펴본 후 다시 기본적인 조합에 또 다른 조합이 있는지 살펴야 한다. 상기한 방식으로 소스를 분석할 수 있는데 나올 수 있는 테스트 교호강도의 경우의 수는 매우 많아질 수 있다. 하지만, 표 1에 나타낸 바와 같이 조합 수를 증가시켜야 할 경우는 번호 1,3,4의 패턴이 관련된 경우와 번호 11과 같이 함수의 리턴 값에 직접 영향을 주는 경우가 있다고 할 수 있다.
다시 도 2에서, 상기한 과정(S203~S209)을 통해 테스트 인자가 무엇인지를 인식한 후 교호강도 값(N)이 0이나 1이면 교호강도 값(N)을 2로 초기화한다(S211). 이는, 최소한의 교호강도 수가 2가 되어야 하기 때문이다. 이후, 상기 과정(S203~S209)을 반복하여 소스에 들어있는 문장 중 끝 문장(EndFlag=1)까지 테스트 인자의 패턴을 분석한다(S210).
본 발명의 일실시예는 테스트 대상함수에 들어있는 테스트 인자 간 상호관계에 의해 테스트 교호강도 수를 결정하고 테스트 교호강도 수에 따른 테스트 인자의 조합으로 테스트 케이스를 작성할 수 있다. 본 발명의 일실시예에서 테스트 케이스는 직교 배열에 의한 알고리즘과 같이 2-way 또는 3-way 등의 방법을 이용하여 작성할 수 있다. 상기한 알고리즘은 자동화 된 것으로 테스트 교호강도 수가 결정되면 테스트 케이스를 자동으로 얻을 수 있다.
표 2는 4개(a,b,c,d)의 인자를 가진 test 함수를 일례로 교호강도 수를 결정하는 과정을 설명하기 위한 것이다.
void test (int a, int b, int c, int d) { int x=0, y=0; if (a>0) { x=2; } else { x=5; } if (b>0) { y=1+x; } if (c>0) { if (d>0) { output(x); } else { output(10); } } else { output (1/(y-6)); } } |
int mid(int x, int y, int z) { int mid mid=z if (y<z) { if(x<y){ mid=y } else{ if (x<z) { mid=x } } } else { if (x>y) { mid=y } else { if (x>z) { mid=x } } } return (mid); } |
표 2의 test 함수에서 사용된 인자 a,b,c,d를 표 1에 적용하면 인자 중 a,b는 상호관계에 있지 않고 인자 c,d의 경우 선택적 사용 관계(번호 2)에 있다는 것을 알 수 있다. 그러나, 선택적 사용 관계의 경우 교호강도 수에 영향을 주지 않으므로 교호강도 수를 초기 교호강도 값인 2로 결정한다. 이때, 4개의 인자들의 모든 조합을 고려하지 않고 2개의 조합만 가지고 테스트 케이스를 생성하여 실행하더라도 모든 커버리지를 만족할 수 있게 된다. 표 2의 test 함수의 경우 각각의 인자에 대한 후보의 범위가 -10부터 10까지 있다. 이때, 동등 분할 방법을 이용하여 테스트 케이스를 만들게 되면 각 인자의 후보가 5개씩 만들어지게 된다. 표 3에서 알 수 있듯이, 모든 조합을 사용하게 되면 총 5의 5승에 해당하는 개수만큼의 테스트 케이스가 만들어지게 되나, 본 발명의 일실시예에 따르면 테스트 교호강도 수를 2로 하여 테스트 케이스를 만들게 되면 32가지의 테스트 케이스만이 생성되게 된다. mid 함수 또한 test 함수와 마찬가지로 각각의 인자의 후보가 -10부터 10까지 이다. 인자 x,y,z의 인자들의 상관관계를 살펴보게 되면 각각의 인자가 조합될 때 교호강도 수는 +2 증가하여 교호강도 수가 2가 된다. 표 3에서 알 수 있듯이, 모든 조합의 테스트 케이스를 만들게 되면 총 5의 3승인 125개의 테스트 케이스가 만들어지지만 본 발명의 일실시예에 따른 2-way 방법으로 하게 되면 26 가지의 테스트 케이스를 가지고 모든 커버리지를 만족시킬 수 있다.
기존의 방법 | 본 발명의 방법 | |||
테스트 케이스 개수 | 커버리지 | 테스트 케이스 개수 | 분기 커버리지 | |
mid | 125 | 10/10 | 26 | 10/10 |
test | 625 | 8/8 | 32 | 8/8 |
따라서, 본 발명의 일실시예는 로봇 소프트웨어의 단위 테스트 적용시 모든 테스트 인자의 조합을 테스트하지 않고 필요한 만큼의 테스트를 진행하여 테스트의 시간과 비용을 아낄 수 있다. 또한, 본 발명의 일실시예는 소스 상에서 테스트 인자의 패턴 즉, 상호관계를 분석하여 이를 통해 테스트 케이스를 자동으로 생성하는 자동화 테스트 시스템을 구현할 수 있다.
본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
도 1은 본 발명의 일실시예에 따른 로봇 소프트웨어의 자동화 테스트 시스템의 내부 구성을 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법의 과정을 설명하기 위한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
102: 소스 인식 모듈
103: 인자 패턴 분석 모듈
104: 테스트 케이스 생성 모듈
Claims (14)
- 로봇 소프트웨어의 단위 테스트를 위한 테스트 케이스를 생성하는 자동화 테스트 시스템에 있어서,사용자가 입력한 소스코드에서 테스트 대상함수를 인식하는 소스 인식 모듈;상기 테스트 대상함수의 테스트 인자 간 상호관계로부터 테스트 교호강도 수를 결정하는 인자 패턴 분석 모듈; 및,상기 테스트 교호강도 수에 따라 상기 테스트 인자의 조합으로 테스트 케이스를 생성하는 테스트 케이스 생성 모듈을 포함하고,상기 테스트 인자 간 상호관계는,서로 다른 둘 이상의 테스트 인자가 한 문장에 같이 사용되는 동시 사용 관계, 서로 다른 둘 이상의 테스트 인자 중 한 문장에 선택적으로 사용되는 선택적 사용 관계, 서로 다른 둘 이상의 테스트 인자 중 하나의 테스트 인자가 사용된 문장과 연속적으로 나타나는 문장에서 다른 하나의 테스트 인자가 사용되는 종속 관계, 서로 다른 둘 이상의 테스트 인자 중 하나의 테스트 인자 이후의 블록 문장 내에서 다른 하나의 테스트 인자가 사용되는 포함 관계 중 적어도 하나를 포함하는 로봇 소프트웨어의 자동화 테스트 시스템.
- 삭제
- 제1항에 있어서,상기 테스트 인자 간 상호관계는,상기 동시 사용 관계, 선택적 사용 관계, 종속 관계, 포함 관계 중 적어도 두 개의 관계가 조합된 관계를 더 포함하는, 로봇 소프트웨어의 자동화 테스트 시스템.
- 제1항에 있어서,상기 테스트 인자 간 상호관계는,상기 테스트 대상함수의 리턴 값에 직접 영향을 주는 관계를 더 포함하는, 로봇 소프트웨어의 자동화 테스트 시스템.
- 제1항에 있어서,상기 인자 패턴 분석 모듈은,상기 상호관계에 있는 테스트 인자가 발견되면 상기 테스트 교호강도 수를 증가시키면서 상기 테스트 대상함수에 대한 분석이 끝나는 시점의 테스트 교호강도 수를 최종 테스트 교호강도 수로 결정하는, 로봇 소프트웨어의 자동화 테스트 시스템.
- 제1항에 있어서,상기 테스트 케이스 생성 모듈은,상기 테스트 교호강도 수에 따라 상기 테스트 인자의 직교배열을 이용하여 상기 테스트 케이스를 생성하는, 로봇 소프트웨어의 자동화 테스트 시스템.
- 로봇 소프트웨어의 단위 테스트를 위하여 소스 인식 모듈과 인자 패턴 분석 모듈로 구성된 자동화 테스트 시스템의 테스트 교호강도 결정 방법에 있어서,상기 소스 인식 모듈에서 사용자가 입력한 소스코드에서 테스트 대상함수를 인식하는 단계; 및,상기 인자 패턴 분석 모듈에서 상기 테스트 대상함수의 테스트 인자 간 상호관계로부터 테스트 교호강도 수를 결정하는 단계를 포함하고,상기 테스트 인자 간 상호관계는,서로 다른 둘 이상의 테스트 인자가 한 문장에 같이 사용되는 동시 사용 관계, 서로 다른 둘 이상의 테스트 인자 중 한 문장에 선택적으로 사용되는 선택적 사용 관계, 서로 다른 둘 이상의 테스트 인자 중 하나의 테스트 인자가 사용된 문장과 연속적으로 나타나는 문장에서 다른 하나의 테스트 인자가 사용되는 종속 관계, 서로 다른 둘 이상의 테스트 인자 중 하나의 테스트 인자 이후의 블록 문장 내에서 다른 하나의 테스트 인자가 사용되는 포함 관계 중 적어도 하나를 포함하는 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법.
- 제7항에 있어서,상기 테스트 교호강도 수를 결정하는 단계는,상기 테스트 대상함수에서 상기 테스트 인자 간의 상호관계를 분석하는 단계와,상기 상호관계에 있는 테스트 인자가 발견되면 상기 테스트 교호강도 수를 증가시키는 단계와,상기 테스트 대상함수에 대한 분석이 끝나는 시점의 테스트 교호강도 수를 최종 테스트 교호강도 수로 결정하는 단계를 포함하는, 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법.
- 삭제
- 제7항에 있어서,상기 테스트 인자 간 상호관계는,상기 동시 사용 관계, 선택적 사용 관계, 종속 관계, 포함 관계 중 적어도 두 개의 관계가 조합된 관계를 더 포함하는, 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법.
- 제7항에 있어서,상기 테스트 인자 간 상호관계는,상기 테스트 대상함수의 리턴 값에 직접 영향을 주는 관계를 더 포함하는, 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법.
- 제7항에 있어서,상기 자동화 테스트 시스템은 테스트 케이스 생성 모듈을 더 포함하는 것으로,상기 테스트 케이스 생성 모듈에서 상기 결정된 테스트 교호강도 수에 따라 상기 테스트 인자의 조합으로 테스트 케이스를 생성하는 단계를 더 포함하는 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법.
- 제12항에 있어서,상기 테스트 케이스를 생성하는 단계는,상기 테스트 교호강도 수에 따라 상기 테스트 인자의 직교배열을 이용하여 상기 테스트 케이스를 생성하는, 로봇 소프트웨어의 단위 테스트를 위한 테스트 교호강도 결정 방법.
- 제7항, 제8항, 제10항 내지 제13항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090055053A KR101038397B1 (ko) | 2009-06-19 | 2009-06-19 | 로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090055053A KR101038397B1 (ko) | 2009-06-19 | 2009-06-19 | 로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100136773A KR20100136773A (ko) | 2010-12-29 |
KR101038397B1 true KR101038397B1 (ko) | 2011-06-01 |
Family
ID=43510705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090055053A KR101038397B1 (ko) | 2009-06-19 | 2009-06-19 | 로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101038397B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678968A (zh) * | 2017-10-18 | 2018-02-09 | 北京奇虎科技有限公司 | 源码函数的样本提取方法、装置、计算设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279416A (zh) * | 2013-05-30 | 2013-09-04 | 浪潮(北京)电子信息产业有限公司 | 一种存储软件自动化测试系统和方法 |
CN105677563B (zh) * | 2016-01-05 | 2018-08-14 | 南昌航空大学 | 一种基于SysML模块图的集成测试序列生成方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010103547A (ko) * | 2000-05-09 | 2001-11-23 | 남궁석 | 소프트웨어 테스트 시스템 및 그 방법 |
KR20070087400A (ko) * | 2006-02-23 | 2007-08-28 | 삼성전자주식회사 | 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템 |
-
2009
- 2009-06-19 KR KR1020090055053A patent/KR101038397B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010103547A (ko) * | 2000-05-09 | 2001-11-23 | 남궁석 | 소프트웨어 테스트 시스템 및 그 방법 |
KR20070087400A (ko) * | 2006-02-23 | 2007-08-28 | 삼성전자주식회사 | 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678968A (zh) * | 2017-10-18 | 2018-02-09 | 北京奇虎科技有限公司 | 源码函数的样本提取方法、装置、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20100136773A (ko) | 2010-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7172435B2 (ja) | 抽象コードグラフを用いたソフトウェアの表現 | |
CN104899147B (zh) | 一种面向安全检查的代码静态分析方法 | |
US10152406B2 (en) | Software program repair | |
US20180165182A1 (en) | Automated software program repair | |
JPWO2006038394A1 (ja) | ソースコード検査器、方法、プログラム及び記憶媒体 | |
EP2963547A1 (en) | Compiling device, compiling method, and storage medium storing compiler program | |
CN106547520B (zh) | 一种代码路径分析方法及装置 | |
US20110145799A1 (en) | Path-sensitive dataflow analysis including path refinement | |
EP3264274B1 (en) | Input discovery for unknown program binaries | |
US9396095B2 (en) | Software verification | |
JP6728874B2 (ja) | 未知のバイナリプログラムに対する有効な入力の決定 | |
US9134979B2 (en) | Convergence analysis in multithreaded programs | |
KR101038397B1 (ko) | 로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템 | |
JP6723483B2 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
US8996922B2 (en) | Mixed numeric and string constraint analysis | |
Khanfar et al. | Static backward program slicing for safety-critical systems | |
US8903700B2 (en) | Concretization of abstracted traces | |
US20110239197A1 (en) | Instance-based field affinity optimization | |
JP5464031B2 (ja) | プログラム検証装置、方法及びプログラム | |
WO2013161057A1 (ja) | ソースコード検査方法及び装置 | |
JP2015069400A (ja) | ソフトウェアテストシステム | |
Vert et al. | Detection of incorrect pointer dereferences for C/C++ programs using static code analysis and logical inference | |
JP7059827B2 (ja) | ソースコード生成装置 | |
US20160259711A1 (en) | Determination of valid input sequences for an unknown binary program | |
Korel et al. | Assertion-based validation of modified programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for 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: 20140320 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160324 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180515 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20190321 Year of fee payment: 9 |