KR20070087400A - 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템 - Google Patents

운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템 Download PDF

Info

Publication number
KR20070087400A
KR20070087400A KR1020060017770A KR20060017770A KR20070087400A KR 20070087400 A KR20070087400 A KR 20070087400A KR 1020060017770 A KR1020060017770 A KR 1020060017770A KR 20060017770 A KR20060017770 A KR 20060017770A KR 20070087400 A KR20070087400 A KR 20070087400A
Authority
KR
South Korea
Prior art keywords
test
code
coverage
location
test position
Prior art date
Application number
KR1020060017770A
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 KR1020060017770A priority Critical patent/KR20070087400A/ko
Publication of KR20070087400A publication Critical patent/KR20070087400A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis

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)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및 장치에 관한 것으로서, 더욱 상세하게는 테스트 위치 정보 및 원본 명령어를 미리 저장 수단에 저장하고, 상기 저장 수단을 참조하여 동적 검사 코드를 삽입하고, 상기 저장 수단을 참조하여 커버리지를 분석함으로써 테스트 수행 속도를 향상시키는 테스트 커버리지 분석 방법 및 시스템에 관한 것이다. 본 발명의 일실시예에 따라 OS 소프트웨어의 테스트 커버리지 분석 방법은 OS 코드의 제어 흐름을 분석하여 테스트 위치 명세 정보를 생성하고, 소정의 저장 모듈에 저장하는 단계- 상기 테스트 위치 명세 정보는 테스트 위치에 대한 주소 정보를 포함함 -, 상기 OS 코드 수행 중 상기 테스트 위치 명세 정보를 참조하여 테스트 위치를 판단하고, 상기 테스트 위치에 동적 검사 코드를 삽입하고, 테스트 코드를 수행하는 단계, 및 상기 테스트 위치 정보 및 상기 검사 코드 삽입의 결과를 참조하여 커버리지를 분석하는 단계를 포함한다.
운영체제 시스템(Operating System), 동적 검사 코드, 테스트 코드, 운영 체제 소프트웨어

Description

운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및 시스템{METHOD AND SYSTEM FOR TEST COVERAGE ANALYSIS OF OPERATING SYSTEM SOFTWARE}
도 1은 종래 기술의 테스트 커버리지 분석 과정을 도시한 도면.
도 2는 종래 기술에서 정적 검사 코드를 삽입하여 테스트 커버리지 결과를 생성하는 과정을 도시한 도면.
도 3은 종래 기술에서 동적 코드를 삽입하여 테스트 커버리지를 생성하는 과정을 도시한 도면.
도 4는 본 발명의 일실시예에 따른 OS 테스트 커버리지 분석 과정을 도시한 흐름도.
도 5는 본 발명의 일실시예에 따른 제어 흐름 그래프를 도시한 도면.
도 6은 본 발명에 따른 테스트 위치 명세 정보를 기록한 저장 모듈의 일실시예를 도시한 도면.
도 7은 본 발명의 일실시예에 따라 테스트 위치의 원본 명령어를 트랩 명령어로 대체하는 과정을 도시한 도면.
도 8은 본 발명의 일실시예에 따라 OS 수행 코드의 커버리지를 분석하는 과정을 도시한 도면.
도 9는 본 발명에서 테스트 위치 명세 정보를 이용하는 실시예를 설명하기 위한 도면.
도 10은 본 발명의 일실시예에 따른 OS 테스트 커버리지 시스템의 구성을 도시한 블록도.
<도면의 주요 부분에 대한 부호의 설명>
1001: 저장 모듈
1002: 동적 검사 코드 삽입 모듈
1003: 커버리지 분석 모듈
본 발명은 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및 장치에 관한 것으로서, 더욱 상세하게는 테스트 위치 정보 및 원본 명령어를 미리 저장 수단에 저장하고, 상기 저장 수단을 참조하여 동적 검사 코드를 삽입하고, 상기 저장 수단을 참조하여 커버리지를 분석함으로써 테스트 수행 속도를 향상시키는 테스트 커버리지 분석 방법 및 시스템에 관한 것이다.
오늘날, 컴퓨팅 기술의 발달로 임베디드 시스템에서의 RTOS(Real-time Operating System)의 사용이 확산되고 있다. 이 때, RTOS의 안정성을 확보하기 위해서는 충분한 테스트가 필요한데, 테스트 결과는 RTOS에서 복수의 테스트 프로그램을 실행한 후 실행 결과인 테스트 커버리지를 분석하여 도출할 수 있다. 이 때, 테스트 커버리지는 테스트의 달성도를 나타내는 지표로서, 실제 테스트 수행된 수/ 수행 가능한 경우의 수 등으로 산출될 수 있다. 따라서, 효과적인 테스트 커버리지의 분석이 RTOS 의 안정성 확보에 핵심이라고 할 수 있다.
종래 기술에 따라 테스트 커버리지를 분석하는 과정은 다음과 같다.
(1) OS(Operating System) 프로그램의 소스 코드의 구문을 분석하여 제어 흐름을 분석(control-flow analysis)한다.
(2) OS 프로그램의 테스트 위치에 검사 코드를 삽입(instrumentation)한다.
(3) OS 프로그램과 연동하여 소정 개수의 테스트 프로그램을 수행시키고, 테스트 위치에서의 수행 결과 정보를 수집한다.
(4) 수행 결과 정보를 취합하여 테스트 커버리지를 분석한다.
도 1은 종래 기술의 테스트 커버리지 분석 과정을 도시한 도면이다. 도 1을 참조하면, 종래 기술의 테스트 커버리지 분석 시스템은 OS 프로그램의 제어 흐름을 분석하여 테스트 위치(102)를 판단한다.
OS 프로그램과 연동하여 테스트 프로그램을 수행시키면, 테스트 프로그램은 특정 테스트 위치들을 수행(covered)하므로, 수행된 테스트 위치와 관련된 수행 결과 정보(103)를 수집할 수 있다. 마찬가지로, 종래 기술의 테스트 커버리지 분석 시스템은 테스트 커버리지 분석에 필요한 복수의 테스트 프로그램들을 OS와 연동하여 수행하고, 수행된 테스트 위치와 관련된 수행 결과 정보들을 분석하여 테스트 커버리지 결과(104)를 생성하여 OS 프로그램의 안정성을 테스트할 수 있다.
이 때, 상기 (2)의 검사 코드를 삽입하는 방법은 i) 정적 검사 코드를 삽입하는 방법, ii) 동적 검사 코드를 삽입하는 방법이 있다. 이하 도 2 및 도 3을 참조하여 종래 기술의 검사 코드 삽입 방법을 설명한다.
도 2는 종래 기술에서 정적 검사 코드를 삽입하여 테스트 커버리지 결과를 생성하는 과정을 도시한 도면이다.
도 2를 참조하면, 종래 기술은 테스트 프로그램을 수행하기 전에 단계(S101)에서 OS 프로그램의 소스 코드를 분석하여 제어 흐름을 분석한 후, 단계(S102)에서 테스트 위치를 결정하고, 단계(S103)에서 상기 테스트 위치에 소스 또는 바이너리 코드를 삽입한 후, 컴파일링한다.
정적 코드를 삽입하는 방법은, 수행 시간의 오버헤드가 적은 장점이 있으나, 테스트 위치에 소스 또는 바이너리 코드 등의 검사 코드를 삽입한 후, 컴파일링을 수행하여야 하는 단점이 있다. 또한, OS 수행 중 소스 또는 바이너리 코드 등의 검사 코드를 삽입할 수 없는 단점이 있다.
도 3은 종래 기술에서 동적 코드를 삽입하여 테스트 커버리지를 생성하는 과정을 도시한 도면이다.
도 3을 참조하면, 종래 기술에 따른 테스트 커버리지 수행 시스템은 테스트 프로그램의 수행 중에 단계(S301)에서 제어 흐름을 분석하고, 단계(S302)에서 테스트 위치를 판단한 후, 단계(S303)에서 테스트 위치의 원본 명령어를 트랩(trap) 명령어로 대체하여 검사 코드를 삽입한다.
테스트 커버리지 수행 시스템의 트랩 처리기는 단계(S303)에서 트랩 명령어를 원본 명령어로 복구한 후, 단계(S304)에서 수행 정보를 수집한다. 복수의 테스트 프로그램에 대한 수행 정보가 수집되면 단계(S302)에서 커버리지를 분석하고, 단계(S305)에서 커버리지 분석 결과를 도출하여 OS의 안정성을 판단한다.
동적 코드를 삽입하여 테스트 커버리지를 생성하는 방법은 OS에서 테스트 프로그램을 수행하는 중에 검사 코드를 삽입할 수 있다는 장점이 있으나, 테스트 프로그램의 수행 중에 제어 흐름을 분석하므로 커버리지 생성의 오버헤드가 큰 단점이 있다.
따라서, OS의 안정성을 테스트 함에 있어서, 테스트 프로그램의 수행 속도를 증가시키고, 테스트 프로그램의 수행 결과 커버리지 생성 시간이 단축시키고, 메모리의 오버헤드를 최소화할 수 있으며, OS의 부하를 최소화할 수 있는 테스트 커버리지의 생성 방법 및 시스템의 개발이 절실한 실정이다.
본 발명은 미리 OS 제어 흐름을 분석하여 테스트 위치 정보 및 원본 명령어 정보를 저장 모듈에 저장하고, 저장 모듈을 참조하여 동적 검사 코드를 삽입하고, 저장 모듈을 참조하여 OS 테스트 커버리지를 분석하므로 테스트 커버리지 분석에 필요한 데이터 요구량을 감소시키고, 테스트 수행 속도를 현저하게 향상시키는 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및 시스템을 제공하는 것을 목적으로 한다.
또한, 본 발명은 테스트 위치에 소스 또는 바이너리 코드 등의 검사 코드를 삽입한 후, 다시 컴파일링을 수행하여야 하는 종래 기술의 단점을 해결하므로, 테스트 수행 속도를 향상시킬 수 있는 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및 시스템을 제공하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 테스트 코드를 수행하면서 제어 흐름을 분석하여야 하는 종래 기술의 단점을 해결하여, 테스트 수행 속도를 향상시킬 수 있는 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및 시스템을 제공하는 것을 또 다른 목적으로 한다.
또한 본 발명은 복구된 원본 명령어를 유지하고, 테스트 위치 명세 정보를 참조하여 남아 있는 트랩 명령어를 판단하여 커버리지를 분석하므로, 테스트 수행 속도를 향상시킬 수 있는 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및 시스템을 제공하는 것을 또 다른 목적으로 한다.
상기의 목적을 달성하고, 상술한 종래기술의 문제점을 해결하기 위하여, 본 발명의 일실시예에 따라 OS 소프트웨어의 테스트 커버리지 분석 방법은 OS 코드의 제어 흐름을 분석하여 테스트 위치 명세 정보를 생성하고, 소정의 저장 모듈에 저장하는 단계- 상기 테스트 위치 명세 정보는 테스트 위치에 대한 주소 정보를 포함함 -, 상기 OS 코드 수행 중 상기 테스트 위치 명세 정보를 참조하여 테스트 위치를 판단하고, 상기 테스트 위치에 동적 검사 코드를 삽입하고, 테스트 코드를 수행하는 단계, 및 상기 테스트 위치 정보 및 상기 검사 코드 삽입의 결과를 참조하여 커버리지를 분석하는 단계를 포함하는 것을 특징으로 한다.
또한 본 발명의 다른 실시예에 따라 테스트 커버리지를 분석하는 시스템은 OS 코드의 제어 흐름을 분석하여 테스트 위치 명세 정보를 생성하여 저장하는 저장 모듈- 상기 테스트 위치 명세 정보는 테스트 위치에 대한 주소 정보를 포함함 -, 상기 OS 코드 수행 중 상기 테스트 위치 명세 정보를 참조하여 테스트 위치를 판단하고, 상기 테스트 위치에 동적 검사 코드를 삽입하고, 테스트 코드를 수행하는 동적 검사 코드 삽입 모듈, 및 상기 테스트 위치 명세 정보 및 상기 동적 검사 코드 삽입의 결과를 참조하여 커버리지를 분석하는 커버리지 분석 모듈을 포함한다.
이하 첨부된 도면을 참조하여 본 발명에 따른 OS 테스트 커버리지 분석 방법 및 시스템에 대하여 상세히 설명한다.
도 4는 본 발명의 일실시예에 따른 OS 테스트 커버리지 분석 과정을 도시한 흐름도이다.
도 4를 참조하면, OS 테스트 커버리지 분석 시스템은 단계(S401)에서 OS 코드의 제어 흐름을 분석하여 단계(S402)에서 테스트 위치 명세 정보를 생성하고, 소정의 저장 모듈에 저장한다.
상기 OS 코드의 제어 흐름은 OS 소프트웨어의 소스 코드의 구문을 분석하여 제어 흐름 그래프(control-flow graph)를 생성함으로써 생성할 수 있다.
도 5는 본 발명의 일실시예에 따른 제어 흐름 그래프를 도시한 도면이다. 도 5를 참조하면, 본 발명의 OS 테스트 커버리지 분석 시스템은 OS 소프트웨어의 소스 코드(501)을 참조하여 제어 흐름 그래프(502)를 작성할 수 있다.
상기 테스트 위치 명세 정보는 테스트 위치에 대한 주소 정보 및 상기 테스트 위치에 대응하는 원본 명령어 정보를 포함한다.
도 6은 본 발명에 따른 테스트 위치 명세 정보를 기록한 저장 모듈의 일실시예를 도시한 도면이다. 도 6을 참조하면 본 발명에 따른 OS 테스트 커버리지 분 석 시스템은 테스트 대상 모듈 정보(601), 테스트 위치의 총수 정보(602), 테스트 위치의 주소 정보(603), 원본 명령어(604)를 저장 모듈에 기록한다.
테스트 대상 모듈 정보(601)은 OS 소프트웨어 중 테스트 대상이 되는 모듈에 관한 정보이다. 본 발명은 테스트 대상 모듈을 지정하여 테스트 수행 여부를 판단하여 커버리지를 분석할 수도 있고, 대상 모듈에 대한 지정 없이 전체 OS 코드에 대한 커버리지를 분석할 수도 있다.
한편 본 발명은 OS 소프트웨어에 수행된 테스트 코드에 대한 커버리지를 분석하는 것을 예로 들어 설명하고 있으나, OS 소프트웨어를 포함한 모든 형태의 소프트웨어에 수행된 테스트 코드에 대한 커버리지 분석에도 적용될 수 있음은 물론이다.
테스트 위치의 총수 정보(602)는 특정 모듈에서의 테스트 위치의 총수로써, 커버리지 결과 분석을 위해 사용된다.
테스트 위치 주소 정보(603)는 OS 테스트의 수행 정보를 파악하기 위해 동적 검사 코드를 삽입할 위치에 관한 주소 정보이다. 일례로, 테스트 위치는 소정의 함수의 시작, 조건 분기문, 조건 분기의 대상 중 하나 이상의 위치일 수 있다.
원본 명령어(604)는 OS 소프트웨어의 소스 코드 중 테스트 위치 주소에 기록된 명령어이다.
본 발명의 저장 모듈은 데이터를 저장하기 위한 수단으로서, 데이터베이스, 메모리, 디스크, 레지스터, 캐시 등 데이터 기록 수단을 모두 포함하는 개념이다.
도 4의 단계(S403)에서 OS 소프트웨어의 코드 수행 중 상기 테스트 위치 명 세 정보를 참조하여 테스트 위치를 판단하고, 단계(S404)에서 상기 테스트 위치에 동적 검사 코드를 삽입한다.
동적 검사 코드는 테스트 프로그램의 코드가 테스트 위치를 커버(covered)하는 가를 알아보기 위한 코드이다. 일례로, 동적 검사 코드로 트랩 명령어가 사용될 수 있다.
이 때, 테스트 커버리지 분석 시스템은 OS 소프트웨어의 수행 코드가 상기 테스트 위치에 해당하는 경우, 상기 테스트 위치의 원본 명령어를 트랩 명령어로 대체한다.
도 7은 본 발명의 일실시예에 따라 테스트 위치의 원본 명령어를 트랩 명령어로 대체하는 과정을 도시한 도면이다. 도 7을 참조하면, 본 발명의 테스트 커버리지 분석 시스템은 저장 모듈의 테스트 위치 명세 정보(701)을 참조하여 OS 수행 코드의 원본 명령어를 트랩 명령어(702, 703)으로 대체한다. 예를 들어, 테스트 위치의 주소가 "30000A80"인 경우, 해당 주소에 기록되어 있던 원본 명령어 "E591018"을 트랩 명령어인 "E7FFFFFF"로 대체한다.
다음으로, 본 발명의 OS 테스트 커버리지 분석 시스템은 단계(S404)에서 하나 이상의 테스트 코드를 수행하여 상기 동적 검사 코드의 삽입 결과 정보를 생성한다. 단계(S406)에서 테스트 코드의 수행 결과, OS 프로그램의 테스트 위치를 커버하는 경우, 동적 검사 코드인 트랩 명령어는 트랩을 발생한다.
상기 테스트 위치에서 트랩이 발생한 경우, 본 발명의 OS 테스트 커버리지 분석 시스템은 단계(S407)에서 상기 원본 명령어를 상기 테스트 위치에 복구한다. 이 때, 본 발명의 OS 테스트 커버리지 분석 시스템은 저장 모듈에 기록된 테스트 위치 명세 정보를 참조하여 원본 명령어를 테스트 위치에 복구할 수 있다.
상기 예에서, 테스트 위치 주소 "30000A80"에서 트랩이 발생한 경우, 본 발명의 테스트 커버리지 분석 시스템은 테스트 위치 명세 정보를 참조하여 상기 테스트 위치 주소에 대응하는 원본 명령어 "E591018"를 판독하고, 트랩 명령어인 "E7FFFFFF"를 원본 명령어인 "E591018"로 대체한다.
단계(S408)에서 테스트 코드의 수행이 종료되면 본 발명의 테스트 커버리지 분석 시스템은 상기 테스트 위치 정보 및 상기 검사 코드 삽입의 결과를 참조하여 커버리지를 분석한다.
이 때, 본 발명의 테스트 커버리지 분석 시스템은 단계(S409)에서 저장 모듈에 기록된 테스트 위치 명세 정보로부터 테스트 위치를 추출하고, 단계(S410)에서 테스트 수행이 완료된 OS 코드의 테스트 위치에 트랩 명령어가 위치해 있는지를 판단한다.
본 발명의 테스트 커버리지 분석 시스템은 단계(S409)의 판단 결과 테스트 수행이 완료된 OS 코드의 테스트 위치에 트랩 명령어가 위치해 있으면, 단계(S411)에서 테스트 코드가 해당 위치를 커버하지 않는 것(uncovered)으로 판단하고, 테스트 위치에 트랩 명령어가 위치해 있지 않고 원본 명령어가 위치해 있으면 단계(S412)에서 테스트 코드가 해당 위치를 커버하는 것(covered)으로 판단한다.
테스트 위치 명세 정보에 포함된 모든 테스트 위치에서의 커버 여부를 판단하면, 본 발명의 테스트 커버리지 분석 시스템은 동적 검사 코드의 삽입 결과를 종 합하여 단계(S413)에서 커버리지를 분석한다.
이 때, 커버리지 분석은 (테스트 위치에서 커버된 코드 라인수/총코드 라인수)를 산출하여 수행할 수 있으며, 별도의 커버리지 분석 프로그램을 사용하여 분석할 수 있다.
도 8은 본 발명의 일실시예에 따라 OS 수행 코드의 커버리지를 분석하는 과정을 도시한 도면이다. 도 8을 참조하면, 본 발명의 테스트 커버리지 분석 시스템은 저장 모듈의 테스트 명세 파일 정보를 참조하여 테스트 위치를 판독하고, OS 수행 코드의 테스트 위치(802)에 기록된 명령어가 트랩 명령어인지, 원본 명령어인지를 판단한다.
예를 들어, 테스트 위치 "30000B14"에 기록된 명령어가 트랩 명령어인 "E7FFFFFF"인 경우 테스트 위치는 커버되지 않은 것(uncovered)으로 판단하고(803), 테스트 위치 "30000A80"에 기록된 명령어가 원본 명령어인 "E59901018"인 경우, 그 테스트 위치는 커버된 것으로 판단(804)하여 커버리지를 분석한다.
또한, 실시예에 따라 태스트 위치가 조건 분기문인 경우, 테스트 수행 여부는 테스트 수행한 OS 코드가 조건 분기를 지났는지(covered) 여부에 따라 결정하여 커버리지를 분석할 수 있다. 이 때, 저장 모듈에는 조건 분기문의 위치와 대상 위치 정보를 유지하여 커버리지 분석에 이용한다.
따라서 본 발명은 미리 OS 제어 흐름을 분석하여 테스트 위치 정보 및 원본 명령어 정보를 저장 모듈에 저장하고, 저장 모듈을 참조하여 OS 테스트 커버리지를 분석하므로 테스트 수행 속도를 현저하게 향상시킬 수 있는 효과가 있다.
또한, 본 발명은 테스트 위치에 소스 또는 바이너리 코드 등의 검사 코드를 삽입한 후, 다시 컴파일링을 수행하여야 하는 종래 기술의 단점을 해결하므로, 테스트 수행 속도를 향상시킬 수 있는 효과가 있다.
또한, 본 발명은 테스트 코드를 수행하면서 제어 흐름을 분석하여야 하는 종래 기술의 단점을 해결하여, 테스트 수행 속도를 향상시킬 수 있다.
도 9는 본 발명에서 테스트 위치 명세 정보를 이용하는 실시예를 설명하기 위한 도면이다. 도 9를 참조하면, 본 발명은 테스트 위치 명세 정보를 참조하여 동적 검사 코드를 삽입하고(S901), 테스트 위치 명세 정보를 참조하여 원본 명령어를 복구하고(S902), 테스트 위치 명세 정보를 참조하여 커버리지를 분석하므로(S905) 테스트 커버리지 분석에 필요한 데이터 요구량을 감소시키고, 테스트 수행 속도를 현저하게 향상시킬 수 있다.
또한 본 발명은 복구된 원본 명령어를 유지하고, 테스트 위치 명세 정보를 참조하여 남아 있는 트랩 명령어를 판단하여 커버리지를 분석하므로, 테스트 수행 속도를 향상시킬 수 있다.
본 발명에 따른 OS 테스트 커버리지 분석 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
도 10은 본 발명의 일실시예에 따른 OS 테스트 커버리지 시스템의 구성을 도시한 블록도이다. 도 10을 참조하면, 본 발명의 일실시예에 따른 OS 테스트 커버리지 시스템은 저장 모듈(1001), 동적 검사 코드 삽입 모듈(1002), 커버리지 분석 모듈(1003)을 포함하여 구성될 수 있다.
저장 모듈(1001)은 OS 코드의 제어 흐름을 분석하여 테스트 위치 명세 정보를 생성하여 저장한다. 상기 테스트 위치 명세 정보는 테스트 위치에 대한 주소 정보를 포함한다. 이 때, 상기 저장 모듈은 상기 OS 소프트웨어의 소스 코드를 분석하여 테스트 위치 정보를 생성할 수 있다.
동적 검사 코드 삽입 모듈(1002)은 상기 OS 코드 수행 중 상기 테스트 위치 명세 정보를 참조하여 테스트 위치를 판단하고, 상기 테스트 위치에 동적 검사 코드를 삽입하고, 테스트 코드를 수행한다. 상기 테스트 위치는 소정의 함수의 시작, 조건 분기문, 조건 분기의 대상 중 하나 이상의 위치일 수 있다.
상기 테스트 위치 명세 정보는 상기 테스트 위치에 대응하는 원본 명령어 정보를 포함하고, 상기 동적 검사 코드 삽입 모듈은, 상기 OS의 수행 코드가 상기 테스트 위치에 해당하는 경우, 상기 테스트 위치의 원본 명령어를 트랩 명령어로 대체하고, 상기 테스트 위치에서 트랩이 발생한 경우, 상기 저장 모듈을 참조하여 상기 원본 명령어를 상기 테스트 위치에 복구한다.
커버리지 분석 모듈(1003)은 상기 테스트 위치 명세 정보 및 상기 동적 검사 코드 삽입의 결과를 참조하여 커버리지를 분석한다. 상기 커버리지 분석 모듈은. 상기 저장 모듈을 참조하여, 상기 테스트 위치 정보에 기록된 수행 코드가 원본 명령어인지 트랩 명령어인지 판단하여 커버리지 결과를 분석한다.
지금까지 본 발명에 따른 OS 테스트 커버리지 분석 시스템에 대해서 설명하였고, 앞서 실시예들에서 설명한 기술적 내용들이 도 10의 OS 테스트 커버리지 분석 시스템에서도 그대로 적용될 수 있으므로 그 상세한 내용은 이하 생략하기로 한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
본 발명은 미리 OS 제어 흐름을 분석하여 테스트 위치 정보 및 원본 명령어 정보를 저장 모듈에 저장하고, 저장 모듈을 참조하여 동적 검사 코드를 삽입하고, 저장 모듈을 참조하여 OS 테스트 커버리지를 분석하므로 테스트 커버리지 분석에 필요한 데이터 요구량을 감소시키고, 테스트 수행 속도를 현저하게 향상시킬 수 있는 효과가 있다.
또한, 본 발명은 테스트 위치에 소스 또는 바이너리 코드 등의 검사 코드를 삽입한 후, 다시 컴파일링을 수행하여야 하는 종래 기술의 단점을 해결하므로, 테스트 수행 속도를 향상시킬 수 있는 효과가 있다.
또한, 본 발명은 테스트 코드를 수행하면서 제어 흐름을 분석하여야 하는 종래 기술의 단점을 해결하여, 테스트 수행 속도를 향상시킬 수 있다.
또한 본 발명은 복구된 원본 명령어를 유지하고, 테스트 위치 명세 정보를 참조하여 남아 있는 트랩 명령어를 판단하여 커버리지를 분석하므로, 테스트 수행 속도를 향상시킬 수 있다.

Claims (10)

  1. OS(Operating System) 코드의 제어 흐름을 분석하여 테스트 위치 명세 정보를 생성하고, 소정의 저장 모듈에 저장하는 단계- 상기 테스트 위치 명세 정보는 테스트 위치에 대한 주소 정보를 포함함 -;
    상기 OS 코드 수행 중 상기 테스트 위치 명세 정보를 참조하여 테스트 위치를 판단하고, 상기 테스트 위치에 동적 검사 코드를 삽입하고, 테스트 코드를 수행하는 단계; 및
    상기 테스트 위치 정보 및 상기 검사 코드 삽입의 결과를 참조하여 커버리지를 분석하는 단계
    를 포함하는 것을 특징으로 하는 커버리지 분석 방법.
  2. 제1항에 있어서,
    상기 테스트 위치 명세 정보는 상기 테스트 위치에 대응하는 원본 명령어 정보를 포함하고,
    상기 OS 수행 중 상기 테스트 위치 명세 정보를 참조하여 테스트 위치를 판단하고, 상기 테스트 위치에 동적 검사 코드를 삽입하고, 테스트 코드를 수행하는 상기 단계는,
    상기 OS의 수행 코드의 위치가 상기 테스트 위치에 해당하는 경우, 상기 테스트 위치의 원본 명령어를 트랩 명령어로 대체하는 단계; 및
    상기 테스트 위치에서 트랩이 발생한 경우, 상기 저장 모듈을 참조하여 상기 원본 명령어를 상기 테스트 위치에 복구하는 단계
    를 포함하는 것을 특징으로 하는 커버리지 분석 방법.
  3. 제1항에 있어서,
    상기 테스트 위치 정보 및 상기 동적 검사 코드 삽입 결과를 참조하여 커버리지를 분석하는 상기 단계는.
    상기 저장 모듈을 참조하여, 상기 테스트 위치 정보에 기록된 수행 코드가 원본 명령어인지 트랩 명령어인지 판단하여 커버리지를 분석하는 것을 특징으로 하는 커버리지 분석 방법.
  4. 제1항에 있어서,
    상기 테스트 위치는 소정의 함수의 시작, 조건 분기문, 조건 분기의 대상 중 하나 이상의 위치인 것을 특징으로 하는 커버리지 분석 방법.
  5. 제1항 내지 제4항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  6. OS(Operating System) 코드의 제어 흐름을 분석하여 테스트 위치 명세 정보를 생성하여 저장하는 저장 모듈- 상기 테스트 위치 명세 정보는 테스트 위치에 대 한 주소 정보를 포함함 -;
    상기 OS 코드 수행 중 상기 테스트 위치 명세 정보를 참조하여 테스트 위치를 판단하고, 상기 테스트 위치에 동적 검사 코드를 삽입하고, 테스트 코드를 수행하는 동적 검사 코드 삽입 모듈; 및
    상기 테스트 위치 명세 정보 및 상기 동적 검사 코드 삽입의 결과를 참조하여 커버리지를 분석하는 커버리지 분석 모듈
    를 포함하는 것을 특징으로 하는 테스트 커버리지 분석 시스템.
  7. 제6항에 있어서,
    상기 저장 모듈은,
    상기 OS 소프트웨어의 소스 코드를 분석하여 상기 테스트 위치 명세 정보를 생성하는 것을 특징으로 하는 테스트 커버리지 분석 시스템.
  8. 제6항에 있어서,
    상기 테스트 위치 명세 정보는 상기 테스트 위치에 대응하는 원본 명령어 정보를 포함하고,
    상기 동적 검사 코드 삽입 모듈은,
    상기 OS의 수행 코드의 위치가 상기 테스트 위치에 해당하는 경우, 상기 테스트 위치의 원본 명령어를 트랩 명령어로 대체하고, 상기 테스트 위치에서 트랩이 발생한 경우, 상기 저장 모듈을 참조하여 상기 원본 명령어를 상기 테스트 위치에 복구하는 것을 특징으로 하는 테스트 커버리지 분석 시스템.
  9. 제6항에 있어서,
    상기 커버리지 분석 모듈은.
    상기 저장 모듈을 참조하여, 상기 테스트 위치 정보에 기록된 수행 코드가 원본 명령어인지 트랩 명령어인지 판단하여 커버리지 결과를 분석하는 것을 특징으로 하는 커버리지 분석 방법.
  10. 제6항에 있어서,
    상기 테스트 위치는 소정의 함수의 시작, 조건 분기문, 조건 분기의 대상 중 하나 이상의 위치인 것을 특징으로 하는 테스트 커버리지 분석 시스템.
KR1020060017770A 2006-02-23 2006-02-23 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템 KR20070087400A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060017770A KR20070087400A (ko) 2006-02-23 2006-02-23 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060017770A KR20070087400A (ko) 2006-02-23 2006-02-23 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템

Publications (1)

Publication Number Publication Date
KR20070087400A true KR20070087400A (ko) 2007-08-28

Family

ID=38613425

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060017770A KR20070087400A (ko) 2006-02-23 2006-02-23 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템

Country Status (1)

Country Link
KR (1) KR20070087400A (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101038397B1 (ko) * 2009-06-19 2011-06-01 강원대학교산학협력단 로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템
WO2012002635A1 (ko) * 2010-06-28 2012-01-05 현대자동차 주식회사 시스템 테스트 장치
WO2012124841A1 (ko) * 2011-03-15 2012-09-20 현대자동차 주식회사 통신 테스트 장치 및 방법
US8312433B2 (en) 2008-12-15 2012-11-13 International Business Machines Corporation Operating system aided code coverage
WO2012153879A1 (ko) * 2011-05-09 2012-11-15 현대자동차 주식회사 예외처리 테스트 장치 및 방법
US8607094B2 (en) 2009-09-29 2013-12-10 Hyundai Motor Company Operational system test method
WO2016027992A1 (ko) * 2014-08-18 2016-02-25 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312433B2 (en) 2008-12-15 2012-11-13 International Business Machines Corporation Operating system aided code coverage
KR101038397B1 (ko) * 2009-06-19 2011-06-01 강원대학교산학협력단 로봇 소프트웨어 화이트 박스 테스트를 위한 테스트 교호강도 결정 방법 및 자동화 테스트 시스템
US8607094B2 (en) 2009-09-29 2013-12-10 Hyundai Motor Company Operational system test method
WO2012002635A1 (ko) * 2010-06-28 2012-01-05 현대자동차 주식회사 시스템 테스트 장치
KR101459867B1 (ko) * 2010-06-28 2014-11-13 현대자동차주식회사 시스템 테스트 장치
US9354996B2 (en) 2010-06-28 2016-05-31 Hyundai Motor Company System test apparatus
WO2012124841A1 (ko) * 2011-03-15 2012-09-20 현대자동차 주식회사 통신 테스트 장치 및 방법
US9009532B2 (en) 2011-03-15 2015-04-14 Hyundai Motor Company Communication test apparatus and method
WO2012153879A1 (ko) * 2011-05-09 2012-11-15 현대자동차 주식회사 예외처리 테스트 장치 및 방법
CN103003800A (zh) * 2011-05-09 2013-03-27 现代自动车株式会社 异常处理测试装置和其方法
KR101459869B1 (ko) * 2011-05-09 2014-11-07 현대자동차주식회사 예외처리 테스트 장치 및 방법
US9047401B2 (en) 2011-05-09 2015-06-02 Hyundai Motor Company Exception handling test apparatus and method
WO2016027992A1 (ko) * 2014-08-18 2016-02-25 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
KR20160021585A (ko) * 2014-08-18 2016-02-26 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Similar Documents

Publication Publication Date Title
CN110059009B (zh) 用于测试代码文件的方法和装置
US11157640B2 (en) Protecting sensitive data in software products and in generating core dumps
Reps et al. Speeding up slicing
US6539501B1 (en) Method, system, and program for logging statements to monitor execution of a program
US20090248721A1 (en) System And Method for Stack Crawl Testing and Caching
US20070250820A1 (en) Instruction level execution analysis for debugging software
KR20070087400A (ko) 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템
CN106325970A (zh) 编译方法和编译系统
US20120131559A1 (en) Automatic Program Partition For Targeted Replay
CN100440163C (zh) 对计算机程序进行运行时分析的方法和系统
CN109101237A (zh) 代码的加密编译方法及装置
US20100275185A1 (en) System and Method for High Performance Coverage Analysis
US11030074B2 (en) Code update based on detection of change in runtime code during debugging
US20170161065A1 (en) Generating Code Coverage Data for use with a Computing Device and System
CN104156311A (zh) 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法
US11599445B2 (en) Watcher: precise and fully-automatic on-site failure diagnosis
CN115328796A (zh) 一种用于arm架构的软件漏洞辅助定位方法和系统
US11314624B2 (en) Reducing trace recording overheads with targeted recording via partial snapshots
US20070168742A1 (en) Isolating code modules
CN101452379B (zh) 内存空间的分析方法和装置、检查点的保留方法和装置
US11074155B2 (en) Generating representative microbenchmarks
KR101371400B1 (ko) 테스트 스크립트의 부가정보를 이용한 요구사항 관리 시스템 및 방법
RU2390821C1 (ru) Способ динамической инструментации
JP5016288B2 (ja) 最適化処理方法、及びその言語処理系
CN111159663B (zh) 指令定位方法和装置

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination