KR20070082222A - Api test method and apparatus of embedded software - Google Patents

Api test method and apparatus of embedded software Download PDF

Info

Publication number
KR20070082222A
KR20070082222A KR1020060014765A KR20060014765A KR20070082222A KR 20070082222 A KR20070082222 A KR 20070082222A KR 1020060014765 A KR1020060014765 A KR 1020060014765A KR 20060014765 A KR20060014765 A KR 20060014765A KR 20070082222 A KR20070082222 A KR 20070082222A
Authority
KR
South Korea
Prior art keywords
test
manager
information
suite
test case
Prior art date
Application number
KR1020060014765A
Other languages
Korean (ko)
Other versions
KR100809291B1 (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 KR1020060014765A priority Critical patent/KR100809291B1/en
Publication of KR20070082222A publication Critical patent/KR20070082222A/en
Application granted granted Critical
Publication of KR100809291B1 publication Critical patent/KR100809291B1/en

Links

Images

Classifications

    • 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/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • 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/2268Logging of test results

Landscapes

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

Abstract

A method and a device for testing an API of embedded software are provided to offer a test result even if a system is crashed by storing information before system crash and failed test case information. The device includes a test suit(510) for registering the test case, a test manager(610) for storing the failed test case information, and an output manager(640) for providing a test result. A log before the system crash and the failed test case information are stored to a log file.

Description

임베디드 소프트웨어의 API 테스트 방법 및 장치{API test method and apparatus of embedded software}API test method and apparatus of embedded software

도 1은 종래 기술에 따른 CppUnit 구성을 도시한 도면.1 illustrates a CppUnit configuration according to the prior art.

도 2는 종래 기술에 따른 CppUnit을 이용한 유닛 테스트 프레임 워크(Unit test framework) 구성을 도시한 도면.FIG. 2 is a diagram illustrating a unit test framework configuration using CppUnit according to the prior art. FIG.

도 3은 종래 기술에 따른 유닛 테스트 프레임 워크의 흐름도.3 is a flow chart of a unit test framework according to the prior art.

도 4는 종래 기술에 따른 시스템 테스트 프레임 워크(System test frame work) 구성을 도시한 도면.4 is a diagram illustrating a system test frame work configuration according to the prior art.

도 5는 종래 기술에 따른 시스템 테스트 프레임 워크의 흐름도.5 is a flow diagram of a system test framework according to the prior art.

도 6은 본 발명의 GTT 구성을 도시한 도면.6 is a diagram illustrating a GTT configuration of the present invention.

도 7은 본 발명의 GTT를 이용한 시스템 테스트 프레임 워크의 구성을 도시한 도면.7 is a diagram illustrating a configuration of a system test framework using GTT of the present invention.

도 8은 본 발명의 실시예에 따른 테스트 하네스 코어 클래스 다이어그램.8 is a test harness core class diagram in accordance with an embodiment of the present invention.

도 9는 본 발명의 실시예에 따른 시스템 테스트 프레임 워크의 흐름도.9 is a flow diagram of a system test framework in accordance with an embodiment of the present invention.

도 10은 본 발명의 실시예에 따른 테스트 설정 파일을 도시한 도면.10 illustrates a test setup file in accordance with an embodiment of the present invention.

도 11은 본 발명의 실시예에 따른 테스트 결과를 도시한 도면.11 illustrates test results in accordance with an embodiment of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for main parts of the drawings>

400: GTT 410: 테스트 하네스 코어 400: GTT 410: test harness core

440: 인터페이스 430: 테스트 하네스 플랫폼440: interface 430: test harness platform

현재 빠르게 성장하고 있는 임베디드 소프트웨어 산업은 기술 혁신과 시장에서의 치열한 경쟁에 의해 새롭고 역동적인 양상으로 전개되고 있다.The fast-growing embedded software industry is emerging in a new and dynamic way through technological innovation and fierce competition in the market.

임베디드 시스템은 일반적인 목적보다 특수한 어플리케이션용으로 설계되기 때문에, 이 산업의 출현으로, 산업계는 보다 복잡한 시스템 설계를 위해 역동적인 구조 변화를 일으키는 창조적인 새로운 솔루션을 필요로 하게 되었다.Since embedded systems are designed for specific applications rather than general purpose, the advent of this industry has forced the industry to create new and creative solutions for dynamic structural changes for more complex system designs.

일반적인 컴퓨터가 아닌 각종 전자제품이나 정보기기 등에 설치되어 있는 마이크로프로세서에 미리 정해진 특정한 기능을 수행하는 소프트웨어를 내장시킨 시스템을 임베디드 시스템이라 하고, 여기에 내장된 소프트웨어가 임베디드 소프트웨어이다. An embedded system is a system in which a software that performs predetermined specific functions is embedded in a microprocessor installed in various electronic products or information devices, rather than a general computer, and the embedded software is embedded software.

임베디드 소프트웨어는 산업 및 군사용 제어기기, 디지털 정보가전기기, 자동센서 장비 등의 기능을 다양화하고 부가가치를 높이기 위한 핵심 소프트웨어로 자리매김하고 있으며, 최근에는 더욱 강력한 암호화 성능, 향상된 멀티미디어 API, 그리고 통신 API 코어 셋 등의 지원을 받는 핸드헬드 장비로부터 요구가 증가하면서, 무선 성능을 제공하기 위해 노력중인 장비업체들에 대해 OS의 유용성을 증가시키고 있으며 API 내에 내장되는 OS를 지원하는 기능들을 필요로 하고 있다.Embedded software has become the core software for diversifying and adding value to industrial and military control devices, digital information appliances, automatic sensor equipment, etc. Recently, more powerful encryption capabilities, improved multimedia APIs, and communication APIs Increasing demand from handheld devices, such as core sets, is increasing the usability of operating systems for device vendors working to provide wireless performance and require features to support the OS embedded within the API. .

도 1은 종래 기술에 따른 CppUnit 구성을 도시한 도면이다.1 is a diagram illustrating a CppUnit configuration according to the prior art.

종래 기술에 따른 CppUnit(100)은 자바에서 사용되는 Junit을 C++로 포팅한 오픈 소스로 C++ 유닛 테스트를 구현한 것 중의 하나로 C++의 프레임 워크 테스트를 위한 라이브러리이다. CppUnit (100) according to the prior art is an open source porting Junit used in Java to C ++ is one of the implementation of the C ++ unit test is a library for testing the framework of C ++.

CppUnit(100)은 테스트 스위트 템플릿 클래스(Test Suite Template Class)(110), 테스트 스위트 저장부(Test suite Repository)(120), 테스트 결과 수집부(Test Result Collector)(130), 테스트 결과 출력 관리부(Test Result Output Manager)(140), 러너(Runner)(150), 그리고 기타 모듈, 예를 들어, MFC(Microsoft Foundation Class) 환경에서 GUI(Graphic User Interface)를 제공하는 모듈, Windows, Linux, VxWorks OS를 고려한 Portability 모듈 등의 모듈로 구성되어 있다. The CppUnit 100 may include a test suite template class 110, a test suite repository 120, a test result collector 130, and a test result output manager. Test Result Output Manager (140), Runner (150), and other modules, such as modules that provide a Graphical User Interface (GUI) in a Microsoft Foundation Class (MFC) environment, Windows, Linux, VxWorks OS It is composed of modules such as portability module.

테스트 스위트 템플릿 클래스(110)에서는 테스트 스위트(Test suite)를 작성할 수 있고, 테스트 스위트 템플릿 클래스(110)의 메소드는 테스트 케이스가 된다.In the test suite template class 110, a test suite may be created, and the methods of the test suite template class 110 become test cases.

테스트 케이스는 테스트를 위한 최소의 유닛으로 하나의 모듈에 대한 여러 가지 테스트들을 하나의 메소드로 생성하는 것을 말하며, 테스트를 위한 코드, 테스트를 만족하는지를 확인하기 위한 어세션(assertion)을 가진다.A test case is a minimal unit for testing that generates several tests for a module in one method. The test case has the code for the test and an assertion for checking whether the test is satisfied.

테스트 스위트는 특정 컴포넌트, 어셈블리와 관련된 테스트 케이스들의 집합으로 테스트가 수행될 테스트 케이스가 추가되어 관리되고, 테스트의 자동화를 위해 테스트 케이스를 연결시켜 주는 역할을 한다.The test suite is a set of test cases related to a specific component and assembly. The test suite is added to manage a test case and connects test cases to automate the test.

테스트 스위트 저장부(120)는 테스트 스위트 템플릿 클래스(110)로 작성된 테스트 스위트들을 관리하는 저장부이며, 테스트 결과 수집부(130)는 테스트 케이스가 실패할 때마다 실패한 테스트 케이스의 정보를 저장한다. The test suite storage unit 120 is a storage unit that manages test suites created by the test suite template class 110, and the test result collection unit 130 stores information of the failed test case whenever the test case fails.

테스트 결과 출력 관리자(140)는 테스트 수행 결과를 테스트 파일이나 XML(Extensible Markup Language)파일, 콘솔 창 형태로 출력한다.The test result output manager 140 outputs the test execution result in the form of a test file, an Extensible Markup Language (XML) file, or a console window.

러너(15)는 테스트 스위트 저장부에서 선택된 테스트 스위트들의 테스트 수행을 담당한다. The runner 15 is responsible for testing the selected test suites in the test suite storage.

도 2는 종래 기술에 따른 CppUnit을 이용한 유닛 테스트 프레임 워크(Unit test framework) 구성을 도시한 도면이다.2 is a diagram illustrating a unit test framework configuration using a CppUnit according to the prior art.

유닛 테스트 프레임 워크는 최소의 실행 단위인 유닛을 익스트림 프로그래밍(Extreme Programming, 이하 XP)에서 애용되는 테스트 기법으로 개발하는 단계에서 작성되는 셀프 테스트라고 할 수 있고, 프로그램들의 각 요소들을 분리하여 테스트 케이스를 만든 후 각 유닛을 테스트하여 해당 요소가 정상 동작하는지를 확인하는 것이다.The unit test framework is a self-test in which a unit of minimum execution unit is developed as a test technique used in extreme programming (XP), and a test case is separated by separating each element of the program. After the test, each unit is tested to make sure that the element is working.

종래 기술에 따른 유닛 테스트 프레임 워크는 CppUnit(100)의 테스트 스위트 템플릿 클래스(110)를 이용하여 작성되는 테스트 스위트(200)와 테스트 환경에 따라 라이브러리나 DLL(Dynamic link library, 이하 DLL 이라고 함)의 형태인 CppUnit(100)이 타겟 플랫폼(220)상에서 동작하면서 유닛 테스트를 수행한다.The unit test framework according to the related art includes a library or a DLL (Dynamic link library, hereinafter referred to as a DLL) according to a test suite 200 and a test environment created using the test suite template class 110 of the CppUnit 100. The CppUnit 100 in the form performs unit tests while operating on the target platform 220.

도 3은 종래 기술에 따른 유닛 테스트 프레임 워크의 흐름도이다.3 is a flowchart of a unit test framework according to the prior art.

유닛 테스트를 수행하는 주체인 액터(미도시)는 유닛 테스트를 수행하는 함수로써 타겟 플랫폼(210)의 소스 코드에 직접 추가될 수도 있고, 별도로 작성되어 타겟 플랫폼에 연결될 수 있다.An actor (not shown), which is a subject that performs unit tests, may be added directly to the source code of the target platform 210 as a function of performing unit tests, or may be separately written and connected to the target platform.

유닛 테스트가 시작되면 액터 함수는 실패한 테스트 케이스의 정보를 저장할 수 있도록 테스트 결과 수집부(130)를 CppUnit(100)에 추가하고(S300), 수행할 테스트 스위트를 CppUnit(100)의 테스트 스위트 저장부(120)에서 획득하여(S310) CppUnit(100)의 러너(150)에게 전달하고(S320), 추가된 테스트 결과 수집부(130)를 지정해서 CppUnit(100)의 러너(150)를 통해 테스트를 수행한다(S330).When the unit test is started, the actor function adds the test result collector 130 to the CppUnit 100 so as to store information of the failed test case (S300), and adds the test suite to be performed to the test suite storage unit of the CppUnit 100. Obtained at 120 (S310) and delivered to the runner 150 of the CppUnit (100) (S320), by specifying the test result collector 130 added to the test through the runner 150 of the CppUnit (100) It performs (S330).

테스트 수행이 완료되면, 액터 함수에서 작성된 출력 형태의 테스트 결과 출력 관리자(140)를 선택해서 테스트 결과를 출력한다(S340).When the test is completed, the test result output manager 140 of the output form created by the actor function is selected and the test result is output (S340).

도 4는 종래 기술에 따른 시스템 테스트 프레임 워크(System test framework) 구성을 도시한 도면이다.4 is a diagram illustrating a system test framework configuration according to the prior art.

시스템 테스트 프레임 워크는 유닛 테스트가 논리적으로 확장된 것으로 이미 테스트를 마친 해당 유닛을 하나의 구성 요소로 통합하고, 두 유닛 사이의 인터페이스를 테스트하는 것을 말한다.The system test framework is a logical extension of unit testing, integrating previously tested units into one component and testing the interface between the two units.

종래 기술에 따른 시스템 테스트 프레임 워크는 유닛 테스트 프레임 워크와 마찬가지로 CppUnit(100)에서 작성되는 테스트 스위트(200)과 CppUnit(100)을 이용하여 테스트를 수행하는데, 테스트 수행의 주체인 액터(230) 함수의 역할을 하는 테스트 하네스(300)를 별도로 구현하여 추가한다. 시스템 테스트는 회귀테스트나 시험 대상의 릴리즈 정보 등 더 많은 정보를 반영해서 테스트를 수행해야 하기 때문에 별도의 테스트 하네스가 필요하다. The system test framework according to the prior art performs the test using the test suite 200 and the CppUnit (100) created in the CppUnit (100), similar to the unit test framework, actor 230 function that is the subject of the test execution Test harness 300, which serves as a separate implementation, adds. The system test requires a separate test harness because the test needs to be performed to reflect more information such as a regression test or a release target of the test target.

테스트 하네스(300)는 테스트 스위트의 각 단계를 실행하는 컴포넌트로 다른 컴포넌트와 상호작용함으로써, 테스트 케이스를 구동하는 것으로 설정 관리자(Configulation Manager)(310), 테스트 관리자(Test Manager)(320), 출력 관리자(Output Manager)(330)로 구성되어 있다.The test harness 300 is a component that executes each step of the test suite, and interacts with other components to drive test cases, such as a configuration manager 310, a test manager 320, and an output. It consists of an output manager 330.

설정 관리자(310)는 설정 파일로부터 시스템 테스트 정보, 예를 들어, 테스트 버전, 테스트 일자, 테스트 대상 모듈과 수행할 테스트 스위트 목록을 분석해서 관리하고, 테스트 관리자(320)는 설정 관리자(310)부터 설정된 것으로 개발자가 어떠한 테스트들을 수행할 것인지 결정하고 테스트 리스트를 작성하여 관리할 수 있으며, 수행할 테스트 스위트의 목록에 따라 테스트를 수행한다.The configuration manager 310 analyzes and manages system test information, for example, a test version, a test date, a test target module, and a list of test suites to be performed from the configuration file, and the test manager 320 starts from the configuration manager 310. With this setup, the developer can decide which tests to run, create and manage test lists, and perform tests according to the list of test suites to be executed.

출력 관리자(330)는 테스트가 완료되면, 설정 관리자(310)로부터 테스트 정보를 획득하고, 테스트 관리자(320)로부터 테스트 수행 결과를 획득해서 결과를 출력한다.When the test is completed, the output manager 330 obtains test information from the setting manager 310, obtains a test performing result from the test manager 320, and outputs the result.

도 5는 종래 기술에 따른 시스템 테스트 프레임 워크의 흐름도이다.5 is a flowchart of a system test framework according to the prior art.

먼저, 유닛 테스트의 주체인 액터(230)가 테스트 관리자(320)에게 테스트 수행을 요청하면(S500), 테스트 하네스(300)의 테스트 관리자(320)는 설정 관리자(310)에게 테스트 수행 정보 구성에 대한 요청을 한다(S502). First, when the actor 230, which is the main unit of the unit test, requests the test manager 320 to perform a test (S500), the test manager 320 of the test harness 300 sends a configuration manager 310 to the test performance information configuration. Make a request (S502).

구성 요청을 받은 설정 관리자(310)는 설정 파일로부터 테스트 명, 테스트 대상 모듈, 수행할 테스트 스위트 정보를 읽어 들이고 테스트 정보를 구성하며(S504), 테스트 수행 정보 구성 완료를 테스트 관리자(320)에게 통보하고(S506), 테스트 관리자(320)는 러너(150)에게 테스트를 시작할 것을 요청한다(S508).The configuration manager 310 receiving the configuration request reads the test name, the test target module, and the test suite information to be performed from the configuration file, configures the test information (S504), and notifies the test manager 320 of the completion of the test performance information configuration. In operation S506, the test manager 320 requests the runner 150 to start the test in operation S508.

테스트 관리자(320)의 테스트 시작 요청 후 러너(150)는 CppUnit(100)에게 리스너(listener) 등록을 요청하고(S510), 해당 리스너를 등록하면(S512), 러너(150)에게 리스너 등록 완료를 통보 한다(S514).After the test start request of the test manager 320, the runner 150 requests a listener (listener) registration to the CppUnit (100) (S510), and registers the corresponding listener (S512), and finishes the listener registration to the runner 150. Notify (S514).

리스너는 외부에서 접속해주기 위해 대기해 있는 클래스로 Cppunit(100)에 접속하는 외부의 요청을 대기하고 있다가 요청이 들어오면 연결해주는 역할을 한다.The listener is a class waiting to be accessed from the outside, and waits for an external request to access the Cppunit (100), and connects when a request comes in.

리스너 등록 완료를 통보 받은 러너(100)는 수행할 테스트 스위트의 목록을 설정 관리자(310)에게 요청하고(S516), 설정 관리자(310)는 자신이 가지고 있는 테스트 정보에서 수행할 테스트 스위트 정보를 러너(150)에게 제공한다(S518).The runner 100 notified of the completion of the listener registration requests the setting manager 310 for a list of test suites to be performed (S516), and the setting manager 310 executes the test suite information to be performed from the test information that it has. Provided to 150 (S518).

테스트 스위트의 정보를 제공 받은 러너(150)는 CppUnit(100)에게 테스트를 수행할 테스트 스위트 목록을 제공하고(S520), 테스트 스위트 저장부(120)에서 러너(150)가 제공한 테스트 스위트 목록을 가져와서 수행 대상 테스트 스위트로 등록한다(S522). The runner 150 provided with the information of the test suite provides the CppUnit 100 with a list of test suites to be tested (S520), and the test suite storage unit 120 provides a list of test suites provided by the runner 150. Import and register as a test suite to be performed (S522).

CppUnit(100)에서 테스트 스위트들이 등록되면(S522), 러너(150)에 등록 완료 보고를 하고(S524), 테스트 스위트 등록 보고를 받은 러너(150)는 CppUnit(100)에게 테스트 수행을 요청하고(S526), CppUnit(100)에서 테스트를 수행하여(S528) 테스트 수행이 완료될 경우 러너(150)에게 테스트 수행 완료에 대한 보고를 한다(S530). When the test suites are registered in the CppUnit 100 (S522), the registration completion report is reported to the runner 150 (S524), and the runner 150 receiving the test suite registration report requests the CppUnit 100 to perform the test ( S526), the CppUnit 100 performs a test (S528) and reports the completion of the test to the runner 150 when the test is completed (S530).

CppUnit(100)으로부터 테스트 수행 완료를 보고 받은 러너(150)는 테스트 관리자(320)에게 테스트 수행 완료 보고를 하고(S532), 테스트 관리자(320)는 출력 관리자(330)에게 테스트 결과 보고를 요청한다(S534).The runner 150 that receives the test performance completion from the CppUnit 100 reports the test performance completion to the test manager 320 (S532), and the test manager 320 requests the output manager 330 to report the test result. (S534).

테스트 결과 보고를 요청 받은 출력 관리자(330)는 설정 관리자(310)에게 테스트 정보를 요청하면(S536), 설정 관리자(310)로부터 테스트 정보를 전달 받는다(S538).The output manager 330, which has been requested to report the test result, requests test information from the setting manager 310 (S536), and receives test information from the setting manager 310 (S538).

테스트 정보를 전달 받은 출력 관리자(330)가 CppUnit(100)에게 필요한 테스트 수행 결과를 요청하면(S540), CppUnit(100)으로부터 테스트 수행 결과를 제공 받는다(S542).When the output manager 330, which has received the test information, requests the necessary test performance result from the CppUnit 100 (S540), the test performance result is provided from the CppUnit 100 (S542).

출력 관리자(330)는 설정 관리자(310)에게 받은 테스트 정보와 CppUnit(100)으로부터 제공 받은 테스트 결과를 바탕으로 테스트 결과를 보고하고(S544), 테스트 결과 보고가 완료 되었음을 테스트 관리자(320)에게 통보하면(S546), 테스트 관리자(320)는 액터(230)에게 테스트의 모든 과정이 완료 되었음을 보고한다(S548).The output manager 330 reports the test result based on the test information received from the configuration manager 310 and the test result provided from the CppUnit 100 (S544), and notifies the test manager 320 that the test result report is completed. If (S546), the test manager 320 reports to the actor 230 that all the process of the test is completed (S548).

이와 같이 종래 기술에서의 유닛 테스트 또는 시스템 테스트는 CppUnit을 사용하여 테스트를 수행하는데 테스트를 수행하는 주체인 액터 또는 액터에 해당하는 테스트 하네스를 별도로 구성해야 하며, 테스트 환경에 따라 라이브러리나 DLL을 생성하기가 쉽지 않기 때문에 CppUnit의 수정이 불가피 하지만 오픈 소스인 CppUnit의 소스가 복잡하여 수정이 어렵다는 단점이 있다.As described above, the unit test or system test in the related art uses CppUnit to perform a test to separately configure a test harness corresponding to an actor or actor that is a test subject, and to generate a library or a DLL according to a test environment. Modification of CppUnit is inevitable because it is not easy, but it is difficult to modify because the source of CppUnit, which is open source, is complicated.

비기능적 요구 사항을 검증하는 테스트 케이스의 경우는 장시간 수행되며, 시스템 크래시가 발생할 확률이 높기 때문에 시스템 테스트를 위한 테스트 프레임 워크는 시스템 크래시에 대처할 수 있어야 한다. 그러나 CppUnit 을 이용하여 테스트를 수행할 경우 CppUnit의 러너에 전달된 모든 테스트 스위트들에 대한 테스트를 수행한 후에 테스트 결과를 획득할 수 있기 때문에 테스트 수행 중 테스트 케이스 로 인한 시스템 크래시가 발생한 경우는 시스템 크래시 발생 이전까지의 테스트 결과를 보장할 수 없다. Test cases that verify non-functional requirements run for a long time, and because of the high probability of system crash, the test framework for system testing must be able to cope with system crashes. However, if you use CppUnit to test, you can obtain test results after performing tests on all test suites passed to CppUnit's runner, so if a system crash is caused by a test case during test execution, The test result until the occurrence cannot be guaranteed.

뿐만 아니라, 테스트 수행 중 테스트 케이스가 실패할 경우 수행 중인 테스트 케이스를 종료하여 다음 테스트 케이스에 대한 테스트를 수행해야 하지만, 종료 처리를 위해 CppUnit 내부를 수정해야 하며, 성공 또는 실패 매크로를 직접적으로 사용할 수 없다는 단점이 있다.In addition, if a test case fails while the test is running, you must terminate the running test case to perform the test for the next test case, but you must modify the CppUnit internals to handle the termination and use the success or failure macro directly. There is a disadvantage.

본 발명은 상기한 문제점을 개선하기 위해서 고안된 것으로, 다양한 테스트 환경 변화를 위한 OS의 독립성, 테스트 케이스를 등록하고, 수행할 수 있는 시스템 테스트 프레임 워크를 구성하여 시스템 크래시가 발생하더라도 시스템 크래시 이전까지의 정보와 실패한 테스트 케이스 정보를 저장하여 테스트 수행 결과를 제공하기 위한 것이다.The present invention has been devised to improve the above-mentioned problems. Independence of the OS for various test environment changes, and a system test framework that can register and execute test cases can be configured to perform system crash even before a system crash occurs. This is to store test information and failed test case information to provide test results.

본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해 될 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects that are not mentioned will be clearly understood by those skilled in the art from the following description.

상기 목적을 달성하기 위하여 본 발명의 실시예에 따른 임베디드 소프트웨어의 API 테스트 장치는 테스트 케이스를 등록하는 테스트 스위트부, 실패한 테스트 케이스 정보를 저장하는 출력 관리자 및 테스트 수행 결과를 제공하는 출력 관리자를 포함한다.In order to achieve the above object, the API test apparatus of the embedded software according to an embodiment of the present invention includes a test suite for registering test cases, an output manager for storing failed test case information, and an output manager for providing a test execution result. .

본 발명의 실시에 따른 임베디드 소프트웨어의 API 테스트 방법은 테스트 케이스를 등록하는 단계, 테스트 케이스의 실패 정보 저장 단계 및 테스트 수행 결과 보고 단계를 포함한다.The API test method of the embedded software according to an embodiment of the present invention includes registering a test case, storing failure information of the test case, and reporting a test performance result.

기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. Specific details of other embodiments are included in the detailed description and the drawings.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention and methods for achieving them will be apparent with reference to the embodiments described below in detail with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but can be implemented in various different forms, and only the embodiments make the disclosure of the present invention complete, and the general knowledge in the art to which the present invention belongs. It is provided to fully inform the person having the scope of the invention, which is defined only by the scope of the claims. Like reference numerals refer to like elements throughout.

도 6은 본 발명의 GTT 구성을 도시한 도면이다.6 is a diagram illustrating a GTT configuration of the present invention.

본 발명의 GTT(400)는 테스트 케이스나 테스트 스위트 실행에 관련된 어플리케이션으로 테스트 하네스 코어(410), 인터페이스(420), 플랫폼(430)으로 구성 될 수 있다. The GTT 400 of the present invention may be composed of a test harness core 410, an interface 420, and a platform 430 as an application related to test case or test suite execution.

테스트 하네스 코어(410)는 시스템 및 시스템 컴포넌트를 테스트하는 환경의 일부분으로 테스트를 지원하는 목적하에 생성된 코드와 데이터로 유닛 테스트나 시스템 테스트에 사용하기 위한 코드를 의미하며, 메인, 테스트 관리자, 설정 관리자, 러너, 출력 관리자, 저장부, 테스트 스위트로 구성 될 수 있고, 후술되는 도 8 에서 상세하게 설명 된다.The test harness core 410 is a piece of code and data generated for the purpose of supporting a test as part of an environment for testing a system and system components. The test harness core 410 refers to code used for unit test or system test. It may be composed of a manager, a runner, an output manager, a storage unit, and a test suite, which will be described in detail in FIG. 8 described later.

인터페이스(420)는 테스트 하네스에 맞추어 테스트 케이스를 작성할 수 있는 클래스와 매크로를 제공하는 클래스와 매크로 헤더 파일과 테스트 하네스를 실행 시킬 수 있는 인터페이스를 제공하는 메인 클래스로 구성 될 수 있고, 테스트 하네스 전체에서 사용할 수 있는 구조체와 공용 클래스, 그리고 전역 변수를 가지고 있는 글로벌 헤더파일로 구성 될 수 있다.The interface 420 may be composed of a class for writing a test case in accordance with the test harness, a class providing a macro, and a main class providing a macro header file and an interface for executing a test harness. It can consist of structures, public classes, and global header files that contain global variables.

테스트 하네스 플랫폼(430)은 OS와 타겟 플랫폼에 독립적인 레이어로 의존성이 있는 시스템 콜들을 각 OS에 따라 작성해 놓고, 양방향으로 링크될 수 있는 리스트 클래스, OS내에서 공유 자원에 대한 접속을 제어하기 위해 사용되는 신호인 세마포어(Semaphore)를 구현한 세마포어 클래스, 시스템 테스트의 실행 코드인 스레드(Thread), 시간 함수들을 구현한 타임 클래스, 대기 대상(Waiting object)클래스로 구성 될 수 있다.The test harness platform 430 is a layer independent of the OS and the target platform to make system calls dependent on each OS, and to control access to a shared class in the OS, a list class that can be bidirectionally linked. It can be composed of semaphore class that implements semaphore, signal used, thread that is execution code of system test, time class that implements time functions, and waiting object class.

도 7은 본 발명의 GTT를 이용한 시스템 테스트 프레임 워크를 도시한 도면이다.7 is a diagram illustrating a system test framework using the GTT of the present invention.

본 발명의 실시예에 따른 시스템 테스트 프레임 워크(500)는 유닛 테스트가 논리적으로 확장된 것으로 이미 테스트를 마친 유닛들을 하나의 구성 요소로 통합하고, 해당 유닛들 사이의 인터페이스를 테스트 하는 것을 말하며, 유닛이 결합 될 때 발생하는 문제를 식별하기 위한 것으로 테스트 하네스 코어(410), 테스트 스위트(510), 테스트 하네스 플랫폼(430), 타겟 플랫폼(520)으로 구성될 수 있고, 여러 사용자가 테스트 케이스를 생성하여 테스트를 수행할 경우 특정 기능을 수행 할 수 있도록 유틸리티의 집합인 유틸리티(미도시)를 추가로 구성할 수 있다.The system test framework 500 according to an embodiment of the present invention refers to a unit test is logically expanded, integrating already tested units into one component, and testing an interface between the units. This is to identify a problem that occurs when it is combined may be composed of a test harness core 410, a test suite 510, a test harness platform 430, a target platform 520, multiple users create a test case In order to perform a test, a utility (not shown), which is a set of utilities, can be additionally configured to perform a specific function.

테스트 하네스 코어(410)는 시스템 및 시스템 컴포넌트를 테스트하는 환경의 일부분으로 테스트를 지원하는 목적 하에 생성된 코드와 데이터들을 의미하고, 유닛 테스트나 모듈 테스트에 사용하기 위해 사용자에 의해 생성 될 수 있다. 이와 같은 목적을 수행하는 테스트 하네스 코어(410)에서는 테스트 스위트(510)를 분석해서 관리하고, 분석한 목록에 따라 테스트를 수행하여 테스트가 완료되면 테스트 정보와 수행 결과를 획득하여 결과를 출력하는 테스트 과정을 관리 할 수 있다. The test harness core 410 refers to code and data generated for the purpose of supporting a test as part of an environment for testing a system and system components, and may be generated by a user for use in unit test or module test. In the test harness core 410 performing the above-described purpose, the test suite 510 is analyzed and managed, and the test is performed according to the analyzed list, and when the test is completed, the test information and the execution result are obtained and the result is output. You can manage the process.

테스트 스위트(510)는 테스트 케이스들의 집합이며, 테스트 케이스는 테스트를 수행하기 위해 기본이 되는 문서화된 테스트 케이스 명세서(Test Case Specification)의 항목으로 테스트 할 구체적인 내용을 문서화한 것으로 직접 테스트를 수행하는 근간이 되고, 테스트를 수행했다는 증거가 되며, 테스트가 커버하는 범위를 표현할 수 도 있다. 일반적으로 테스트 케이스는 측정 가능한 상태에 대한 정보, 상황, 이벤트, 입출력 값을 포함할 수 있다.The test suite 510 is a set of test cases, and the test case is a documented test case specification that is the basis for performing a test. This can be evidence that the test has been performed, or it can express the range covered by the test. In general, a test case may include information about a measurable state, a situation, an event, and an input / output value.

테스트 하네스 플랫폼(430)은 도 7에서 언급했듯이 OS와 테스트 수행 대상 플랫폼인 타겟 플랫폼(520)에 독립적인 레이어로 의존성이 있는 시스템 콜들을 각 OS에 따라 작성해 놓을 수 있는 것으로 양방향으로 링크될 수 있는 리스트 클래스, OS내에서 공유 자원에 대한 접속을 제어하기 위해 사용되는 신호인 세마포어 클래스, 시스템 테스트의 실행 코드인 스레드, 시간 함수들을 구현한 타임 클래스, 대기 대상클래스로 구성 될 수 있다.As described in FIG. 7, the test harness platform 430 is a layer that is independent of the OS and the target platform 520, which is a target platform for testing, and can be linked in both directions. It can consist of a list class, a semaphore class that is a signal used to control access to shared resources in the OS, a thread that is the execution code of system tests, a time class that implements time functions, and a wait target class.

테스트 하네스 코어(410)와 테스트 케이스 코드는 라이브러리나 DLL이 아닌 타겟 플랫폼의 모듈로 삽입되어 타겟 플랫폼과 함께 컴파일 되기 때문에 별도 구성을 하지 않아도 된다.Since the test harness core 410 and the test case code are inserted into modules of the target platform rather than libraries or DLLs, they are compiled together with the target platform.

도 8은 본 발명의 실시예에 따른 테스트 하네스 코어 클래스 다이어그램 이다.8 is a test harness core class diagram according to an embodiment of the present invention.

본 발명의 실시예에 따른 테스트 하네스 코어 클래스는 메인(600), 테스트 관리자(610), 설정 관리자(620), 러너(630), 출력 관리자(640), 저장부(650), 테스트 스위트(510), 플랫폼(430)으로 구성될 수 있다.The test harness core class according to the embodiment of the present invention includes a main 600, a test manager 610, a setup manager 620, a runner 630, an output manager 640, a storage unit 650, and a test suite 510. ), May be configured as a platform 430.

메인(600)은 테스트 관리자(610)와 연결되어 테스트를 시작할 수 있는 시작 클래스가 구성되고, 테스트 관리자(610)는 메인(600), 러너(630), 설정 관리자(620), 그리고 출력 관리자(640)와 연결되고, 시작, 설정 관리자, 출력 관리자, 러너 클래스로 구성되어 어떠한 테스트들을 수행할지 결정할 수 있으며, 테스트 리스트를 작성해서 관리할 수 있다. The main 600 is connected to the test manager 610 is configured a start class for starting a test, the test manager 610 is the main 600, runner 630, configuration manager 620, and the output manager ( It is connected to the 640, and consists of a starter, a configuration manager, an output manager, and a runner class to determine which tests to run and to create and manage a test list.

설정 관리자(620)는 테스트 관리자(610), 출력 관리자(640)와 연결이 되며, 테스트 설정에 필요한 테스트 대상, 써머리 파일, 로그 파일, 반복 횟수, 시간, 모듈과 테스트 스위트 리스트 클래스들이 구성되어 관리할 수 있다.The configuration manager 620 is connected to the test manager 610 and the output manager 640. The test target, summary file, log file, iteration count, time, module, and test suite list classes necessary for test setting are configured and managed. can do.

러너(630)는 테스트 관리자(610), 저장부(600), 테스트 스위트(530)와 연결되고, 시작, 테스트가 수행되는 테스트 케이스의 전체 수, 실패, 성공, 에러, 시작 시간, 종료 시간, 수행 시간, 실제로 수행된 반복 횟수 등을 획득할 수 있는 함수들로 구성될 수 있다. The runner 630 is connected to the test manager 610, the storage unit 600, the test suite 530, and the start, the total number of test cases in which the test is performed, failure, success, error, start time, end time, It can be composed of functions that can obtain the execution time, the number of iterations actually performed, and the like.

출력 관리자(640)은 테스트 관리자(610), 설정 관리자(620)와 연결되어 테스 트 실패 시 해당 정보를 출력 하는 로그 실패 정보 클래스로 구성될 수 있고, 테스트 스위트(530)은 테스트 스위트 명, 테스트 케이스 리스트 클래스로 구성될 수 있다.The output manager 640 may be configured with a log failure information class that is connected to the test manager 610 and the setting manager 620 to output corresponding information when a test fails. The test suite 530 may include a test suite name and a test. It can consist of a case list class.

저장부(650)는 테스트 스위트들을 관리하는 저장부로써, 테스트 스위트(510)로부터 테스트 케이스를 추가하거나 저장하여 테스트 케이스가 실패할 때마다 실패한 테스트 케이스의 정보를 저장한다.The storage unit 650 is a storage unit for managing test suites. The storage unit 650 adds or stores test cases from the test suite 510 to store information about failed test cases whenever a test case fails.

도 9는 본 발명의 실시예에 따른 시스템 테스트 프레임 워크의 흐름도이다.9 is a flowchart of a system test framework in accordance with an embodiment of the present invention.

먼저, 테스트 케이스의 집합인 테스트 스위트들은 테스트 자동화를 위해 프로그램 실행 시 전역 변수로 선언되고(S900), 테스트 스위트가 가지고 있는 테스트 케이스들을 자신의 테스트 케이스 리스트에 등록한다(S902). First, test suites, which are a set of test cases, are declared as global variables when a program is executed for test automation (S900), and test cases owned by the test suite are registered in their test case list (S902).

테스트 스위트들은 저장부(600)에 자신의 등록을 요청하고(S904), 저장부(600)에서 각 테스트 스위트들의 등록 성공을 테스트 스위트에게 보고하면(S906), 메인(600)에 테스트 수행을 요청한다(S908). 메인(600)은 외부에 제공되는 인터페이스 클래스로 진입 점이 될 수 있다.The test suites request their registration to the storage unit 600 (S904), and when the storage unit 600 reports the success of registration of each test suite to the test suite (S906), the test suite requests a test execution to the main 600. (S908). The main 600 may be an entry point to an externally provided interface class.

메인(600)은 실제적 관리자인 테스트 관리자(610)에게 테스트 수행 요청을 하고(S910), 테스트 관리자(610)는 설정 관리자(620)에게 테스트 정보, 예를 들어, 예를 들어, 테스트 버전, 테스트 일자, 테스트 대상 모듈과 수행할 테스트 스위트에 관한 구성 요청을 한다(S912). The main 600 requests the test manager 610, which is a real manager, to perform a test (S910), and the test manager 610 sends test information to the configuration manager 620, for example, a test version and a test. Date, the configuration request for the test target module and the test suite to be performed (S912).

구성 요청을 받은 설정 관리자(620)는 설정 파일에서 테스트 정보와 수행될 테스트 스위트 목록을 읽어 들여서 테스트 정보를 구성하고(S914), 테스트 관리자 (610)에게 테스트 정보의 구성 완료를 보고한다(S916).The configuration manager 620 receiving the configuration request reads the test information and the test suite list to be performed from the configuration file to configure the test information (S914), and reports the completion of the configuration of the test information to the test manager 610 (S916). .

테스트 정보의 구성 완료가 되면(S916), 테스트 관리자(610)는 러너(630)에게 테스트 수행을 요청하고(S918), 러너(630)는 설정 관리자(620)에게 테스트 스위트 목록을 요청한다(S920). 설정 관리자(620)는 해당 요청에 따라 러너(630)에게 테스트 스위트 정보를 제공한다(S922).When the configuration of the test information is completed (S916), the test manager 610 requests the test runner to perform the test (S918), and the runner 630 requests the test suite list from the setting manager 620 (S920). ). The setting manager 620 provides test suite information to the runner 630 according to the request (S922).

러너(630)는 해당 목록의 테스트 스위트를 저장부(600)에 요청하여(S924) 해당 테스트 스위트를 제공 받고(S926), 저장부(600)로부터 제공 받은 테스트 스위트를 바탕으로 러너(630)는 해당 테스트 스위트가 가지고 있는 테스트 케이스에 대한 수행을 테스트 스위트에 요청하고(S928), 테스트 스위트는 자신의 테스트 케이스에 대한 테스트를 수행한다(S930). The runner 630 requests the test suite of the corresponding list from the storage unit 600 (S924), receives the corresponding test suite (S926), and the runner 630 based on the test suite provided from the storage unit 600. The test suite requests the test suite to perform a test case that the test suite has (S928), and the test suite performs a test on its test case (S930).

테스트 스위트에서 테스트 수행 결과를 러너(630)에게 전달하면(S932), 러너(630)에서 테스트 수행 결과를 저장한다(S934).When the test suite delivers the test execution result to the runner 630 (S932), the runner 630 stores the test performance result (S934).

수행 결과의 전달 방식은 예외 방식으로 전달되며, 실패인 경우만 실패 예외로 전달될 수 있다.The execution method of the execution result is delivered in an exception manner, and in case of failure, it can be delivered in a failure exception.

여기서 말하는 예외 방식은 C++ 라이브러리의 예외 클래스들이 프로그래머에게 기본적인 에러 모델을 제공하는 것이며, 이것을 기반으로 어플리케이션에 적합한 에러 탐지와 통보를 위한 메소드를 작성할 수 있다.The exception approach here is that the exception classes in the C ++ library provide the programmer with a basic error model. Based on this, you can write methods for error detection and notification that are appropriate for your application.

표준 C++ 라이브러리는 에러 처리를 위한 클래스들을 제공하는데, 이 클래스들은 C++의 예외 처리(exception handling) 기능을 사용하고 있다. 표준 C++ 라이브러리는 크게 논리 에러(logic error)와 실행 시 에러(runtime error)로 나누어 에러 모델을 구현하고 있다.The standard C ++ library provides classes for error handling, which use the exception handling capabilities of C ++. The standard C ++ library implements the error model by largely dividing it into logic errors and runtime errors.

러너(630)는 전달 받은 테스트 수행 결과를 저장하고(S934), 출력 관리자(640)에게 실패 정보에 대한 기록을 요청하면(S936), 출력 관리자(640)는 실패 정보를 저장하여(S938) 러너(630)에게 실패 정보 저장에 대한 완료 보고를 한다(S940). The runner 630 stores the received test execution result (S934), and requests the output manager 640 to record the failure information (S936), and the output manager 640 stores the failure information (S938). In operation 940, the terminal 630 reports completion of the failure information storage.

러너(630)에 실패 정보에 대한 저장 완료 보고가 되면(S940), 타 테스트 케이스에 대한 테스트 수행을 요청하게 된다(S942).When the storage completion report for the failure information is reported to the runner (630) (S940), the test request for the other test case is requested (S942).

러너(630)는 테스트 스위트의 모든 테스트 케이스에 대해 테스트 스위트에게 테스트 케이스의 수행을 요청하는 단계, 해당 테스트 케이스에 대한 테스트를 수행하는 단계, 테스트 케이스의 테스트 수행 결과 전달 단계, 러너(630)에서의 수행 결과 저장 단계, 실패 정보 기록 요청 및 실패 정보 저장 단계, 그리고 실패 정보 저장 완료 보고까지의 단계를 수행하게 된다(S928~S940). The runner 630 requests a test suite to perform a test case for all test cases of the test suite, performs a test on the test case, passes a test result of a test case, and a runner 630. Steps from the execution result storage step, the failure information recording request and the failure information storage step, and the failure information storage completion report are performed (S928 to S940).

러너(630)에서 테스트 케이스에 대한 테스트 수행 요청이 되면(S942), 러너(630)는 모든 테스트 스위트에 대해 저장부(600)에 테스트 스위트를 요청하는 단계, 해당 테스트 스위트 전달 단계, 테스트 케이스 수행 요청 단계, 테스트 케이스의 테스트 수행 단계, 테스트 케이스의 수행 결과 전달 단계, 수행 결과 저장 단계, 실패 정보에 대한 기록 요청 단계, 실패 정보를 저장하고 실패 정보 저장에 대한 완료 보고 단계, 타 테스트 케이스 수행 요청 단계까지의 과정을 수행하게 된다(S924~S942).When the test run request for the test case is received in the runner 630 (S942), the runner 630 requests the test suite to the storage unit 600 for all the test suites, the corresponding test suite delivery step, and the test case execution. Request step, Test execution step of test case, Execution result delivery step of test case, Execution result storage step, Record request step for failure information, Completion reporting step for saving failure information and saving failure information, Request for other test case execution The process until the step is performed (S924 ~ S942).

러너(630)에서 테스트 관리자(610)에게 테스트에 관한 모든 수행이 완료되었 다고 보고 되면(S946), 테스트 관리자(610)는 출력 관리자(640)에게 테스트 결과에 대한 보고를 요청한다(S948). When the runner 630 reports that the test manager 610 has completed all of the tests (S946), the test manager 610 requests the output manager 640 to report the test result (S948).

출력 관리자(640)가 설정 관리자(620)에게 테스트 정보, 예를 들어, 테스트 버전 정보, 테스트 명, 테스트 대상 모듈 명 정보를 요청 하고(S950), 설정 관리자(620)는 해당 정보를 출력 관리자(640)에게 전달 한다(S952).The output manager 640 requests test information, for example, test version information, test name, and test module name information, from the setting manager 620 (S950), and the setting manager 620 transmits the corresponding information to the output manager (620). 640) (S952).

출력 관리자(640)가 러너(630)에게 테스트 수행 정보, 예를 들어, 테스트를 수행한 총 테스트 케이스의 수, 성공한 테스트 케이스의 수, 실패한 테스트 케이스의 수, 실패한 테스트 케이스 정보 목록을 요청하면(S954), 해당 테스트 수행 정보를 출력 관리자(640)에게 전달하고(S956), 결과를 저장한다(S958).When output manager 640 asks runner 630 for a list of test performance information, for example, the total number of test cases that performed a test, the number of successful test cases, the number of failed test cases, and the failed test case information list ( In operation S954, the test performance information is transmitted to the output manager 640 (S956), and the result is stored (S958).

출력 관리자(640)에 결과가 저장되면(S958), 테스트 관리자(610)에게 결과 저장에 대한 완료가 보고 되고(S960), 테스트 관리자(610)는 GTT 메인(600)에 모든 테스트 과정이 완료되었음을 보고 하고(S962), 테스트 하네스에 테스트 수행이 완료 되었음을 보고(S964) 함으로써 테스트의 모든 과정이 완료될 수 있다.When the result is stored in the output manager 640 (S958), the completion of the result storage is reported to the test manager 610 (S960), and the test manager 610 indicates that all the test processes are completed in the GTT main 600. By reporting (S962) and reporting that the test has been completed in the test harness (S964), all the processes of the test may be completed.

도 10은 본 발명의 실시예에 따른 테스트 설정 파일을 도시한 도면이다.10 illustrates a test setup file according to an embodiment of the present invention.

본 발명의 실시예에 따른 테스트 설정 파일은 테스트 버전 정보(700), 테스트 명(710), 써머리 파일(720), 로그 파일(730), 반복 횟수(740), 모듈(750), 테스트 스위트(760)로 구성되어 결과 보고서의 기초 정보로 사용될 수 있다.The test configuration file according to an embodiment of the present invention includes test version information 700, test name 710, summary file 720, log file 730, repetition number 740, module 750, test suite ( 760), and can be used as basic information of the result report.

테스트 버전 정보(700)에는 테스트 대상의 버전명과 수행할 시험의 제목 명을 대상에 기술할 수 있으며, 써머리 파일(720)은 테스트 전체 결과를 기록할 수 있고, 로그 파일(730)은 각 테스트 케이스가 수행될 때마다 해당 로그와 실패한 테 스트 케이스 정보를 기록할 수 있다.In the test version information 700, the version name of the test subject and the title name of the test to be performed may be described in the target, and the summary file 720 may record the entire test result, and the log file 730 may indicate each test case. Each time is executed, the log and failed test case information can be recorded.

인터널 로그 파일(미도시)은 테스트 하네스와 관련된 메시지를 기록하는 것으로 테스트 중 시스템 크래시가 발생할 경우 써머리 파일(720)은 생성되지 않지만 로그 파일(730)은 크래시 발생 전까지의 로그와 실패한 테스트 케이스 정보를 모두 기록할 수 있다.The internal log file (not shown) records a message related to the test harness. If a system crash occurs during the test, the summary file 720 is not generated, but the log file 730 is a log file before the crash and failed test case information. You can record all of them.

로그 파일(730)명을 지정하지 않고, 디폴트로 기재할 경우 써머리 파일(720)은 예를 들어, TS_YYYYMMDDHHMM.csv YYYY년도, MM은 월, DD는 일자, HH는 시간, MM은 분으로 기록이 되고, 로그 파일(730)은 예를 들어, TL_YYYYMMDDHHMM.log와 TI_YYYYMMDDHHMM.log 두 가지 형식으로 생성된다. 전자는 로그 파일(730)이고, 후자는 인터널 로그 파일이다. 두 가지 경우 모두 써머리 파일(720)과 마찬가지로 년도, 월, 일, 시간, 분으로 기록이 될 수 있다.If you do not specify the name of the log file (730), and the default is written, the summary file 720 is recorded as, for example, TS_YYYYMMDDHHMM.csv YYYY year, MM is month, DD is date, HH is hour, and MM is minute. The log file 730 is generated in two formats, for example, TL_YYYYMMDDHHMM.log and TI_YYYYMMDDHHMM.log. The former is log file 730 and the latter is internal log file. In both cases, as in the summary file 720, it may be recorded as year, month, day, hour, and minute.

반복 횟수(740)는 선택된 테스트 스위트들을 반복하는 횟수로 상수로 표시되고, 모듈(750)은 테스트의 타겟 모듈명이며, 다른 응용프로그램에서 읽어 들일 때 사용될 수 있다. 테스트 스위트(760)는 수행하고자 하는 테스트 스위트의 목록으로 구성될 수 있다.The number of iterations 740 is represented by a constant number of iterations of the selected test suites, and module 750 is the target module name of the test and can be used when reading from other applications. The test suite 760 may consist of a list of test suites to be performed.

도 11은 본 발명의 실시예에 따른 테스트 결과를 도시한 도면이다.11 is a diagram illustrating test results according to an embodiment of the present invention.

본 발명의 실시예에 따른 테스트 결과 레포트는 설정 관리자에서 설정 파일을 도 10과 같이 설정했을 경우의 테스트 결과를 나타내는 써머리 파일이며, 윈도우 환경뿐만 아니라 리눅스 환경을 고려해서 CSV 파일 포맷으로 저장되어 실패된 테스트 케이스가 있을 경우 해당 프로그램으로 보내기를 할 수 있다. The test result report according to an embodiment of the present invention is a summary file indicating a test result when a configuration file is set in the configuration manager as shown in FIG. 10. The test result report is stored in a CSV file format in consideration of a Linux environment as well as a Windows environment and failed. If you have a test case, you can send it to the program.

써머리 파일(720)은 시험 정보를 나타내는 테스트 정보 섹션(800)과 시험 결과를 나타내는 시험 결과 통계 섹션(810), 실패 테스트 케이스 정보를 나열하는 실패 리스트 섹션(820), 에러가 발생한 에러 리스트 섹션(830)을 표시할 수 있다. The summary file 720 includes a test information section 800 representing test information, a test result statistics section 810 representing test results, a failure list section 820 listing failed test case information, an error list section in which an error occurred ( 830 may be displayed.

테스트 정보 섹션(800)에는 테스트 버전 명, 테스트 제목, 테스트 대상 모듈 명, 선택된 테스트 스위트 반복 횟수, 실제로 반복 수행된 횟수, 수행 시간이 표시된다. The test information section 800 displays a test version name, a test title, a test target module name, a selected test suite iteration number, an actual number of iterations, and an execution time.

시험 결과 통계 섹션(810)에는 전체 수행된 테스트 케이스 수, 성공한 테스트 케이스 수, 실패한 테스트 케이스 수, 에러가 발생한 테스트 케이스가 표시될 수 있다. The test result statistics section 810 may display a total number of test cases performed, a number of successful test cases, a number of failed test cases, and a test case in which an error occurs.

에러가 발생한 테스트 케이스의 의미는 통과 또는 실패 판정 매크로에 의해서 발생한 예외 상황이 아닌 다른 예외 상황이 발생해서 테스트 케이스가 중단된 것을 의미한다. The test case in which the error occurred means that the test case was interrupted because an exception occurred other than the exception caused by the pass or fail decision macro.

실패 리스트 섹션(820)에는 실패한 테스트 스위트명과 해당 테스트 스위트에 포함되는 테스트 케이스 명, 실패가 발생한 소스 파일 명과 위치, 실패가 발생한 소스의 라인 넘버, 해당 매크로에 작성된 설명 메시지로 실제로 수행된 결과의 상태 정보가 표시될 수 있다. The failure list section 820 contains the name of the failed test suite and the name of the test case included in the test suite, the name and location of the source file where the failure occurred, the line number of the source where the failure occurred, and the status of the results that were actually performed by the description message created in the macro. Information can be displayed.

에러 리스트 섹션(830)은 에러가 발생한 테스트 케이스의 상세 정보, 예를 들어, 테스트 스위트 명, 테스트 케이스 명, 발생한 예외 종류 정보가 표시될 수 있다. The error list section 830 may display detailed information of a test case in which an error occurs, for example, a test suite name, a test case name, and exception type information.

이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described above with reference to the accompanying drawings, those skilled in the art can understand that the present invention can be implemented in other specific forms without changing the technical spirit or essential features. will be. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.

상기한 바와 같은 본 발명의 임베디드 소프트웨어 API 테스트 장치 및 방법은 다음과 같은 효과가 하나 혹은 그 이상 있다. The embedded software API test apparatus and method of the present invention as described above has one or more of the following effects.

첫 째, 테스트 하네스와 테스트 케이스 코드는 라이브러리나 DLL 형태가 아닌 타겟 플랫폼의 소프트웨어 모듈로 삽입되므로, 별도로 구성하지 않고 타겟 소프트웨어와 함께 컴파일 되는 장점이 있다.First, since the test harness and test case code are inserted into the software module of the target platform rather than the library or DLL type, there is an advantage that the test harness and the test case code are compiled together without the configuration.

둘째, 테스트 하네스는 각 OS에 독립적인 플랫폼을 가지고 있고, 플랫폼에서 지원하지 않는 OS의 경우에도 테스트 하네스 및 플랫폼을 이용해서 작성된 테스트 케이스 코드의 수정 없이 해당 OS의 시스템 콜을 맵핑에서 추가하여 사용할 수 있는 장점도 있다.Second, the test harness has a platform independent of each OS, and even for OSs not supported by the platform, the system call of the corresponding OS can be added to the mapping without modifying test case code written using the test harness and platform. There is also an advantage.

셋째, 테스트 하네스는 테스트 할 테스트 스위트를 선택할 수 있고 테스트 정보, 반복 횟수, 반복 시간 등을 설정할 수 있는 설정 관리자와 테스트 결과의 출력 형태를 지정할 수 있는 출력 관리자를 구성하고 있으며, 각 관리자는 필요에 따라 수정이 용이하게 작성되어 있어 시스템 크래시가 발생할 경우 크래시 이전의 테스트 케이스 로그와 실패한 테스트 케이스 정보를 별도의 로그 파일에 기록하기 때문에 다양한 테스트 요구 사항을 충족시킬 수 있는 장점도 있다.Third, the test harness consists of a configuration manager that can select the test suite to test, set test information, the number of iterations, repeat time, etc., and an output manager that can specify the output form of the test results. Therefore, it is easy to modify, and if there is a system crash, the test case log before the crash and the failed test case information are recorded in separate log files, which can satisfy various test requirements.

Claims (5)

테스트 케이스를 등록하는 단계;Registering a test case; 상기 테스트 케이스의 실패 정보를 저장하는 단계; 및 Storing failure information of the test case; And 상기 테스트의 수행 결과를 보고하는 단계를 포함하는 임베디드 소프트웨어의 API 테스트 방법.And reporting the result of performing the test. 제 1항에 있어서,The method of claim 1, 테스트 하네스는 OS와 독립적인 레이어로 구성되어 테스트 하네스가 지원하지 않는 OS의 경우에도 별도로 구성을 하거나 상기 테스트 케이스의 수정 없이 테스트 하네스의 독립적인 레이어에 OS 지원 부분만 추가해서 테스트를 수행하는 임베디드 소프트웨어의 API 테스트 방법.The test harness is composed of OS independent layers so that even if the OS is not supported by the test harness, the software is configured separately or the test harness is added to an independent layer of the test harness without modification of the test case. API test method. 제 2항에 있어서,The method of claim 2, 상기 시스템 크래시 발생 이전까지의 로그와 실패한 테스트 케이스 정보를 로그 파일에 저장하는 임베디드 소프트웨어의 API 테스트 방법.The API test method of the embedded software to save the log and the failed test case information until the system crash occurs in a log file. 테스트 케이스를 등록하는 테스트 스위트부;A test suite unit for registering a test case; 실패한 테스트 케이스 정보를 저장하는 출력 관리자; 및 An output manager for storing failed test case information; And 테스트 수행 결과를 제공하는 출력 관리자를 포함하는 임베디드 소프트웨어 의 API 테스트 장치.An API test device in embedded software that includes an output manager that provides test performance results. 제 4항에 있어서,The method of claim 4, wherein 상기 시스템 크래시 발생 이전까지의 로그와 실패한 테스트 케이스 정보는 로그 파일에 저장하는 임베디드 소프트웨어의 API 테스트 장치.The API test apparatus of the embedded software for storing the log and the failed test case information until the system crash occurs in a log file.
KR1020060014765A 2006-02-15 2006-02-15 API test method and apparatus of embedded software KR100809291B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060014765A KR100809291B1 (en) 2006-02-15 2006-02-15 API test method and apparatus of embedded software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060014765A KR100809291B1 (en) 2006-02-15 2006-02-15 API test method and apparatus of embedded software

Publications (2)

Publication Number Publication Date
KR20070082222A true KR20070082222A (en) 2007-08-21
KR100809291B1 KR100809291B1 (en) 2008-03-04

Family

ID=38611933

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060014765A KR100809291B1 (en) 2006-02-15 2006-02-15 API test method and apparatus of embedded software

Country Status (1)

Country Link
KR (1) KR100809291B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100937689B1 (en) * 2008-01-15 2010-01-20 포항공과대학교 산학협력단 Method of simulation supporting software testing based on user environment profiling
KR101014684B1 (en) * 2007-09-14 2011-02-16 주식회사 신한은행 System and Method for Analysing Program Test Result using Test Result Log and Program Recording Medium
CN103268285A (en) * 2013-05-31 2013-08-28 百度在线网络技术(北京)有限公司 Method and device for automatic generation of robustness test case of API interface

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101249449B1 (en) 2011-12-14 2013-04-03 인크로스 주식회사 Apparatus for web platform verification tool and control method thereof
KR20240032347A (en) * 2022-09-02 2024-03-12 쿠팡 주식회사 Electronic apparatus for testing api and method thereof

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101014684B1 (en) * 2007-09-14 2011-02-16 주식회사 신한은행 System and Method for Analysing Program Test Result using Test Result Log and Program Recording Medium
KR100937689B1 (en) * 2008-01-15 2010-01-20 포항공과대학교 산학협력단 Method of simulation supporting software testing based on user environment profiling
CN103268285A (en) * 2013-05-31 2013-08-28 百度在线网络技术(北京)有限公司 Method and device for automatic generation of robustness test case of API interface

Also Published As

Publication number Publication date
KR100809291B1 (en) 2008-03-04

Similar Documents

Publication Publication Date Title
US10853232B2 (en) Adaptive system for mobile device testing
US8250543B2 (en) Software tracing
US9519495B2 (en) Timed API rules for runtime verification
US8239838B2 (en) Kernel-aware debugging system, medium, and method
US20170147480A1 (en) Test script generation
US8627302B2 (en) Sampling based runtime optimizer for efficient debugging of applications
CN103049371A (en) Testing method and testing device of Android application programs
US8418148B2 (en) Thread execution analyzer
JP2012018583A (en) Software development support device and processing method thereof
WO2013007068A1 (en) Automatic test system and method oriented to functions of hardware apparatus
KR100809291B1 (en) API test method and apparatus of embedded software
Moran et al. On-device bug reporting for android applications
CN110879781A (en) Program debugging method and device, electronic equipment and computer readable storage medium
US10846206B2 (en) Adaptive software testing
JP3206641B2 (en) Microcomputer system debugging method, debugging device, and recording medium recording debug program
CN110837467B (en) Software testing method, device and system
Makki et al. Automated regression testing of BPMN 2.0 processes: a capture and replay framework for continuous delivery
CN112069082A (en) Automatic testing method and system
JP5133649B2 (en) Electronic device and memory management program
CN105339974B (en) Analog sensor
CN114496053A (en) Data anomaly detection method, device and equipment and computer readable storage medium
TWI393897B (en) Integrated test method and system using the same
KR101685299B1 (en) Automated testing method and apparatus for program processable non-deterministic events
CN111651308B (en) Method and device for acquiring debugging data of DP-HDMI chip and intelligent device
US20160275002A1 (en) Image capture in application lifecycle management for documentation and support

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
LAPS Lapse due to unpaid annual fee