KR101438990B1 - 시스템 테스트 방법 - Google Patents

시스템 테스트 방법 Download PDF

Info

Publication number
KR101438990B1
KR101438990B1 KR1020127034454A KR20127034454A KR101438990B1 KR 101438990 B1 KR101438990 B1 KR 101438990B1 KR 1020127034454 A KR1020127034454 A KR 1020127034454A KR 20127034454 A KR20127034454 A KR 20127034454A KR 101438990 B1 KR101438990 B1 KR 101438990B1
Authority
KR
South Korea
Prior art keywords
control block
process control
performance
performance element
usage
Prior art date
Application number
KR1020127034454A
Other languages
English (en)
Other versions
KR20130031860A (ko
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 현대자동차주식회사
Publication of KR20130031860A publication Critical patent/KR20130031860A/ko
Application granted granted Critical
Publication of KR101438990B1 publication Critical patent/KR101438990B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0428Safety, monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for 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
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23283Debugging, breakpoint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Automation & Control Theory (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 프로세스 제어 블록(Process Control Block)의 위치를 식별하는 단계, 프로세스 제어 블록의 위치에 접근하는 단계, 및 프로세스 제어 블록의 성능 요소를 모니터링하는 단계를 포함하는 시스템 테스트 방법을 제공한다.

Description

시스템 테스트 방법{SYSTEM TESTING METHOD}
본 발명은 시스템 테스트 방법에 관한 것이다.
최근 자동차와 같은 기계 산업 분야에서도 전자제어 기술에 대한 관심이 크다. 전자제어 기술의 핵심은 임베디드 소프트웨어이며, 이들 소프트웨어의 품질이 전체 제품의 품질에 큰 영향을 미친다.
종래에도 품질에 도움을 주는 소프트웨어 테스트 기술과 테스트 도구들이 개발되었다. 하지만 임베디드 소프트웨어의 고유한 특징들 때문에, 이들을 그대로 임베디드 소프트웨어 테스트에 적용하기에는 여러가지 문제가 있다.
첫째, 임베디드 소프트웨어는 특정 하드웨어와 기능에 맞춤되어 제작되는 소프트웨어이다. 대부분의 임베디드 소프트웨어는 메모리와 같은 시스템 자원의 여유가 없는 제약적 조건에 최적화되어 동작하도록 설계한다. 따라서 타겟 환경에서 동작하는 임베디드 소프트웨어는 호스트 환경에서 동작하는 일반 소프트웨어와 비교했을 때 시스템 운용 시 자원 제약이 심하다는 문제점이 있다. 둘째, 임베디드 소프트웨어는 메뉴 선택과 같은 사용자 명령에 의한 동작보다 전자적 시그널이나 통신 프로토콜과 같은 다양한 유형의 외부 입력에 의한 동작이 더 많은 비중을 차지한다. 따라서 사용자 명령에 의해 주로 동작하는 종래의 소프트웨어 테스트 기술과 테스트 도구들을 임베디드 소프트웨어 테스트에 그대로 적용하기 어렵다는 문제점이 있다.
셋째, 종래의 소프트웨어 테스트 기술은 성능 테스트 시에 높은 프로세서 사용율이 지속되는 경우에만 성능 병목을 나타내는 증후로 간주한다. 이 경우 중요한 컴포넌트의 프로세서 사용율이 기본 성능 이하로 떨어지는 경우에는 이상 징후로 판단하지 않는다. 따라서 시스템의 성능을 정확하게 테스트할 수 없다는 문제점이 있다.
본 발명은 시스템 운용 시에 필요한 자원을 최소한으로 사용하여 시스템의 운용 환경에 영향을 주지 않으면서 성능 병목과 그 원인 및 위치를 식별하기 위한 데이터를 수집하는 시스템 테스트 방법에 관한 기술과 관련된다.
본 발명은 프로세스 제어 블록(Process Control Block)의 위치를 식별하는 단계, 프로세스 제어 블록의 위치에 접근하는 단계, 및 프로세스 제어 블록의 성능 요소를 모니터링하는 단계를 포함하는 시스템 테스트 방법을 제공한다.
본 발명은 시스템 운용에 필요한 자원을 최소한으로 사용하여 시스템의 운용 환경에 영향을 주지 않으면서 시스템을 테스트할 수 있다는 장점이 있다.
추가적으로, 본 발명은 시스템의 외부로부터 입력되는 데이터를 기반으로 시스템을 테스트할 수 있다는 장점이 있다.
추가적으로, 본 발명은 프로세서의 사용율이 기준 이하로 떨어지는 경우에 대해서도 병목 현상인지 여부를 테스트할 수 있다는 장점이 있다.
도 1은 본 발명에 따른 시스템 테스트 방법을 나타내는 순서도.
도 2는 본 발명에 따른 시스템 테스트 방법을 구현하는 프로그램 코드.
도 3은 본 발명에 따른 시스템 테스트 방법을 실행하는 시스템의 구조를 나타내는 도면.
발명의 실시를 위한 최선의 형태
본 발명의 시스템 테스트 방법은 프로세스 제어 블록(Process Control Block)의 위치를 식별하는 단계, 프로세스 제어 블록의 위치에 접근하는 단계, 및 프로세스 제어 블록의 성능 요소를 모니터링하는 단계를 포함한다.
발명의 실시를 위한 형태
아래에서는 도면을 참고하여, 본 발명의 다양한 실시예를 구체적으로 살펴본다.
본 발명에 따른 시스템 테스트 방법에서, 프로세스 제어 블록(Process Control Block)은 운용 체제가 시스템에 운용되고 있는 프로세스들의 실행 정보를 관리하는 자료 구조를 의미한다.
예를 들어, 프로세스 제어 블록은 시스템에 운용 중인 프로세스들의 최신 실행 정보를 실시간으로 관리하는 커널의 자료 구조를 의미할 수 있다.
본 발명에 따른 시스템 테스트 방법은 시스템의 메모리에 발생한 결함을 발견하기 위해, 프로세스 제어 블록을 통해 메모리와 관련된 함수 테이블을 후킹한다.
특히 본 발명에 따른 시스템 테스트 방법은 프로세스 제어 블록의 데이터 중 성능 병목과 그 원인을 분석하기 위해 페이지 폴트율과 프로세서 사용율과 같은 시스템 실행 정보들을 해킹하여 시스템 성능을 분석할 수 있다.
프로세스 제어 블록 해킹은 성능 분석에 필요한 데이터 수집을 프로세스 제어 블록 한 곳으로 집중시킴으로써 테스트로 인한 시스템 성능 저하를 최소화할 수 있다.
또한 본 발명은 위와 같은 시스템 성능 저하를 최소화하면서, 동시에 시스템 운용 환경에서의 성능 테스트 요구사항을 만족시킬 수 있다.
예를 들어, 본 발명에 따른 시스템 테스트 방법은 다음과 같은 조건을 가정하고 수행될 수 있다.
[시스템 테스트 조건]
1. 테스트 범위: 전체 시스템내의 모든 하드웨어와 소프트웨어 컴포넌트들이 동작하는 상황의 시스템에 대한 성능 테스트.
2. 테스트 방식: 시스템 실행 방식을 보장하기 위해 re-compile, re-link, re-execute 되지 않는 방식으로 런-타임 테스트.
3. 테스트 대상: 디버깅 정보와 같은 부가적인 코드를 포함하지 않는 테스트 대상 소프트웨어의 원본 소스/이진 코드 변경 없이 시스템에 로딩된 바이너리를 대상으로 한 테스트.
4. 성능 데이터: 성능 병목의 원인으로 프로세서뿐만 아니라 메모리, I/O, 네트워크 자원까지 고려할 수 있는 성능 데이터 수집.
5. 병목 위치 추적: 성능 병목의 위치로 함수와 같이 소스 레벨 분석이 가능한 위치 데이터 수집.
6. 하드웨어 독립성: 테스트를 위한 별도의 하드웨어 추가나 의존성 없이 시스템 운용 환경과 동일한 하드웨어 조건에서의 테스트.
7. 소프트웨어 독립성: 테스트를 위해 특별히 제작된 커널 (Instrumented Kernel)이나 가상머신을 사용하지 않는 시스템 운용 환경과 동일한 소프트웨어 조건에서의 테스트.
8. 성능 지연율: 실시간 동작을 보장하기 위해 테스트로 인한 시스템 성능 지연 율 최소화.
9. 코드 추가율: 제한된 자원 내에서 동작하기 위해 테스트로 인한 코드 추가 율 최소화.
하지만 이러한 조건은 시스템 운용 환경에 따라 얼마든지 변화할 수 있으며, 본 발명은 이러한 시스템 운용 환경에 제한되지 않고 적용될 수 있다.
프로세스 제어 블록은 시스템에 운용되는 프로세스의 실행 정보를 담고 있는 커널 자료구조이다. 프로세스 제어 블록에는 성능 병목을 판단할 프로세서 사용량과 여유 메모리 사이즈와 같은 성능 요소들도 포함되어 있으며, 커널에 의해 이들 값은 항상 가장 최근 값으로 유지된다.
본 발명에 따른 시스템 테스트 방법은 이 값들을 해킹하는 에이전트 개발을 위한 성능 분석에 사용될 수 있다. 아래에서는 성능 병목의 원인을 분석하기 위해 필요한 성능 요소 및 연관된 프로세스 제어 블록 구조를 살펴본다.
성능은 시스템이나 컴포넌트들이 주어진 시스템의 제약 조건 내에서 기능을 수행하는 정도를 의미한다. 성능 테스트는 특정 성능 요구사항을 시스템이 만족하는 지에 관한 평가이다.
이러한 성능 테스트를 통해 성능 병목과 그 원인을 분석하여 이를 해결함으로 시스템의 성능을 개선할 수 있다.
시스템의 성능 병목은 메모리, I/O 디바이스, 네트워크와 같은 제한된 자원들에 대한 경쟁으로 시스템의 성능이 저하되는 현상이다. 시스템 성능 병목의 원인은 자원 부족, 공유자원 경합, 자원 독점, 자원의 잘못된 구성 혹은 자원의 잘못된 동작과 같이 다양하다.
먼저 메모리가 원인이 되는 성능 병목은 사용 가능한 메모리가 부족할 때에 발생할 수 있으며, 메모리 부족 증후를 식별할 수 있는 핵심적인 메모리 성능 요소로 페이지폴트와 메모리 사용량이 있다.
본 발명에 따른 시스템 테스트 방법은 다양한 성능 병목들을 식별할 수 있다.
먼저 본 발명에 따른 시스템 테스트 방법은 페이지폴트를 기준으로 메모리 병목을 판단할 수 있다.
예를 들어, 페이지 폴트가 높으면 메모리 병목일 수 있다. 페이지폴트란 프로그램이 자신의 주소 공간에는 존재하지만 시스템의 메모리에는 현재 없는 데이터나 코드에 접근 시도하였을 경우 발생하는 현상이다. 페이지폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서 마치 페이지폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하도록 한다. 운영체제의 페이지폴트에 대한 예외처리 때문에 어플리케이션의 처리시간은 지연되며, 전체 시스템 성능에 영향을 준다.
또한 본 발명에 따른 시스템 테스트 방법은 메모리 사용량을 통해 성능 병목을 식별할 수 있다. 시스템의 메모리는 물리 메모리 사용량, 가상 메모리 사용량이 있고, 프로세스 별로 힙 메모리 사용량으로 구분할 수 있다. 본 발명에 따른 시스템 테스트 방법은 이러한 메모리 사용량들의 합을 기준으로 성능 병목을 판단한다.
또한 본 발명에 따른 시스템 테스트 방법은 프로세서 사용량 (혹은 CPU 사용량)을 통해 성능 병목을 식별할 수 있다.
예를 들어, 본 발명에 따른 시스템 테스트 방법은 프로세서 사용량이 높게 유지되면서 여유 메모리가 있는 경우는 CPU에 병목이 있다고 판단할 수 있다. 반면 프로세서 사용량이 높고 메모리도 고갈되었다면 성능 문제는 CPU보다 메모리 병목으로 판단할 수 있다.
또한 본 발명에 따른 시스템 테스트 방법은 프로세스 사용량 (Processor Usage)에 따라 성능 병목을 식별할 수 있다. 프로세스 사용량은 시스템의 실행 시간으로 전체 CPU 사용량에서 대기 시간(Idle Time)을 제외한 시간을 의미한다.
또한 본 발명에 따른 시스템 테스트 방법은 사용 시간 (User Time)에 따라 성능 병목을 판단할 수 있다. 사용 시간은 실행이 사용자 공간에서 머무른 시간을 의미하며, 곧 어플리케이션의 실행 시간을 의미한다.
또한 본 발명에 따른 시스템 테스트 방법은 커널 사용 시간 (Kernel Time)에 따라 성능 병목을 판단할 수 있다. 커널 사용 시간은 실행이 커널 공간에서 머무른 시간으로, 커널의 서비스 처리 시간을 의미한다.
프로세스 제어 블록은 런-타임에 프로세스들을 제어하기 위한 목적으로 운영체제 커널이 관리하는 자료구조이다. 일반적으로 프로세스 제어 블록에는 프로세스 식별자, 레지스터 컨텍스트, 프로세스의 주소 공간, 프로세스의 메모리 사용량, 공유 함수 목록, 프로세스가 소유하는 자원들, 프로세스의 우선순위와 상태 같은 실행 정보들이 저장되어있다.
도 1은 본 발명에 따른 시스템 테스트 방법을 나타내는 순서도이다.
도 2는 본 발명에 따른 시스템 테스트 방법을 구현하는 프로그램 코드이다.
도 1을 참고하면, 본 발명에 따른 시스템 테스트 방법은 프로세스 제어 블록의 위치를 식별하는 단계(S100), 프로세스 제어 블록에 접근하는 단계(S200) 및 프로세스 제어 블록의 성능 요소를 모니터하는 단계(S300)를 포함한다.
프로세스 제어 블록의 위치를 식별하는 단계(S100)에서, 프로세스가 생성되고 사라질 때 그 프로세스 제어 블록도 함께 생성되고 사라지기 때문에 프로세스 제어 블록이 저장되는 위치는 결정되어 있지 않다.
그러나 프로세서(예를 들어, CPU)를 점유하는 현행 프로세스 (Current Process)에 관한 프로세스 제어 블록의 base address는 특정 메모리 공간에 관리되거나, 경우에 따라 미리 고정된 주소로 관리되기 때문에 현행 프로세스의 프로세스 제어 블록 정보를 알 수 있다.
예를 들어, 도 2의 프로그램 코드의 line 7 에서 처럼 현행 프로세스의 프로세스 제어 블록 base address를 스택 포인터로 계산하고, line 31처럼 모든 프로세스의 프로세스 제어 블록으로 접근할 수 있다.
프로세스 제어 블록의 위치에 접근하는 단계(S200)에서, 프로세스 제어 블록은 커널 메모리 공간에 존재한다.
이 경우 커널 공간에는 보안(Security) 차원에서 접근을 허용하지 않을 수 있다. 이처럼 커널 공간에 대한 접근이 차단될 때, 아래 프로그램 코드처럼 pseudo codes를 커널 주소 공간을 공유할 수 있도록 가상 드라이버 형태로 구현하여 커널 메모리 공간에 존재하는 프로세스 제어 블록에 접근할 수 있다.
프로그램 제어 블록의 성능 요소를 모니터하는 단계(S300)에서, 도 2의 프로그램 코드의 line 61와 line 65처럼 timer-interrupt를 사용하며 지정된 시간 간격 (e.g. 1sec, 100msec) 마다 성능 데이터를 측정할 수 있다.
또한 본 발명에 따른 시스템 방법에서는 시스템 성능을 시스템 단위뿐만 아니라 프로세스와 쓰레드의 단위로까지 분석하기 위해 도 2의 프로그램 코드의 line 31과 line 33처럼 프로세스 제어 블록의 프로세스와 쓰레드 리스트들을 순환하면서 성능 요소를 측정할 수 있다.
이 경우 시스템 성능 병목이 발생하는 위치를 자세히 추적하기 위해 쓰레드 별로 콜스택(Callstack) 정보를 저장한다. 각 모니터링 단위 별 측정하는 성능 요소는 다음과 같다.
프로세스 제어 블록의 성능 요소는 프로세서 사용량, 메모리 사용량, 페이지 폴트(Page Fault) 중 하나 이상을 포함할 수 있다.
프로세스 제어 블록의 프로세스에 대한 성능 요소는 아이디(ID), 프로세스의 상태, 프로세스의 우선 순위, 힙(Heap) 사용량, 프로세스의 동작 시간, 사용 시간, 커널 사용 시간 중 하나 이상을 포함할 수 있다.
프로세스 제어 블록의 쓰레드에 대한 성능 요소는 아이디, 운영 상태(Run State), 기본 우선 순위, 현재 우선 순위, 사용 시간, 커널 사용 시간, 콜스택 정보 중 하나 이상을 포함할 수 있다.
도 3은 본 발명에 따른 시스템 테스트 방법을 실행하는 시스템의 구조를 나타낸다.
도 3을 참고하면, 본 발명에 따른 시스템 테스트 방법을 실행하는 시스템은 에이전트부(120) 및 테스트 관리부(210)를 포함한다.
에이전트부(120)는 테스트의 대상이 되는 타켓 시스템에 포함되어, 성능 데이터를 측정하는 역할을 수행한다. 에이전트부(120)는 도 1에 도시된 알고리즘을 실행한다.
테스트 관리부(210)는 PC (Personal Computer)와 같은 호스트 시스템(200)에 포함되어, 에이전트부(120) 로부터 수집된 성능 데이터를 분석하여 성능 병목을 검출하고 테스트 커버리지를 분석한다.
구체적으로, 에이전트부(120)는 운용 환경에 배치된 타겟 시스템에 함께 탑재되어 사용자의 테스트 시작과 종료 명령에 따라 시스템이 운영되면서 주기적으로 시스템 성능과 관련된 데이터를 측정하는 역할을 수행한다.
예를 들어, 에이전트부(120)는 PerfAgent.dll 및 PerfROBO.exe를 포함할 수 있다.
PerfAgent.dll은 도 1에 도시된 알고리즘을 구현하는 가상의 커널 디바이스 드라이버로 성능 테스트를 위해 커널의 프로세스 제어 블록 정보를 해킹한다.
PerfROBO.exe는 사용자의 테스트 시작과 종료 명령에 의해 PerfAgent.dll의 활성화 여부를 제어하는 테스트 서버 역할을 수행한다.
테스트 시작 명령에 의해 PerfAgent.dll이 활성화되면, 타이머 설정을 통해 시스템 성능 모니터링 모듈을 실행시키고 사용자 요구에 의해 테스트를 종료할 때에도 설정된 타이머를 종료시킴으로써 테스트를 종료한다.
한편 테스트 관리부(210)는 수집된 성능 데이터를 지정된 저장 매체에 저장할 수 있다. 테스트 관리부(210)는 호스트 시스템(200) 로그 파일을 분석하여 운영 타임에 발생한 성능 병목을 검출하는 역할을 수행한다.
예를 들어, 테스트 관리부(210)가 성능 데이터를 저장 매체에 이진 코드로 저장한다면, 테스트 관리부(210)는 테스트 대상에 대한 이진 실행 코드와 수집된 프로파일링 데이터를 입력으로 하며, 테스트 커버리지와 성능 정보를 출력할 때 콜-스택정보를 기반으로 어느 함수 위치에서 문제가 발생하였는지의 위치 정보를 함께 디스플레이할 수 있다.
본 발명에 따른 시스템 테스트 방법에서, 시스템의 성능을 모니터링하는 다양한 방법이 사용 가능하다.
먼저 커널에 분석코드를 삽입하는 방법이 사용될 수 있다. 이 기술은 커널에 분석코드를 정적으로 혹은 동적으로 삽입시킨다.
동적으로 삽입하는 기술로는 런-타임에 커널 코드에 분석 코드를 삽입할 수 있으며, 이 경우 시스템을 재부팅하지 않으면서 성능 분석에 필요한 데이터를 수집하는 코드를 삽입할 수 있다.
정적으로 삽입하는 기술은 미리 제작된 커널을 사용한다.
예를 들어, 커널 내부에 중요한 시스템 성능 요소를 모니터링하는 분석코드를 심어둘 수 있다. 성능 모니터를 할 경우, 커널 내부에 미리 삽입되어 있는 분석코드를 통해 성능 데이터를 전송받는다. 그 결과 성능 모니터링을 할 때, 프로세서 사용량, 메모리 사용량을 포함하여 굉장히 다양한 시스템 성능 요소의 측정이 가능하다.
추가적으로, 성능 모니터링 기술로 시뮬레이터를 이용하는 방법이 사용될 수 있다. 이 방식은 개발 단계 초기의 시스템의 성능을 살펴보는 경우에 유용하다.
추가적으로, 성능 모니터링 기술로 하드웨어를 사용할 수도 있다. 하드웨어 성능 요소들은 특별히 제작된 레지스터 집합을 의미하며, 소프트웨어 기반 성능 요소에 비해 적은 시스템 오버헤드로 CPU, 캐시, 메모리와 연관된 성능을 모니터링하는 것이 가능하다. 이 방식은 소스코드나 이진코드를 수정하지 않아도 된다.
산업상 이용가능성
본 발명은 시스템 운용에 필요한 자원을 최소한으로 사용하여 시스템의 운용 환경에 영향을 주지 않으면서 시스템을 테스트할 수 있다.

Claims (12)

  1. 프로세스 제어 블록(Process Control Block)의 위치를 식별하는 단계;
    타겟시스템의 에이전트부가 상기 프로세스 제어 블록의 위치에 접근하는 단계; 및
    커널에 분석 코드를 삽입하여 상기 프로세스 제어 블록의 성능 요소를 모니터링하는 단계를 포함하는 시스템 테스트 방법.
  2. 청구항 1에 있어서,
    상기 프로세스 제어 블록은
    커널 메모리 내부에 위치하는 것을 특징으로 하는 시스템 테스트 방법.
  3. 청구항 2에 있어서,
    상기 프로세스 제어 블록의 위치에 접근하는 단계에 있어서,
    가상 드라이버를 사용하여 상기 커널 메모리에 접근하는 것을 특징으로 하는 시스템 테스트 방법.
  4. 청구항 1에 있어서,
    상기 프로세스 제어 블록의 성능 요소를 모니터링하는 단계에 있어서,
    미리 설정된 시간 간격마다 상기 프로세스 제어 블록의 성능 요소를 측정하는 것을 특징으로 하는 시스템 테스트 방법.
  5. 청구항 2에 있어서,
    상기 프로세스 제어 블록의 성능 요소를 모니터링하는 단계에 있어서,
    상기 프로세스 제어 블록의 프로세스 및 쓰레드(Thread)에 대한 성능 요소를 측정하는 것을 특징으로 하는 시스템 테스트 방법.
  6. 청구항 5에 있어서,
    상기 프로세스 제어 블록의 성능 요소는
    프로세서 사용량, 메모리 사용량, 페이지 폴트(Page Fault) 중 하나 이상을 포함하는 것을 특징으로 하는 시스템 테스트 방법.
  7. 청구항 6에 있어서,
    상기 프로세스 제어 블록의 프로세스에 대한 성능 요소는
    아이디(ID), 프로세스의 상태, 프로세스의 우선 순위, 힙(Heap) 사용량, 프로세스의 동작 시간, 사용 시간, 커널 사용 시간 중 하나 이상을 포함하는 것을 특징으로 하는 시스템 테스트 방법.
  8. 청구항 6에 있어서,
    상기 프로세스 제어 블록의 쓰레드에 대한 성능 요소는
    아이디, 운영 상태(Run State), 기본 우선 순위, 현재 우선 순위, 사용 시간, 커널 사용 시간, 콜 스택(Call Stack) 중 하나 이상을 포함하는 것을 특징으로 하는 시스템 테스트 방법.
  9. 청구항 1에 있어서,
    상기 프로세스 제어 블록은
    프로세스의 식별자, 레지스터 컨텍스트(Context), 프로세스의 어드레스, 메모리 사용량, 공유 함수 목록, 프로세스의 자원(Resource), 프로세스의 우선 순위, 프로세스의 상태 중 하나 이상에 대한 정보를 저장하는 것을 특징으로 하는 시스템 테스트 방법.
  10. 삭제
  11. 청구항 1에 있어서,
    상기 프로세스 제어 블록의 성능 요소를 모니터링하는 단계는
    시뮬레이션 프로그램을 사용하여 상기 프로세스 제어 블록의 성능 요소를 모니터링하는 것을 특징으로 하는 시스템 테스트 방법.
  12. 청구항 1에 있어서,
    상기 프로세스 제어 블록의 성능 요소를 모니터링하는 단계는
    레지스터를 포함하는 하드웨어를 사용하여 상기 프로세스 제어 블록의 성능 요소를 모니터링하는 것을 특징으로 하는 시스템 테스트 방법.
KR1020127034454A 2010-09-07 2010-09-07 시스템 테스트 방법 KR101438990B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2010/006068 WO2012033237A1 (ko) 2010-09-07 2010-09-07 시스템 테스트 방법

Publications (2)

Publication Number Publication Date
KR20130031860A KR20130031860A (ko) 2013-03-29
KR101438990B1 true KR101438990B1 (ko) 2014-09-05

Family

ID=45810821

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127034454A KR101438990B1 (ko) 2010-09-07 2010-09-07 시스템 테스트 방법

Country Status (7)

Country Link
US (1) US20130096880A1 (ko)
EP (1) EP2615552A4 (ko)
JP (1) JP2013533553A (ko)
KR (1) KR101438990B1 (ko)
CN (1) CN103109276B (ko)
CA (1) CA2800271A1 (ko)
WO (1) WO2012033237A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2802415C (en) 2010-06-28 2018-02-13 Hyundai Motor Company System test apparatus
JP5678311B2 (ja) * 2011-03-15 2015-03-04 ヒョンダイ モーター カンパニー 通信テスト装置及び方法
CN103748858B (zh) * 2011-06-30 2018-10-26 瑞典爱立信有限公司 灵活的数据通信
US8996919B2 (en) * 2012-03-13 2015-03-31 Invensense, Inc. Method and system providng a self-test on one or more sensors coupled to a device
US9087041B2 (en) * 2012-07-24 2015-07-21 Michael Weir Enterprise test system platform and associated method for interoperable test data management, test development, test libraries and test workflow management and automation
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
CN105468397A (zh) * 2014-09-11 2016-04-06 腾讯科技(深圳)有限公司 软件运行数据处理方法及软件运行数据处理装置
WO2016084150A1 (ja) * 2014-11-26 2016-06-02 株式会社日立製作所 サーバ計算機、計算機システム、及び、方法
CN104850478B (zh) * 2014-12-19 2017-06-06 北汽福田汽车股份有限公司 一种建立待测对象模型的方法及虚拟测试方法
CN106293890B (zh) * 2015-06-09 2019-11-05 阿里巴巴集团控股有限公司 一种基于复杂度的业务处理方法和装置
CN111488290B (zh) * 2020-04-28 2021-01-22 南方电网数字电网研究院有限公司 基于智能电表操作系统的线程测试方法和装置
CN112306803A (zh) * 2020-10-29 2021-02-02 金蝶云科技有限公司 一种性能监控方法及相关设备
CN114968745B (zh) * 2022-06-10 2023-06-16 北京世冠金洋科技发展有限公司 一种处理系统模型的运行信息的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030041612A (ko) * 2001-11-20 2003-05-27 (주)유니트시스템즈 서버 병목을 실시간으로 분석하는 방법
KR20080079343A (ko) * 2006-12-15 2008-09-01 주식회사 케이티프리텔 이동통신망의 미들웨어 서버를 모니터링하는 서버 및 그방법
KR20090001897A (ko) * 2007-05-29 2009-01-09 주식회사 케이티프리텔 턱시도 미들웨어 환경의 모니터링 시스템 및 방법
KR20090081749A (ko) * 2008-01-25 2009-07-29 삼성전자주식회사 응용프로그램의 자원 모니터링 방법 및 그 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10269110A (ja) * 1997-03-26 1998-10-09 Toshiba Corp 計算機システムのハングアップ回避方法並びにこの方法を用いた計算機システム。
US6175916B1 (en) * 1997-05-06 2001-01-16 Microsoft Corporation Common-thread inter-process function calls invoked by jumps to invalid addresses
JP2001318805A (ja) * 2000-05-08 2001-11-16 Nec Corp 組み込みシステムのテスト方法及びテストシステム
US6988263B1 (en) * 2000-07-10 2006-01-17 International Business Machines Corporation Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs
JP4562568B2 (ja) * 2005-03-28 2010-10-13 富士通テン株式会社 異常検出プログラムおよび異常検出方法
EP1962192A1 (en) * 2007-02-21 2008-08-27 Deutsche Telekom AG Method and system for the transparent migration of virtual machine storage
CN101398780B (zh) * 2007-09-27 2011-08-24 国际商业机器公司 可基于进程定制调试器的即时调试的方法和系统
CA2802415C (en) * 2010-06-28 2018-02-13 Hyundai Motor Company System test apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030041612A (ko) * 2001-11-20 2003-05-27 (주)유니트시스템즈 서버 병목을 실시간으로 분석하는 방법
KR20080079343A (ko) * 2006-12-15 2008-09-01 주식회사 케이티프리텔 이동통신망의 미들웨어 서버를 모니터링하는 서버 및 그방법
KR20090001897A (ko) * 2007-05-29 2009-01-09 주식회사 케이티프리텔 턱시도 미들웨어 환경의 모니터링 시스템 및 방법
KR20090081749A (ko) * 2008-01-25 2009-07-29 삼성전자주식회사 응용프로그램의 자원 모니터링 방법 및 그 장치

Also Published As

Publication number Publication date
JP2013533553A (ja) 2013-08-22
CN103109276A (zh) 2013-05-15
CA2800271A1 (en) 2012-03-15
KR20130031860A (ko) 2013-03-29
EP2615552A1 (en) 2013-07-17
US20130096880A1 (en) 2013-04-18
WO2012033237A1 (ko) 2012-03-15
CN103109276B (zh) 2016-01-20
EP2615552A4 (en) 2014-08-06

Similar Documents

Publication Publication Date Title
KR101438990B1 (ko) 시스템 테스트 방법
US9032254B2 (en) Real time monitoring of computer for determining speed and energy consumption of various processes
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
EP2442230B1 (en) Two pass automated application instrumentation
US7895483B2 (en) Software memory leak analysis using memory isolation
US6959262B2 (en) Diagnostic monitor for use with an operating system and methods therefor
US20130159977A1 (en) Open kernel trace aggregation
Gu et al. Error Sensitivity of the Linux Kernel Executing on PowerPC G4 and Pentium 4 Processors.
US20030135720A1 (en) Method and system using hardware assistance for instruction tracing with secondary set of interruption resources
US20080276129A1 (en) Software tracing
JP2004259258A (ja) 改良された診断実行器およびその方法
CN111026601A (zh) Java应用系统的监控方法、装置、电子设备及存储介质
US10324784B2 (en) Mitigating crashes of an application server executing a monitoring agent
US8307246B2 (en) Real time monitoring of computer for determining speed of various processes
US20080127118A1 (en) Method and system for dynamic patching of software
Seo et al. A profiling method by PCB hooking and its application for memory fault detection in embedded system operational test
US8312433B2 (en) Operating system aided code coverage
Zheng et al. Vapro: Performance variance detection and diagnosis for production-run parallel applications
Seo et al. Lightweight embedded software performance analysis method by kernel hack and its industrial field study
US20060230196A1 (en) Monitoring system and method using system management interrupt
Zhao et al. Software maintenance optimization based on Stackelberg game methods
JP5832408B2 (ja) 仮想計算機システム及びその制御方法
Iyer et al. Benchmarking the Operating System against Faults Impacting Operating System Functions
Walcott-Justice Exploiting Hardware Monitoring in Software Engineering
Nankaku et al. A Dynamic Control Mechanism of Interrupt Stack Overflow on Real‐Time Embedded Monitor (REMON)

Legal Events

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

Payment date: 20180829

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190827

Year of fee payment: 6