KR20080068385A - 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 - Google Patents

소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 Download PDF

Info

Publication number
KR20080068385A
KR20080068385A KR1020070006102A KR20070006102A KR20080068385A KR 20080068385 A KR20080068385 A KR 20080068385A KR 1020070006102 A KR1020070006102 A KR 1020070006102A KR 20070006102 A KR20070006102 A KR 20070006102A KR 20080068385 A KR20080068385 A KR 20080068385A
Authority
KR
South Korea
Prior art keywords
test
software
api
information
variable
Prior art date
Application number
KR1020070006102A
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 KR1020070006102A priority Critical patent/KR20080068385A/ko
Priority to US12/015,570 priority patent/US20080178047A1/en
Priority to JP2008009400A priority patent/JP2008176793A/ja
Publication of KR20080068385A publication Critical patent/KR20080068385A/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 소프트웨어 테스트 시스템 등에 관한 것이다.
본 발명의 일 실시 예에 따른 소프트웨어 테스트 시스템은 시험대상 소프트웨어가 설치된 단말장치와, 상기 시험대상 소프트웨어의 테스트 데이터 및 상기 시험대상 소프트웨어의 테스트 절차에 대응하여 상기 시험대상 소프트웨어를 테스트하는 테스트 드라이버가 저장된 소프트웨어 테스트 장치를 포함하고, 상기 테스트 드라이버는 상기 단말장치에 전송되고, 상기 단말장치에서 상기 테스트 데이터와 상기 테스트 절차를 조합하여 상기 시험대상 소프트웨어를 테스트한다.
이러한 본 발명에 따르면, 시험대상 프로그램을 짧은 시간 및 적은 비용으로 테스트하는 한편, 테스트의 신뢰성을 향상시키는 등의 효과가 있다.
테스트 데이터, 변수 자료형 파티션, API 변수 파티션, 테스트 스크립트, 테스트 드라이버

Description

소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체{PROGRAM TEST SYSTEM, METHOD AND COMPUTER READABLE MEDIUM ON WHICH PROGRAM FOR EXECUTING THE METHOD IS RECORDED}
도 1은 본 발명의 일 실시 예에 따른 소프트웨어 테스트 시스템을 나타낸 도면.
도 2는 시험대상 소프트웨어의 내부정보 추출 결과를 나타낸 도면.
도 3은 시험대상 소프트웨어에 포함된 함수들간의 호출관계를 나타낸 콜 그래프(Call Graph)를 도시한 도면.
도 4는 시험대상 소프트웨어의 제어흐름그래프(Control Flow Graph, CFG)를 나타낸 도면.
도 5는 변수 자료형 파티션 생성 결과를 나타낸 도면.
도 6은 API 변수 파티션 생성 결과를 나타낸 도면.
도 7은 테스트 스크립트 생성 결과를 나타낸 도면.
도 8은 테스트 드라이버 생성 결과를 나타낸 도면.
도 9는 테스트 프로그램 생성 결과를 나타낸 도면.
도 10은 테스트 결과를 나타낸 도면.
도 11은 오류에 대한 정보를 나타낸 도면.
도 12는 본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법을 나타낸 도면.
***** 도면의 주요부분에 대한 부호의 설명 *****
1: 소프트웨어 테스트 장치 2: 단말장치
11: 내부정보 추출부 12: 테스트 데이터 생성부
13: 테스트 절차 생성부 14: 테스트 드라이버 생성부
15: 테스트 수행부 16: 오류정보 표시부
17: 테스트 결과 정보 제공부 101: 변수 자료형 파티션 생성부
102: API 변수 파티션 생성부
본 발명은 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
소프트웨어 테스트란 소프트웨어가 규정된 요구사항을 만족시키고 있는지 검증하고, 기대되는 결과와 실제 결과와의 차이를 식별하기 위해 소프트웨어 시스템 전체 또는 일부의 구성요소를 실행하고 평가하는 과정이다.
예를 들어, 휴대폰, 스마트폰, PDA 등과 같은 무선통신단말기를 개발하는 과 정에서, 개발자들은 자신이 개발한 단말기에 탑재된 소프트웨어가 무선통신시스템과 실제로 연동하여 정상적으로 작동하는지를 테스트하여야 한다. 그러한 테스트과정에서 오류가 발견되면 그 오류를 찾아서 원인을 분석하고 해결책을 찾아서 수정하는 과정을 거치게 된다.
종래의 소프트웨어 테스트 방식은 미리 준비된 테스트 케이스만을 이용해서 소프트웨어를 테스트한다.
이러한 테스트 케이스는 테스트 스크립트와 테스트 데이터를 포함하고 있기 때문에 결국 소프트웨어 테스트를 수행하기 전에 테스트를 위한 스크립트와 테스트 데이터가 모두 고정되어 있다.
이러한 종래의 소프트웨어 테스트 방식에 따르면, 테스트 데이터가 고정되어 있기 때문에 테스트를 수행한 후 테스트가 불충분하거나 불완전한 부분이 발견되어도 이를 보완할 수 없으며, 테스트가 종료된 후에 별도의 분석을 통해서 새로운 테스트 데이터를 만들어야 하기 때문에 비용과 시간이 많이 소요되는 문제점이 있다. 또한 이러한 종래의 방식은 테스트할 소프트웨어마다 별개의 테스트 프로그램을 요구하므로, 비용 및 시간적 측면에서 문제점이 있다.
이러한 문제점을 해결하기 위한 본 발명은 시간 및 비용 측면에서의 특성이 향상된 소프트웨어 테스트 시스템, 소프트웨어 테스트 방법 및 그 방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것을 목적으로 한다.
또한, 본 발명은 테스트의 신뢰성이 향상된 소프트웨어 테스트 시스템, 소프트웨어 테스트 방법 및 그 방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것을 목적으로 한다.
또한, 본 발명은 임베디드 시스템(embedded system)에 효율적으로 적용될 수 있는 소프트웨어 테스트 시스템, 소프트웨어 테스트 방법 및 그 방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것을 목적으로 한다.
이러한 기술적 과제를 달성하기 위한 본 발명의 일 실시 예에 따른 소프트웨어 테스트 시스템은 시험대상 소프트웨어가 설치된 단말장치와, 상기 시험대상 소프트웨어의 테스트 데이터 및 상기 시험대상 소프트웨어의 테스트 절차에 대응하여 상기 시험대상 소프트웨어를 테스트하는 테스트 드라이버가 저장된 소프트웨어 테스트 장치를 포함하고, 상기 테스트 드라이버는 상기 단말장치에 전송되고, 상기 단말장치에서 상기 테스트 데이터와 상기 테스트 절차를 조합하여 상기 시험대상 소프트웨어를 테스트한다.
상기 테스트 드라이버는 하나이고, 상기 단말장치에서 상기 하나의 테스트 드라이버로 상기 테스트 데이터와 상기 테스트 절차를 조합한 복수의 테스트 케이스를 수행하는 것이 바람직하다.
상기 소프트웨어 테스트 장치는 상기 테스트 결과에 대한 정보를 제공하는 테스트 결과 정보 제공부를 더 포함하는 것이 바람직하다.
상기 테스트 결과에 대한 정보는 HTML과 MS WORD와 MS Excel 중 적어도 하나의 형태로 제공되는 것이 바람직하다.
상기 테스트 데이터와 상기 테스트 절차는 상기 시험대상 소프트웨어의 내부정보에 따라 생성되고, 상기 시험대상 소프트웨어의 내부정보는 API에 대한 정보와 변수의 자료형에 대한 정보를 포함하는 것이 바람직하다.
상기 테스트 데이터는 상기 변수의 자료형 별로 테스트할 값의 범위를 지정하는 변수 자료형 파티션 및 상기 변수 자료형 파티션과 상기 API에 대한 정보에 기초하여, 상기 API에 포함된 변수 별로 테스트할 값의 범위를 지정하는 API 변수 파티션을 포함하는 것이 바람직하다.
상기 테스트 절차는 상기 API 및 상기 API에 포함된 함수에 대한 호출 순서와 상기 호출들간의 관계를 지정하는 테스트 스크립트인 것이 바람직하다.
상기 테스트 드라이버는 상기 테스트 결과를 검사하는 테스트 결과 검사 함수를 포함하는 것이 바람직하다.
상기 소프트웨어 테스트 장치는 상기 시험대상 소프트웨어의 오류에 대한 정보를 표시하는 오류정보 표시부를 더 포함하는 것이 바람직하다.
본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법은 시험대상 소프트웨어의 내부정보에 따라 테스트 데이터를 생성하는 테스트 데이터 생성단계와, 상기 시험대상 소프트웨어의 내부정보에 따라 상기 시험대상 소프트웨어에 포함된 함수들의 테스트 절차를 생성하는 테스트 절차 생성단계 및 상기 테스트 데이터와 상기 테스트 절차의 조합에 대응하여 테스트 드라이버를 생성하는 테스트 드라이버 생성 단계를 포함한다.
상기 테스트 드라이버는 하나이고, 상기 하나의 테스트 드라이버로 상기 테스트 데이터와 상기 테스트 절차가 조합된 복수의 테스트 케이스를 수행하는 것이 바람직하다.
상기 테스트 결과에 대한 정보를 제공하는 테스트 결과 정보 제공단계를 더 포함하는 것이 바람직하다.
상기 테스트 결과에 대한 정보는 HTML과 MS WORD와 MS Excel 중 적어도 하나의 형태로 제공되는 것이 바람직하다.
상기 시험대상 소프트웨어의 내부정보는 API에 대한 정보와 변수의 자료형에 대한 정보를 포함하는 것이 바람직하다.
상기 테스트 데이터 생성단계는 상기 변수의 자료형 별로 테스트할 값의 범위를 지정하는 변수 자료형 파티션을 생성하는 변수 자료형 파티션 생성단계 및
상기 변수 자료형 파티션과 상기 API에 대한 정보에 기초하여, 상기 API에 포함된 변수 별로 테스트할 값의 범위를 지정하는 API 변수 파티션을 생성하는 API 변수 파티션 생성단계를 포함하는 것이 바람직하다.
상기 테스트 절차 생성단계에서, 상기 API 및 상기 API에 포함된 함수에 대한 호출 순서와 상기 호출들간의 관계를 지정하는 테스트 스크립트를 생성하는 것이 바람직하다.
상기 테스트 드라이버는 상기 테스트 결과를 검사하는 테스트 결과 검사 함수를 포함하는 것이 바람직하다.
상기 시험대상 소프트웨어의 오류에 대한 정보를 표시하는 오류정보 표시단계를 더 포함하는 것이 바람직하다.
본 발명의 일 실시 예에 따른 컴퓨터로 읽을 수 있는 기록매체에는 본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법을 실행하기 위한 프로그램이 기록되어 있다.
이하에서는 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 소프트웨어 테스트 시스템을 나타낸 도면이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시 예에 따른 소프트웨어 테스트 시스템은 소프트웨어 테스트 장치(1)와 단말장치(2) 및 신호전송수단을 포함한다.
소프트웨어 테스트 장치(1)는 내부정보 추출부(11)와, 변수 자료형 파티션 생성부(101)와 API 변수 파티션 생성부(102)를 포함하는 테스트 데이터 생성부(12)와, 테스트 절차 생성부(13)와, 테스트 드라이버 생성부(14)와, 오류정보 표시부(16) 및 테스트 결과 정보 제공부(17)를 포함한다.
<내부정보 추출부(11)>
내부정보 추출부(11)는 시험대상 소프트웨어의 소스코드를 분석하여 시험대상 소프트웨어의 내부정보를 추출한다.
이하에서는 시험대상 소프트웨어의 소스코드가 C 언어로 작성된 경우를 예로 들어 설명한다. 그러나 본 발명은 이에 한정되지 아니하고, C++, JAVA로 작성된 경우에도 적용된다.
일반적으로 현대의 시스템은 그 구성의 복잡성으로 인하여, 구조화, 계층화되어 기능 단위의 모듈들로 구분되어 개발된다. 제1 모듈의 기능이 제2 모듈로 제공되는 경우, 제1 모듈을 내부모듈 제2 모듈을 외부모듈로 정의한다면, 내부모듈은 내부모듈의 기능을 외부모듈에 제공하기 위해 일련의 API들을 제공한다. 외부모듈은 내부모듈의 구체적인 내부 구성과는 상관없이, 제공되는 API를 이용하여 개발된다. 즉, 외부모듈의 관점에서 내부모듈의 기능이 올바르게 동작한다는 의미는 제공되는 API의 기능이 올바르게 동작한다는 의미이다.
본 발명의 일 실시 예에 따른 소프트웨어 테스트 시스템은 이러한 점에 착안하여, 최적의 소프트웨어 테스트를 위하여 API를 중심으로 소프트웨어를 테스트한다.
그러나 C와 같은 전통적인 순차 프로그래밍 언어에서는 소스코드 내에 API와 API가 아닌 함수에 대한 구분 정보가 없다.
이런 경우에도 효과적인 소프트웨어 테스트를 수행하기 위해, 본 발명의 내부정보 추출부(11)는 시험대상 소프트웨어의 소스코드를 분석하여 테스트 대상이 되는 API들을 결정한다. 이를 위하여 내부정보 추출부(11)는 함수들간의 호출관계를 활용한다. 즉, 다른 함수들에 의해 호출되지 않는 함수를 외부에서 접근 가능한 API라고 해석한다. 다만, main() 함수에 의해 호출되는 경우는 고려하지 않는다. 즉, main() 함수 이외의 다른 함수들에 의해서 호출되지 않는 함수를 API로 선택한 다.
도 2는 시험대상 소프트웨어의 내부정보 추출 결과를 나타낸 도면이다.
도 2를 참조하면, API(Application Program Interface)와 API가 아닌 일반함수에 대한 정보와 변수의 자료형에 대한 정보가 표시된다.
API는 main()함수 이외의 다른 함수들에 의해서 호출되지 않는 함수로 정의되고, 일반함수는 API가 아닌 함수로 정의된다.
함수정보 표시 창(201)을 참조하면, api1 내지 api12으로 이루어진 12개의 API와 일반함수인 degree_tan()이 표시되어 있다.
또한 변수 자료형 정보 표시 창(202)을 참조하면, Enm2, Node, 등의 변수 자료형들이 표시되어 있다.
또한, 내부정보 추출부(11)는 시험대상 소프트웨어의 소스코드를 분석하여 시험대상 소프트웨어에 포함된 함수들간의 호출관계를 추출한다.
도 3은 시험대상 소프트웨어에 포함된 함수들간의 호출관계를 나타낸 콜 그래프(Call Graph)를 도시한 것이다.
도 3을 참조하면, API인 api4, api6, api7, api8과, 일반함수인 show_uni, cp_node, show_node간의 호출관계가 표시되어 있다.
도 3을 통하여 알 수 있는 바와 같이, API를 대상으로 시험대상 소프트웨어를 테스트하면, 시험대상 소프트웨어를 보다 세밀하게 테스트할 수 있다. 이를 api4를 테스트하는 경우를 예로 들어 보다 상세히 설명하면 다음과 같다. 즉 api4를 테스트하면, 1) api4의 함수 파라미터에 따라 show_uni 또는 cp_node가 호출되 어 테스트되며, show_uni가 호출되는 경우 다시 show_node가 호출되어 시험대상 소프트웨어를 자동으로 구석구석 시험할 수 있고, 2) 실제 환경에서 시험대상 소프트웨어가 수행되는 함수 호출 경로를 차례로 테스트할 수 있어서, 효과적인 테스트가 가능하다.
또한, 내부정보 추출부(11)는 시험대상 소프트웨어의 소스코드를 분석하여 시험대상 소프트웨어의 제어흐름그래프(Control Flow Graph, CFG)를 생성한다.
도 4는 시험대상 소프트웨어의 제어흐름그래프(control flow graph, CFG)를 나타낸 도면이다.
도 4를 참조하면, 함수 내부의 제어 구조가 블록(Block)과 블록간의 제어흐름으로 나타나 있다. 제어흐름그래프(control flow graph, CFG)의 노드들은 프로그램 블록을 나타내며, 노드 사이를 연결하는 선인 에지(Edge)들은 블록과 블록 사이의 수행 순서를 나타낸다.
내부정보 추출부(11)는 각 노드에 고유번호를 표기하며, 노드의 종류에 대한 설명이 노드 번호와 함께 병기된다. 예를 들어 제2 노드(node2)의 경우, 1: for_init로 표기되며, 1은 제2 노드(node2)의 고유번호를 가르키고, for_init는 제2 노드(node2)의 종류에 대한 설명이다.
에지의 시작점에 해당하는 노드는 아웃-노드(out-node)이고, 에지의 종료점에 해당하는 노드는 인-노드(in-node)이다. 두 노드가 하나의 에지를 통해 연결되어 있다면, 아웃-노드 (out-node)에 해당하는 블록의 수행이 완료되면, 인-노드 (in-node)에 해당하는 블록의 수행이 시작된다. 예를 들어 에지 23(Edge23)의 경 우, 제2 노드(node2)가 아웃-노드(out-node)이고, 제3 노드(node3)가 인-노드(in-node)이며, 제2 노드(node2)에 해당하는 블록의 수행이 완료되면, 제3 노드(node3)에 해당하는 블록의 수행이 시작된다.
제어흐름그래프(control flow graph, CFG)에는 함수 내부의 제어 흐름 외에 함수 호출이 추가적으로 명시되어 있다. 제8 노드(node8)는 함수를 나타내며, 도 4는 제6 노드(node6)에 해당하는 5번 블록에서 show_node라는 함수에 대한 호출이 발생하였음을 나타낸다.
<테스트 데이터 생성부(12)>
테스트 데이터 생성부(12)는 변수 자료형 파티션 생성부(101)와 API 변수 파티션 생성부(102)를 포함한다.
변수 자료형 파티션 생성부(101)는 시험대상 소프트웨어에 포함된 변수의 자료형 별로 테스트할 값의 범위를 지정하는 변수 자료형 파티션을 생성한다.
도 5는 변수 자료형 파티션 생성결과를 나타낸 도면이다.
도 5를 참조하면, 시험대상 소프트웨어에 포함된 변수의 자료형 별로 테스트할 값의 범위가 지정되어, 시험대상 소프트웨어에 포함된 변수의 자료형 별로 테스트 분할 영역이 생성되어 있다.
이러한 테스트 분할 영역은 다음과 같은 형태를 가질 수 있다.
1) 구간 형 테스트 분할 영역(Range Type Partition)
해당 자료 형이 가질 수 있는 값의 범위를 영역 별로 분할하여 나타낸다. Int를 예로 들면, -2147483648 ~ 2147483647의 범위를 -2147483648 ~ -2의 범 위(RANGE), 2 ~ 2147483647의 범위(RANGE)로 분할한다.
2) 값 나열형 테스트 분할 영역(Value-List Type Partition)
해당 자료 형이 가질 수 있는 1개 이상의 특정 값들을 나열한다. 각 값(value)은 산술 형 값 또는 문자열 값을 가질 수 있다. Int를 예로 들면, 값(value)은 -1, 0, 1로 나열되어 있다.
API 변수 파티션 생성부(102)는 변수 자료형 파티션과 API에 대한 정보에 기초하여, API에 포함된 함수의 변수 별로 테스트할 값의 범위를 지정하는 API 변수 파티션을 생성한다.
도 6은 API 변수 파티션 생성결과를 나타낸 도면이다.
도 6을 참조하면, API에 포함된 함수의 변수 별로 테스트할 값의 범위가 지정된 것을 알 수 있다
API 변수 파티션은 변수 자료형 파티션 생성부에서 생성된 변수 자료형 파티션의 데이터들과 각 API를 분석하여 나온 데이터들을 조합하여 생성된다.
API 변수 파티션은 변수 자료형 파티션에 기초하여 생성되며, 각각의 API에서 사용되는 변수들에 대한 테스트 데이터를 생성하는데 사용된다.
한편 도 6에 테스트할 값의 범위가 구체적으로 표시되지는 않았지만, 서로 다른 API에 포함된 동일한 변수의 테스트할 값의 범위는 다를 수 있다. 이를 api1과 api10에 모두 포함된 int를 예로 들어 설명하면 다음과 같다. 즉, api1과 api10에는 모두 int가 있으나, api1과 api10에서 사용되는 테스트할 값의 범위들은 api1과 api10에 대한 분석 결과에 따라 조금씩 다르게 제공된다. 왜냐하면, API 변수 파티션은 시험대상 소프트웨어의 소스코드에 나타나는 여러 상수 값들 중에서 함수내의 제어 흐름에 영향을 미칠 수 있는 값들이 어떤 것들인지를 분석하여 그 결과를 토대로 테스트에 사용할 입력 값들을 자동으로 생성되기 때문이다.
<테스트 절차 생성부(13)>
테스트 절차 생성부(13)는 API 및 API에 포함된 함수에 대한 호출 순서와 호출들간의 관계를 지정하는 테스트 스크립트를 생성한다.
도 7은 테스트 스크립트 생성 결과를 나타낸 도면이다.
도 7을 참조하면, 기본적으로 각 API별로 하나씩 생성된 테스트 스크립트가 테스트 스크립트 표시 창(701)에 표시된 것을 알 수 있다. 또한, 테스트 절차 생성부(13)는 API 리스트(List)에 등록된 함수들 사이에 수행의 순서에 따른 의존관계가 있는 경우, 해당 함수들의 수행의 선, 후 관계를 고려하여 여러 API 호출을 포함하는 테스트 스크립트도 생성한다. 테스트 스크립트는 스크립트와 결합될 테스트 입력 데이터를 함께 지정한다.
예를 들면, 테스트 스크립트 codescroll_api10_5384은 partition-testing default default로 이루어진다. partition-testing은 테스트 데이터로서 후술할 테스트 프로그램 수행 시 사용할 입력 값이다. 이러한 테스트 데이터는 앞서 설명한 변수 자료형 파티션, API 변수 파티션을 이용하여 자동 생성된다.
<테스트 드라이버 생성부(14)>
테스트 드라이버 생성부(14)는 테스트 데이터와 테스트 스크립트와 대응하여 하나의 테스트 드라이버를 생성한다. 이러한 테스트 드라이버는 소프트웨어 테스트 장치에 저장되고, 시험대상 소프트웨어가 설치되어 있는 단말장치(2)로 시리얼(Serial) 케이블, USB(Universal Serial Bus) 케이블 등의 신호전송수단을 통하여 전송된다.
도 8은 테스트 드라이버 생성 결과를 나타낸 도면이다.
도 8을 참조하면, 테스트 드라이버 표시 창(801)에 시험대상 소프트웨어를 후술할 테스트 수행부(15)에서 운용되도록 하는 테스트 드라이버의 파일 리스트가 나타나 있고, 테스트 드라이버 소스코드 표시 창(802)에 테스트 드라이버의 소스코드가 나타나 있다.
이러한 테스트 드라이버는 시험대상 소프트웨어가 테스트 수행부(15)에서 운용되도록 하는 프로그램이고, 테스트 수행부(15)가 시험대상 소프트웨어에서 사용되는 데이터를 생성하거나 시험대상 소프트웨어에서 제공하는 API를 호출할 때 사용되어 시험대상 소프트웨어와 테스트 수행부(15)간의 연결 고리 역할을 한다.
한편, 테스트 드라이버에는 시험대상 소프트웨어에 대한 테스트 수행 결과가 올바른지를 검사할 수 있는 테스트 결과 검사 함수(Test Oracle Function)가 포함되어 있어, 시험대상 소프트웨어에 대한 테스트 수행 결과의 오류 여부를 자동으로 판단하여 사용자에게 알려주는 기능을 한다.
<테스트 수행부(15)>
단말장치(2)의 테스트 수행부(15)는 하나의 테스트 드라이버로 테스트 데이터와 테스트 절차를 조합한 복수의 테스트 케이스를 수행함으로써, 시험대상 소프트웨어를 테스트한다.
이를 테스트 데이터가 100개, 테스트 스크립트가 100개인 경우를 예로 들어 설명하면 다음과 같다. 이들 테스트 데이터와 테스트 스크립트의 조합에 따라, 100*100=10,000개의 테스트 케이스가 생긴다. 이들 각 테스트 케이스는 하나의 테스트 드라이버에 결합되고, 시험대상 소프트웨어는 이들 각 테스트 케이스와 결합된 테스트 드라이버에 따라 테스트된다. 이러한 본 발명에 따르면, 테스트 케이스들이 하나의 테스트 드라이버에 결합될 뿐, 테스트 케이스 별로 테스트 프로그램을 생성하지는 않는다. 이를 보다 상세히 설명하면 다음과 같다. 즉, 종래의 소프트웨어 테스트 시스템들이 테스트 케이스 별로 테스트 프로그램을 생성함으로써 전체 테스트 프로그램의 크기가 커져서 임베디드 시스템(embedded system)등에 적용되기 어려운 반면, 본 발명의 일 실시 예에 따른 소프트웨어 테스트 시스템은 하나의 테스트 드라이버를 이용함으로써 테스트 케이스 숫자에 따라 테스트 프로그램의 크기가 늘어나지 않는 장점이 있다.
한편, 단말장치(2)는 무선통신용단말기, 유비쿼터스(Ubiquitous) 환경을 조성하는 일련의 전자장치 등 운용을 위한 소프트웨어가 설치된 일체의 단말을 포함한다.
도 9는 테스트 프로그램 생성 결과를 나타낸 도면이다.
도 9를 참조하면, 테스트 드라이버에 테스트 데이터와 테스트 스크립트를 결합하여 생성된 테스트 프로그램이 나타나 있다.
도 10은 시험대상 소프트웨어에 대한 테스트 결과를 나타낸 도면이다.
도 10을 참조하면, 테스트 요약 창 (Test summary window, 1001) 과, 커버리 지 요약 창(Coverage summary window, 1002)과, 테스트 상세 결과 창(Test details window, 1003) 및 추가 정보 창(Additional information window, 1004)이 표시되어 있다.
1) 테스트 요약 창(1001)은 수행된 테스트 케이스의 수, 성공한 테스트 케이스의 수, 실패한 테스트 케이스의 수, 경고를 일으킨 테스트 케이스의 수, 사용된 스크립트의 수 등을 요약하여 표시한다. 2) 커버리지 요약 창(1002)은 전체 테스트 케이스를 수행한 결과 달성된 커버리지 정보를 표시한다. 별개 테스트 케이스에 의해 달성된 커버리지는 별도로 표시한다. 3) 테스트 상세 결과 창(1003)은 각 스크립트 별로 전체 테스트 케이스의 수, 성공한 테스트 케이스의 수, 실패한 테스트 케이스의 수, 경고를 일으킨 테스트 케이스의 수를 표시한다. 4) 추가 정보 창(1004)은 전체 테스트 케이스를 수행하였을 때, 함수 제어 흐름 그래프 및 호출 그래프의 어떤 부분이 몇 번 수행되었는지를 그래프로 표시한다.
<오류정보 표시부(16)>
오류정보 표시부(16)는 시험대상 소프트웨어를 테스트한 후, 시험대상 소프트웨어의 오류에 대한 정보를 표시한다.
도 11은 시험대상 소프트웨어의 오류에 대한 정보를 나타낸 도면이다.
도 11을 참조하면, 시험대상 소프트웨어의 오류에 대한 정보가 별도로 그룹화되어 표시되어 있다.
예를 들어, 오류정보 표시부(16)는 오류에 대한 정보를 1) 오류가 발생한 위치, 2) 오류가 발생한 API, 3) 오류 메시지 종류별 등으로 정렬하여 표시할 수 있 다.
<테스트 결과 정보 제공부(17)>
테스트 결과 정보 제공부(17)는 시험대상 소프트웨어의 테스트 결과에 대한 정보를 생성하고, 이를 저장한 후, 제공한다.
이러한 시험대상 소프트웨어의 테스트 결과에 대한 정보는 HTML와 MS WORD와 MS Excel 중 적어도 하나의 형태로 제공될 수 있다.
또한 시험대상 소프트웨어의 테스트 결과에 대한 정보는 한국어와 영어와 일본어 중 적어도 하나의 언어로 생성되어 제공될 수 있다.
도 12는 본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법을 나타낸 도면이다.
도 12에 도시된 바와 같이, 본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법은 내부정보 추출단계(S11)와, 변수 자료형 파티션 생성단계(S101)와 API 변수 파티션 생성단계(S102)를 포함하는 테스트 데이터 생성단계(S12)와, 테스트 절차 생성단계(S13)와, 테스트 드라이버 생성단계(S14)와, 테스트 수행단계(S15)와, 오류정보 표시단계(S16) 및 테스트 결과 정보 제공단계(S17)를 포함한다.
<내부정보 추출단계(S11)>
내부정보 추출단계(S11)에서는 시험대상 소프트웨어의 소스코드를 분석하여 시험대상 소프트웨어의 내부정보를 추출한다.
이하에서는 시험대상 소프트웨어의 소스코드가 C 언어로 작성된 경우를 예로 들어 설명한다. 그러나 본 발명은 이에 한정되지 아니하고, C++, JAVA로 작성된 경우에도 적용된다.
일반적으로 현대의 시스템은 그 구성의 복잡성으로 인하여, 구조화, 계층화되어 기능 단위의 모듈들로 구분되어 개발된다. 제1 모듈의 기능이 제2 모듈로 제공되는 경우, 제1 모듈을 내부모듈 제2 모듈을 외부모듈로 정의한다면, 내부모듈은 내부모듈의 기능을 외부모듈에 제공하기 위해 일련의 API들을 제공한다. 외부모듈은 내부모듈의 구체적인 내부 구성과는 상관없이, 제공되는 API를 이용하여 개발된다. 즉, 외부모듈의 관점에서 내부모듈의 기능이 올바르게 동작한다는 의미는 제공되는 API의 기능이 올바르게 동작한다는 의미이다.
본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법은 이러한 점에 착안하여, 최적의 소프트웨어 테스트를 위하여 API를 중심으로 소프트웨어를 테스트한다.
그러나 C와 같은 전통적인 순차 프로그래밍 언어에서는 소스코드 내에 API와 API가 아닌 함수에 대한 구분 정보가 없다.
이런 경우에도 효과적인 소프트웨어 테스트를 수행하기 위해, 본 발명의 내부정보 추출단계(S11)에서, 시험대상 소프트웨어의 소스코드를 분석하여 테스트 대상이 되는 API들을 결정한다. 이를 위하여 함수들간의 호출관계를 활용한다. 즉, 다른 함수들에 의해 호출되지 않는 함수를 외부에서 접근 가능한 API라고 해석한다. 다만, main() 함수에 의해 호출되는 경우는 고려하지 않는다. 즉, main() 함수 이외의 다른 함수들에 의해서 호출되지 않는 함수를 API로 선택한다.
도 2는 시험대상 소프트웨어의 내부정보 추출 결과를 나타낸 도면이다.
도 2를 참조하면, API(Application Program Interface)와 API가 아닌 일반함수에 대한 정보와 변수의 자료형에 대한 정보가 표시된다.
API는 main()함수 이외의 다른 함수들에 의해서 호출되지 않는 함수로 정의되고, 일반함수는 API가 아닌 함수로 정의된다.
함수정보 표시 창(201)을 참조하면, api1 내지 api12으로 이루어진 12개의 API와 일반함수인 degree_tan()이 표시되어 있다.
또한, 변수 자료형 정보 표시 창(202)을 참조하면, Enm2, Node, 등의 변수 자료형들이 표시되어 있다.
또한 내부정보 추출단계(S11)에서, 시험대상 소프트웨어의 소스코드를 분석하여 시험대상 소프트웨어에 포함된 함수들간의 호출관계를 추출한다.
도 3은 시험대상 소프트웨어에 포함된 함수들간의 호출관계를 나타낸 콜 그래프(Call Graph)를 도시한 것이다.
도 3을 참조하면, API인 api4, api6, api7, api8과, 일반함수인 show_uni, cp_node, show_node간의 호출관계가 표시되어 있다.
도 3을 통하여 알 수 있는 바와 같이, API를 대상으로 시험대상 소프트웨어를 테스트하면, 시험대상 소프트웨어를 보다 세밀하게 테스트할 수 있다. 이를 api4를 테스트하는 경우를 예로 들어 보다 상세히 설명하면 다음과 같다. 즉 api4를 테스트하면, 1) api4의 함수 파라미터에 따라 show_uni 또는 cp_node가 호출되어 테스트되며, show_uni가 호출되는 경우 다시 show_node가 호출되어 시험대상 소프트웨어를 자동으로 구석구석 시험할 수 있고, 2) 실제 환경에서 시험대상 소프트 웨어가 수행되는 함수 호출 경로를 차례로 테스트할 수 있어서, 효과적인 테스트가 가능하다.
또한 내부정보 추출단계에서, 시험대상 소프트웨어의 소스코드를 분석하여 시험대상 소프트웨어의 제어흐름그래프(Control Flow Graph, CFG)를 생성한다.
도 4는 시험대상 소프트웨어의 제어흐름그래프(control flow graph, CFG)를 나타낸 도면이다.
도 4를 참조하면, 함수 내부의 제어 구조가 블록(Block)과 블록간의 제어흐름으로 나타나 있다. 제어흐름그래프(control flow graph, CFG)의 노드들은 프로그램 블록을 나타내며, 노드 사이를 연결하는 선인 에지(Edge)들은 블록과 블록 사이의 수행 순서를 나타낸다.
도시된 바와 같이, 각 노드에 고유번호가 표기되며, 노드의 종류에 대한 설명이 노드 번호와 함께 병기된다. 예를 들어 제2 노드(node2)의 경우, 1: for_init로 표기되며, 1은 제2 노드(node2)의 고유번호를 가르키고, for_init는 제2 노드(node2)의 종류에 대한 설명이다.
에지의 시작점에 해당하는 노드는 아웃-노드(out-node)이고, 에지의 종료점에 해당하는 노드는 인-노드(in-node)이다. 두 노드가 하나의 에지를 통해 연결되어 있다면, 아웃-노드 (out-node)에 해당하는 블록의 수행이 완료되면, 인-노드 (in-node)에 해당하는 블록의 수행이 시작된다. 예를 들어 에지 23(Edge23)의 경우, 제2 노드(node2)가 아웃-노드(out-node)이고, 제3 노드(node3)가 인-노드(in-node)이며, 제2 노드(node2)에 해당하는 블록의 수행이 완료되면, 제3 노드(node3) 에 해당하는 블록의 수행이 시작된다.
제어흐름그래프(control flow graph, CFG)에는 함수 내부의 제어 흐름 외에 함수 호출이 추가적으로 명시되어 있다. 제8 노드(node8)는 함수를 나타내며, 도 4는 제6 노드(node6)에 해당하는 5번 블록에서 show_node라는 함수에 대한 호출이 발생하였음을 나타낸다.
<테스트 데이터 생성단계(S12)>
테스트 데이터 생성단계(S12)는 변수 자료형 파티션 생성단계(S101)와 API 변수 파티션 생성단계(S102)를 포함한다.
변수 자료형 파티션 생성단계(S101)에서, 시험대상 소프트웨어에 포함된 변수의 자료형 별로 테스트할 값의 범위를 지정하는 변수 자료형 파티션이 생성된다.
도 5는 변수 자료형 파티션 생성결과를 나타낸 도면이다.
도 5를 참조하면, 시험대상 소프트웨어에 포함된 변수의 자료형 별로 테스트할 값의 범위가 지정되어, 시험대상 소프트웨어에 포함된 변수의 자료형 별로 테스트 분할 영역이 생성되어 있다.
이러한 테스트 분할 영역은 다음과 같은 형태를 가질 수 있다.
1) 구간 형 테스트 분할 영역(Range Type Partition)
해당 자료 형이 가질 수 있는 값의 범위를 영역 별로 분할하여 나타낸다. Int를 예로 들면, -2147483648 ~ 2147483647의 범위를 -2147483648 ~ -2의 범위(RANGE), 2 ~ 2147483647의 범위(RANGE)로 분할한다.
2) 값 나열형 테스트 분할 영역(Value-List Type Partition)
해당 자료 형이 가질 수 있는 1개 이상의 특정 값들을 나열한다. 각 값(value)은 산술 형 값 또는 문자열 값을 가질 수 있다. Int를 예로 들면, 값(value)은 -1, 0, 1로 나열되어 있다.
API 변수 파티션 생성단계(S102)에서, 변수 자료형 파티션과 API에 대한 정보에 기초하여, API에 포함된 함수의 변수 별로 테스트할 값의 범위를 지정하는 API 변수 파티션이 생성된다.
도 6은 API 변수 파티션 생성결과를 나타낸 도면이다.
도 6을 참조하면, API에 포함된 함수의 변수 별로 테스트할 값의 범위가 지정된 것을 알 수 있다
API 변수 파티션은 변수 자료형 파티션 생성단계(S101)에서 생성된 변수 자료형 파티션의 데이터들과 각 API를 분석하여 나온 데이터들을 조합하여 생성된다.
API 변수 파티션은 변수 자료형 파티션에 기초하여 생성되며, 각각의 API에서 사용되는 변수들에 대한 테스트 데이터를 생성하는데 사용된다.
한편 도 6에 테스트할 값의 범위가 구체적으로 표시되지는 않았지만, 서로 다른 API에 포함된 동일한 변수의 테스트할 값의 범위는 다를 수 있다. 이를 api1과 api10에 모두 포함된 int를 예로 들어 설명하면 다음과 같다. 즉, api1과 api10에는 모두 int가 있으나, api1과 api10에서 사용되는 테스트할 값의 범위들은 api1과 api10에 대한 분석 결과에 따라 조금씩 다르게 제공된다. 왜냐하면, API 변수 파티션은 시험대상 소프트웨어의 소스코드에 나타나는 여러 상수 값들 중에서 함수내의 제어 흐름에 영향을 미칠 수 있는 값들이 어떤 것들인지를 분석하여 그 결과 를 토대로 테스트에 사용할 입력 값들을 자동으로 생성되기 때문이다.
<테스트 절차 생성단계(S13)>
테스트 절차 생성단계(S13)에서, API 및 API에 포함된 함수에 대한 호출 순서와 호출들간의 관계를 지정하는 테스트 스크립트를 생성한다.
도 7은 테스트 스크립트 생성 결과를 나타낸 도면이다.
도 7을 참조하면, 기본적으로 각 API별로 하나씩 생성된 테스트 스크립트가 테스트 스크립트 표시 창(701)에 표시된 것을 알 수 있다. 또한, 테스트 절차 생성단계(S13)에서, API 리스트(List)에 등록된 함수들 사이에 수행의 순서에 따른 의존관계가 있는 경우, 해당 함수들의 수행의 선, 후 관계를 고려하여 여러 API 호출을 포함하는 테스트 스크립트도 생성한다. 테스트 스크립트는 스크립트와 결합될 테스트 데이터를 함께 지정한다.
예를 들면, 테스트 스크립트 codescroll_api10_5384은 partition-testing default default로 이루어진다. partition-testing은 테스트 데이터로서 후술할 테스트 프로그램 수행 시 사용할 입력 값이다. 이러한 테스트 데이터는 앞서 설명한 변수 자료형 파티션, API 변수 파티션을 이용하여 자동 생성된다.
<테스트 드라이버 생성단계(S14)>
테스트 드라이버 생성단계(S14)에서, 테스트 데이터와 테스트 스크립트와 대응하여 하나의 테스트 드라이버를 생성한다. 이러한 테스트 드라이버는 후술하는 바와 같이, 테스트 데이터와 테스트 스크립트를 조합한 결과와 결합되고, 시험대상 소프트웨어는 이러한 테스트 드라이버에 따라 테스트된다.
도 8은 테스트 드라이버 생성 결과를 나타낸 도면이다.
도 8을 참조하면, 테스트 드라이버 표시 창(801)에 시험대상 소프트웨어를 테스트 수행단계(S15)에서 운용되도록 하는 테스트 드라이버의 파일 리스트가 나타나 있고, 테스트 드라이버 소스코드 표시 창(802)에 테스트 드라이버의 소스코드가 나타나 있다.
이러한 테스트 드라이버는 시험대상 소프트웨어가 테스트 수행단계(S15)에서 운용되도록 하는 프로그램이고, 시험대상 소프트웨어에서 사용되는 데이터를 생성하거나 시험대상 소프트웨어에서 제공하는 API를 호출할 때 사용되어 시험대상 소프트웨어와 테스트 수행단계(S15)간의 연결 고리 역할을 한다.
한편, 테스트 드라이버에는 시험대상 소프트웨어에 대한 테스트 수행 결과가 올바른지를 검사할 수 있는 테스트 결과 검사 함수(Test Oracle Function)가 포함되어 있어, 시험대상 소프트웨어에 대한 테스트 수행 결과의 오류 여부를 자동으로 판단하여 사용자에게 알려주는 기능을 한다.
<테스트 수행단계(S15)>
테스트 수행단계(S15)에서, 하나의 테스트 드라이버로 테스트 데이터와 테스트 절차를 조합한 복수의 테스트 케이스를 수행함으로써, 시험대상 소프트웨어를 테스트한다.
이를 테스트 데이터가 100개, 테스트 스크립트가 100개인 경우를 예로 들어 설명하면 다음과 같다. 이들 테스트 데이터와 테스트 스크립트의 조합에 따라, 100*100=10,000개의 테스트 케이스가 생긴다. 이들 각 테스트 케이스는 하나의 테 스트 드라이버에 결합되고, 시험대상 소프트웨어는 이들 각 테스트 케이스와 결합된 테스트 드라이버에 따라 테스트된다. 이러한 본 발명에 따르면, 테스트 케이스들이 하나의 테스트 드라이버에 결합될 뿐, 테스트 케이스 별로 테스트 프로그램을 생성하지는 않는다. 이를 보다 상세히 설명하면 다음과 같다. 즉, 종래의 소프트웨어 테스트 방법들이 테스트 케이스 별로 테스트 프로그램을 생성함으로써 전체 테스트 프로그램의 크기가 커져서 임베디드 시스템(embedded system)등에 적용되기 어려운 반면, 본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법은 하나의 테스트 드라이버를 이용함으로써 테스트 케이스 숫자에 따라 테스트 프로그램의 크기가 늘어나지 않는 장점이 있다.
도 9는 테스트 프로그램 생성 결과를 나타낸 도면이다.
도 9를 참조하면, 테스트 드라이버에 테스트 데이터와 테스트 스크립트를 결합하여 생성된 테스트 프로그램이 나타나 있다.
도 10은 시험대상 소프트웨어에 대한 테스트 결과를 나타낸 도면이다.
도 10을 참조하면, 테스트 요약 창 (Test summary window, 1001) 과, 커버리지 요약 창(Coverage summary window, 1002)과, 테스트 상세 결과 창(Test details window, 1003) 및 추가 정보 창(Additional information window, 1004)이 표시되어 있다.
1) 테스트 요약 창(1001)은 수행된 테스트 케이스의 수, 성공한 테스트 케이스의 수, 실패한 테스트 케이스의 수, 경고를 일으킨 테스트 케이스의 수, 사용된 스크립트의 수 등을 요약하여 표시한다. 2) 커버리지 요약 창(1002)은 전체 테스트 케이스를 수행한 결과 달성된 커버리지 정보를 표시한다. 별개 테스트 케이스에 의해 달성된 커버리지는 별도로 표시한다. 3) 테스트 상세 결과 창(1003)은 각 스크립트 별로 전체 테스트 케이스의 수, 성공한 테스트 케이스의 수, 실패한 테스트 케이스의 수, 경고를 일으킨 테스트 케이스의 수를 표시한다. 4) 추가 정보 창(1004)은 전체 테스트 케이스를 수행하였을 때, 함수 제어 흐름 그래프 및 호출 그래프의 어떤 부분이 몇 번 수행되었는지를 그래프로 표시한다.
<오류정보 표시단계(S16)>
오류정보 표시단계(S16)에서, 시험대상 소프트웨어를 테스트한 후, 시험대상 소프트웨어의 오류에 대한 정보를 표시한다.
도 11은 시험대상 소프트웨어의 오류에 대한 정보를 나타낸 도면이다.
도 11을 참조하면, 시험대상 소프트웨어의 오류에 대한 정보가 별도로 그룹화되어 표시되어 있다.
예를 들어, 오류정보 표시단계(S16)에서, 오류에 대한 정보를 1) 오류가 발생한 위치, 2) 오류가 발생한 API, 3) 오류 메시지 종류별 등으로 정렬하여 표시할 수 있다.
<테스트 결과 정보 제공단계(S17)>
테스트 결과 정보 제공단계(S17)에서, 시험대상 소프트웨어의 테스트 결과에 대한 정보를 생성하고, 이를 저장한 후, 제공한다.
이러한 시험대상 소프트웨어의 테스트 결과에 대한 정보는 HTML와 MS WORD와 MS Excel 중 적어도 하나의 형태로 제공될 수 있다.
또한 시험대상 소프트웨어의 테스트 결과에 대한 정보는 한국어와 영어와 일본어 중 적어도 하나의 언어로 생성되어 제공될 수 있다.
본 발명의 일 실시 예에 따른 컴퓨터로 읽을 수 있는 기록매체에는 앞서 상세히 설명한 본 발명의 일 실시 예에 따른 소프트웨어 테스트 방법을 실행하기 위한 프로그램이 기록되어 있다.
이러한 본 발명의 일 실시 예에 따른 컴퓨터로 읽을 수 있는 기록매체는 컴퓨터 장치에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 예를 들면, ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치, 캐리어 웨이브(carrier wave, 예를 들어 인터넷을 통한 전송)의 형태로 구현될 수 있다. 또한 컴퓨터로 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서 보는 바와 같이, 본 발명이 속하는 기술 분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변 경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
이상에서 상세히 설명한 바와 같이 본 발명에 따르면, 시험대상 프로그램을 짧은 시간 및 적은 비용으로 테스트할 수 있는 소프트웨어 테스트 시스템, 소프트웨어 테스트 방법 및 그 방법을 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체가 제공되는 효과가 있다.
또한 본 발명에 따르면, 시험대상 프로그램에 대한 테스트의 신뢰성이 향상되는 효과가 있다.
또한 본 발명은 임베디드 시스템(embedded system)에 효율적으로 적용될 수 있는 효과가 있다.

Claims (19)

  1. 시험대상 소프트웨어가 설치된 단말장치;
    상기 시험대상 소프트웨어의 테스트 데이터 및 상기 시험대상 소프트웨어의 테스트 절차에 대응하여 상기 시험대상 소프트웨어를 테스트하는 테스트 드라이버가 저장된 소프트웨어 테스트 장치;
    를 포함하고,
    상기 테스트 드라이버는 상기 단말장치에 전송되고, 상기 단말장치에서 상기 테스트 데이터와 상기 테스트 절차를 조합하여 상기 시험대상 소프트웨어를 테스트하는, 소프트웨어 테스트 시스템.
  2. 제1 항에 있어서,
    상기 테스트 드라이버는 하나이고,
    상기 단말장치에서 상기 하나의 테스트 드라이버로 상기 테스트 데이터와 상기 테스트 절차를 조합한 복수의 테스트 케이스를 수행하는, 소프트웨어 테스트 시스템.
  3. 제2 항에 있어서,
    상기 소프트웨어 테스트 장치는
    상기 테스트 결과에 대한 정보를 제공하는 테스트 결과 정보 제공부를 더 포 함하는, 소프트웨어 테스트 시스템.
  4. 제3 항에 있어서,
    상기 테스트 결과에 대한 정보는 HTML과 MS WORD와 MS Excel 중 적어도 하나의 형태로 제공되는, 소프트웨어 테스트 시스템.
  5. 제2 항에 있어서,
    상기 테스트 데이터와 상기 테스트 절차는 상기 시험대상 소프트웨어의 내부정보에 따라 생성되고,
    상기 시험대상 소프트웨어의 내부정보는 API에 대한 정보와 변수의 자료형에 대한 정보를 포함하는, 소프트웨어 테스트 시스템.
  6. 제5 항에 있어서,
    상기 테스트 데이터는
    상기 변수의 자료형 별로 테스트할 값의 범위를 지정하는 변수 자료형 파티션; 및
    상기 변수 자료형 파티션과 상기 API에 대한 정보에 기초하여, 상기 API에 포함된 변수 별로 테스트할 값의 범위를 지정하는 API 변수 파티션;
    을 포함하는, 소프트웨어 테스트 시스템.
  7. 제6 항에 있어서,
    상기 테스트 절차는
    상기 API 및 상기 API에 포함된 함수에 대한 호출 순서와 상기 호출들간의 관계를 지정하는 테스트 스크립트인, 소프트웨어 테스트 시스템.
  8. 제2 항에 있어서,
    상기 테스트 드라이버는
    상기 테스트 결과를 검사하는 테스트 결과 검사 함수를 포함하는, 소프트웨어 테스트 시스템.
  9. 제2 항에 있어서,
    상기 소프트웨어 테스트 장치는
    상기 시험대상 소프트웨어의 오류에 대한 정보를 표시하는 오류정보 표시부를 더 포함하는, 소프트웨어 테스트 시스템.
  10. 시험대상 소프트웨어의 내부정보에 따라 테스트 데이터를 생성하는 테스트 데이터 생성단계;
    상기 시험대상 소프트웨어의 내부정보에 따라 상기 시험대상 소프트웨어에 포함된 함수들의 테스트 절차를 생성하는 테스트 절차 생성단계; 및
    상기 테스트 데이터와 상기 테스트 절차의 조합에 대응하여 테스트 드라이버 를 생성하는 테스트 드라이버 생성단계;
    를 포함하는 소프트웨어 테스트 방법.
  11. 제10 항에 있어서,
    상기 테스트 드라이버는 하나이고,
    상기 하나의 테스트 드라이버로 상기 테스트 데이터와 상기 테스트 절차가 조합된 복수의 테스트 케이스를 수행하는, 소프트웨어 테스트 시스템.
  12. 제11 항에 있어서,
    상기 테스트 결과에 대한 정보를 제공하는 테스트 결과 정보 제공단계를 더 포함하는, 소프트웨어 테스트 방법.
  13. 제12 항에 있어서,
    상기 테스트 결과에 대한 정보는 HTML과 MS WORD와 MS Excel 중 적어도 하나의 형태로 제공되는, 소프트웨어 테스트 방법.
  14. 제11 항에 있어서,
    상기 시험대상 소프트웨어의 내부정보는
    API에 대한 정보와 변수의 자료형에 대한 정보를 포함하는, 소프트웨어 테스트 방법.
  15. 제14 항에 있어서,
    상기 테스트 데이터 생성단계는
    상기 변수의 자료형 별로 테스트할 값의 범위를 지정하는 변수 자료형 파티션을 생성하는 변수 자료형 파티션 생성단계; 및
    상기 변수 자료형 파티션과 상기 API에 대한 정보에 기초하여, 상기 API에 포함된 변수 별로 테스트할 값의 범위를 지정하는 API 변수 파티션을 생성하는 API 변수 파티션 생성단계;
    를 포함하는, 소프트웨어 테스트 방법.
  16. 제15 항에 있어서,
    상기 테스트 절차 생성단계에서,
    상기 API 및 상기 API에 포함된 함수에 대한 호출 순서와 상기 호출들간의 관계를 지정하는 테스트 스크립트를 생성하는, 소프트웨어 테스트 방법.
  17. 제11 항에 있어서,
    상기 테스트 드라이버는
    상기 테스트 결과를 검사하는 테스트 결과 검사 함수를 포함하는, 소프트웨어 테스트 방법.
  18. 제11 항에 있어서,
    상기 시험대상 소프트웨어의 오류에 대한 정보를 표시하는 오류정보 표시단계를 더 포함하는, 소프트웨어 테스트 방법.
  19. 제10 항 내지 제18 항의 소프트웨어 테스트 방법을 실행하기 위한 프로그램이 기록된, 컴퓨터로 읽을 수 있는 기록매체.
KR1020070006102A 2007-01-19 2007-01-19 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 KR20080068385A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020070006102A KR20080068385A (ko) 2007-01-19 2007-01-19 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
US12/015,570 US20080178047A1 (en) 2007-01-19 2008-01-17 Software Test System, Method, And Computer Readable Recording Medium Having Program Stored Thereon For Executing the Method
JP2008009400A JP2008176793A (ja) 2007-01-19 2008-01-18 ソフトウェアテストシステム、ソフトウェアのテスト方法、および、そのテスト方法を実行するためのプログラムを記録したコンピュータ読取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070006102A KR20080068385A (ko) 2007-01-19 2007-01-19 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체

Publications (1)

Publication Number Publication Date
KR20080068385A true KR20080068385A (ko) 2008-07-23

Family

ID=39642427

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070006102A KR20080068385A (ko) 2007-01-19 2007-01-19 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체

Country Status (3)

Country Link
US (1) US20080178047A1 (ko)
JP (1) JP2008176793A (ko)
KR (1) KR20080068385A (ko)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100934925B1 (ko) * 2008-09-22 2010-01-06 국방과학연구소 비행제어법칙 소프트웨어 시험 장치 및 그 방법
KR101371400B1 (ko) * 2012-12-04 2014-03-10 한국항공우주연구원 테스트 스크립트의 부가정보를 이용한 요구사항 관리 시스템 및 방법
KR101467243B1 (ko) * 2013-03-26 2014-12-02 (주) 픽소니어 비행제어시스템의 자가 진단 테스트 장치 및 이를 이용한 자가 진단 테스트 방법
CN107562637A (zh) * 2017-09-28 2018-01-09 网易有道信息技术(北京)有限公司 一种用于软件测试的方法、设备、***及存储介质
US10310970B2 (en) 2016-11-09 2019-06-04 Rsupport Co., Ltd. Method of automatically testing smart device application program using permission booster
KR20190070160A (ko) * 2017-12-12 2019-06-20 슈어소프트테크주식회사 음성 정보에 기반한 정적 분석 수행 방법 및 장치
KR20190078179A (ko) * 2017-12-26 2019-07-04 슈어소프트테크주식회사 정적 분석 결과를 이용한 소프트웨어 테스트 방법과 장치 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
CN111538672A (zh) * 2020-05-29 2020-08-14 平安普惠企业管理有限公司 测试案例分层测试方法、计算机设备及计算机可读存储介质
KR20200114144A (ko) * 2019-03-27 2020-10-07 국방과학연구소 신뢰성 시험 도구 설정 장치 및 방법
KR102188738B1 (ko) * 2019-12-09 2020-12-08 현대오트론 주식회사 오토사 운영체제의 알람 오프셋 최적화 장치
KR102305845B1 (ko) * 2020-12-21 2021-09-29 쿠팡 주식회사 코드의 검증을 위한 전자 장치 및 그 방법
KR20220085290A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 소프트웨어 검증 방법 및 이를 위한 장치
KR102470683B1 (ko) * 2021-11-25 2022-11-25 숭실대학교 산학협력단 단위 테스트 케이스 기반의 보안 설계 결함 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5337155B2 (ja) * 2008-06-10 2013-11-06 パナソニック株式会社 組み込み機器におけるapi評価システム
JP2010198479A (ja) * 2009-02-26 2010-09-09 Hitachi Software Eng Co Ltd アプリケーションのテスト自動実行システム
CN102521134B (zh) * 2011-12-21 2014-09-17 中国工商银行股份有限公司 一种基于大型机的测试信息检测方法及装置
CN103577317B (zh) * 2012-08-02 2017-02-08 百度在线网络技术(北京)有限公司 软件***的异常测试方法、***和软件测试***
IN2013MU01201A (ko) * 2013-03-28 2015-04-10 Tata Consultancy Services Ltd
JP6037310B2 (ja) * 2013-03-29 2016-12-07 国立研究開発法人産業技術総合研究所 テストデータ表示装置
CA3125705C (en) 2013-04-23 2022-02-15 Ab Initio Technology Llc Controlling tasks performed by a computing system
CN109508981A (zh) * 2017-09-15 2019-03-22 富士通株式会社 用于测试智能合约的方法和装置
CN109189690A (zh) * 2018-09-17 2019-01-11 郑州云海信息技术有限公司 一种阶段测试方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143393A (ja) * 1991-11-25 1993-06-11 Mitsubishi Electric Corp テストプログラム作成装置
JPH07210424A (ja) * 1994-01-14 1995-08-11 Toshiba Corp ソフトウェアテスト支援システム
JP2002278795A (ja) * 2001-03-21 2002-09-27 Hitachi Software Eng Co Ltd オブジェクト指向開発用テスト支援方法および装置
JP2002366387A (ja) * 2001-06-13 2002-12-20 Hitachi Ltd ソフトウェアプログラムの自動テストシステム
JP2003177942A (ja) * 2001-12-12 2003-06-27 Mitsubishi Electric Corp ソフトウェア単体試験の支援方法及び支援装置
US8074206B2 (en) * 2003-07-08 2011-12-06 Sap Ag Method and computer system for software tuning
US7650594B2 (en) * 2004-05-27 2010-01-19 National Instruments Corporation Graphical program analyzer with framework for adding user-defined tests
US20060101404A1 (en) * 2004-10-22 2006-05-11 Microsoft Corporation Automated system for tresting a web application
US20060129992A1 (en) * 2004-11-10 2006-06-15 Oberholtzer Brian K Software test and performance monitoring system
US20070168973A1 (en) * 2005-12-02 2007-07-19 Sun Microsystems, Inc. Method and apparatus for API testing
US20070240118A1 (en) * 2006-02-28 2007-10-11 Ido Keren System, method, and software for testing a software application
US20070283327A1 (en) * 2006-06-02 2007-12-06 Microsoft Corporation Hierarchical test verification using an extendable interface
US20080115114A1 (en) * 2006-11-10 2008-05-15 Sashank Palaparthi Automated software unit testing
US20080244524A1 (en) * 2007-03-27 2008-10-02 Tim Kelso Program Test System
US20090077538A1 (en) * 2007-09-18 2009-03-19 Michael Paul Keyes Methods for testing software using orthogonal arrays
US8196102B2 (en) * 2007-10-11 2012-06-05 Sap Ag Software supportability certification
US8091072B2 (en) * 2007-10-18 2012-01-03 Microsoft Corporation Framework for testing API of a software application

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100934925B1 (ko) * 2008-09-22 2010-01-06 국방과학연구소 비행제어법칙 소프트웨어 시험 장치 및 그 방법
KR101371400B1 (ko) * 2012-12-04 2014-03-10 한국항공우주연구원 테스트 스크립트의 부가정보를 이용한 요구사항 관리 시스템 및 방법
KR101467243B1 (ko) * 2013-03-26 2014-12-02 (주) 픽소니어 비행제어시스템의 자가 진단 테스트 장치 및 이를 이용한 자가 진단 테스트 방법
US10310970B2 (en) 2016-11-09 2019-06-04 Rsupport Co., Ltd. Method of automatically testing smart device application program using permission booster
CN107562637A (zh) * 2017-09-28 2018-01-09 网易有道信息技术(北京)有限公司 一种用于软件测试的方法、设备、***及存储介质
KR20190070160A (ko) * 2017-12-12 2019-06-20 슈어소프트테크주식회사 음성 정보에 기반한 정적 분석 수행 방법 및 장치
US10978065B2 (en) 2017-12-12 2021-04-13 Suresoft Technologies Inc. Static analysis performing method based on voice information and device for the same
KR20190078179A (ko) * 2017-12-26 2019-07-04 슈어소프트테크주식회사 정적 분석 결과를 이용한 소프트웨어 테스트 방법과 장치 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
US10621073B2 (en) 2017-12-26 2020-04-14 Suresoft Technologies Inc. Method and apparatus for testing software by using static analysis results and computer readable recording medium having program for performing the same
KR20200114144A (ko) * 2019-03-27 2020-10-07 국방과학연구소 신뢰성 시험 도구 설정 장치 및 방법
KR102188738B1 (ko) * 2019-12-09 2020-12-08 현대오트론 주식회사 오토사 운영체제의 알람 오프셋 최적화 장치
CN111538672A (zh) * 2020-05-29 2020-08-14 平安普惠企业管理有限公司 测试案例分层测试方法、计算机设备及计算机可读存储介质
KR20220085290A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 소프트웨어 검증 방법 및 이를 위한 장치
KR20230019191A (ko) * 2020-12-15 2023-02-07 현대오토에버 주식회사 소프트웨어 검증 방법 및 이를 위한 장치
KR102305845B1 (ko) * 2020-12-21 2021-09-29 쿠팡 주식회사 코드의 검증을 위한 전자 장치 및 그 방법
KR102362262B1 (ko) * 2020-12-21 2022-02-14 쿠팡 주식회사 코드의 검증을 위한 전자 장치 및 그 방법
WO2022139050A1 (ko) * 2020-12-21 2022-06-30 쿠팡 주식회사 코드의 검증을 위한 전자 장치 및 그 방법
US11429510B2 (en) 2020-12-21 2022-08-30 Coupang Corp. Electronic apparatus for verifying code and method thereof
KR102470683B1 (ko) * 2021-11-25 2022-11-25 숭실대학교 산학협력단 단위 테스트 케이스 기반의 보안 설계 결함 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치
WO2023096152A1 (ko) * 2021-11-25 2023-06-01 숭실대학교 산학협력단 단위 테스트 케이스 기반의 보안 설계 결함 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치

Also Published As

Publication number Publication date
JP2008176793A (ja) 2008-07-31
US20080178047A1 (en) 2008-07-24

Similar Documents

Publication Publication Date Title
KR20080068385A (ko) 소프트웨어 테스트 시스템, 방법 및 그 방법을 실행하기위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
CN109302522B (zh) 测试方法、装置以及计算机***和介质
CN111124919A (zh) 一种用户界面的测试方法、装置、设备及存储介质
CN106940695B (zh) 数据源信息的校验方法及装置
CN107145437B (zh) 一种java注解测试方法及装置
CN106776338B (zh) 一种测试方法、装置及服务器
CN112241360A (zh) 一种测试用例生成方法、装置、设备及存储介质
CN109558313B (zh) 构建异常测试场景的方法及装置
JP4440185B2 (ja) シナリオ編集装置および擬似基地局試験システムおよび擬似端末試験システムおよびシナリオ編集方法および試験処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
CN112181749A (zh) 硬件测试方法、装置、电子设备和存储介质
CN109739704A (zh) 一种接口测试方法、服务端及计算机可读存储介质
CN111708712A (zh) 用户行为测试用例的生成方法、流量回放方法及电子设备
CN111538659B (zh) 业务场景的接口测试方法、***、电子设备和存储介质
CN111488275B (zh) Ui自动化测试方法、装置、存储介质及电子设备
CN111400171B (zh) 一种接口测试方法、***、装置及可读存储介质
CN117493188A (zh) 接口测试方法及装置、电子设备及存储介质
CN112131127A (zh) 接口测试方法、装置、***及电子设备
CN110795338B (zh) 一种基于前后端交互的自动化测试方法、装置及电子设备
CN115657981A (zh) 验证环境中的打印信息的打印等级的设置方法及验证方法
CN113986263A (zh) 代码自动化测试方法、装置、电子设备、存储介质
CN112015633B (zh) 测试激励多平台复用方法、装置、设备及存储介质
US10296449B2 (en) Recording an application test
CN109408063B (zh) 基于虚拟机的指令插桩方法及装置
CN115470095A (zh) 一种测试方法、***、电子设备及计算机存储介质
CN113010409B (zh) 智能合约测试方法及装置、电子设备、存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
E801 Decision on dismissal of amendment
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20081020

Effective date: 20091125