KR101091457B1 - Online system test method - Google Patents

Online system test method Download PDF

Info

Publication number
KR101091457B1
KR101091457B1 KR1020090092272A KR20090092272A KR101091457B1 KR 101091457 B1 KR101091457 B1 KR 101091457B1 KR 1020090092272 A KR1020090092272 A KR 1020090092272A KR 20090092272 A KR20090092272 A KR 20090092272A KR 101091457 B1 KR101091457 B1 KR 101091457B1
Authority
KR
South Korea
Prior art keywords
test
hooking
information
defining
location
Prior art date
Application number
KR1020090092272A
Other languages
Korean (ko)
Other versions
KR20110034825A (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 KR1020090092272A priority Critical patent/KR101091457B1/en
Priority to US12/838,874 priority patent/US8607094B2/en
Publication of KR20110034825A publication Critical patent/KR20110034825A/en
Application granted granted Critical
Publication of KR101091457B1 publication Critical patent/KR101091457B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing

Landscapes

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

Abstract

본 발명은 후킹 기술과 프로파일링 개념을 온라인 시스템 테스트에 적용하여 자원 오버헤드를 최소화한 시스템 테스트와 결함 원인과 위치 식별을 위한 테스트 정보 수집을 동시에 하기 위한 온라인 시스템 테스트 방법과 관련된다. 구체적으로, 본 발명은 결함 모델을 정의하는 단계, 테스트 에이전트를 삽입하는 단계, 테스트 위치를 후킹하는 단계, 테스트 정보를 수집하는 단계, 및 테스트 에이전트를 제거하는 단계를 포함하는 온라인 시스템 테스트 방법을 개시한다.The present invention relates to an on-line system test method for applying a hooking technique and a profiling concept to an on-line system test to simultaneously perform a system test that minimizes resource overhead and collect test information for identifying a cause and location of a defect. Specifically, the present invention discloses an online system test method comprising defining a defect model, inserting a test agent, hooking a test location, collecting test information, and removing the test agent. do.

Description

온라인 시스템 테스트 방법 {ONLINE SYSTEM TEST METHOD}Online system test method {ONLINE SYSTEM TEST METHOD}

본 발명은 온라인 시스템을 테스트하는 방법과 관련된다.The present invention relates to a method of testing an online system.

최근 IT가 기존 전통 산업에 접목되는 'IT 융합'이 각광받고 있으며, 의료-IT, 자동차-IT, 항공-IT, 건설-IT와 같이 다양한 산업 분야에서 경쟁력 강화의 해결사로 IT 융합을 추진하고 있다. 일찍이 의료 분야의 IT 접목은 수술 시 의료사고를 최소화하기 위해 시작되었으며, 신속 정확한 영상 정보를 제공하고, 정밀한 수술은 로봇이 대신하는 '원격로봇 영상유도시스템' 연구가 많은 결실을 보이고 있다. 자동차 분야의 경우도 '텔레매틱스 (telematics), 내비게이션 및 위치 기반 서비스 (LBS: Location Based Service), 차량용 인터페이스 (HMI: Human Machine Interface)'를 중심으로 지능형 자동차 개발을 위해 IT 융합을 시도하고 있다.Recently, 'IT convergence', in which IT is applied to existing traditional industries, has been in the spotlight, and IT convergence is being promoted as a solution for strengthening competitiveness in various industries such as medical-IT, automotive-IT, aviation-IT, and construction-IT. In the early days, the medical field's IT grafting began to minimize medical accidents during surgery, and it provides rapid and accurate image information, and precise surgery has shown much fruit in research of 'remote robot image guidance system' replaced by robots. The automotive sector is also attempting to converge IT for the development of intelligent automobiles, focusing on telematics, navigation and location based services (LBS), and human machine interfaces (HMI).

IT 융합 산업에서의 소프트웨어는, 소프트웨어가 독립적으로 동작하는 것보다 융합되는 시스템의 운영환경에서 상호작용(interaction)하는 상황의 동작이 무엇보다 중요해진다. 또한, 소프트웨어 자체만으로 동작을 확인할 수 있는 부분이 상대적으로 제한되기 때문에 테스트를 위한 가상 데이터가 아닌, 시스템이 실제 운영되면서 얻게 되는 실제 데이터(live environment with real data)를 입력으로 한 동작이 매우 중요하며, 온라인 운영 타임(online operation time)에서의 시스템 테스트가 매우 중요한 이슈이다. 특히 온라인 운영 타임에선 오랜 기간 동안 시스템을 운영(런)하는 과정에서 발생하는 잠재 결함이나 시스템 다운을 야기시키는 결함을 발견할 수 있는 테스트가 요구된다. In the IT convergence industry, it is more important than the operation of the software in the operating environment of the fused system rather than the software running independently. In addition, since the part that can confirm the operation by the software itself is relatively limited, the operation by inputting the live environment with real data, which is obtained as the system is actually operated, is not the virtual data for the test. In addition, system testing at online operation time is a very important issue. In particular, online operation time requires testing to find potential defects that occur during the long run of the system or defects that cause the system to crash.

종래 기술에 따른 시스템 테스트 방법의 하나로 블랙박스 테스트가 있다. 블랙박스 테스트는 시스템의 사용 시나리오를 테스트케이스로 시스템이 요구사항에 맞춰 올바르게 동작하는 지를 확인하는 방식으로 이루어진다. One of the prior art system test methods is a black box test. Black box testing is done by using the system's usage scenario as a test case to verify that the system is operating correctly according to requirements.

하지만 블랙박스 테스트는 발견된 결함의 발생 위치와 원인 식별이 어렵다는 문제점이 있다. However, the black box test has a problem that it is difficult to identify the location and cause of the found defect.

대부분의 산업 현장에선 짧은 제품 주기와 시장 선점을 위한 짧은 개발 일정으로 인해 단계적으로 면밀한 테스트를 하기보다는 개발 후반에 강력한 시스템 테스트를 통해 품질을 안정시키는 경향이 있다. 이러한 테스트 경향은 시스템을 구성하는 소프트웨어 각각을 별도로 독립적으로 테스트하려면 연결되는 상대 컴포넌트를 대체하기 위한 장비를 갖추어야 하는 등 테스트 자원과 비용이 많이 필요하기 때문이다. In most industrial sites, short product cycles and short development schedules to preoccupy the market tend to stabilize quality through robust system testing later in development rather than step-by-step testing. This test trend is due to the cost of testing resources and costs, such as the need to equip each of the software constituting the system independently and independently with the replacement of the connected partner components.

이렇듯 개발 후반부에 집중된 테스트는 시스템을 구성하는 모든 계층에 걸쳐 결함이 포함되어 있을 수밖에 없으며, 블랙박스 테스트로는 결함의 원인 파악과 위치에 대한 식별이 어려워져 테스트 기간이 늘어남으로써 결국 개발 비용이 증가하는 문제점이 있다.In the late stages of development, tests focused on defects must be included in all layers of the system, and the black box test makes it difficult to identify the cause and location of the defects, which increases the test period, thereby increasing the development cost. There is a problem.

종래 기술에 따른 시스템 테스트 정보를 얻는 방법으로 디버거를 이용하는 방법이 있다.There is a method using a debugger as a method for obtaining system test information according to the prior art.

하지만 디버거를 이용하는 방법은 실제 시스템이 운용되는 환경에서 테스트를 수행해야 하는 경우, 디버거 사용이 쉽지 않고, 실시간 시스템과 같이 타이밍에 민감한(time-critical) 특성을 갖는 경우, 디버거의 오버헤드 때문에 시스템이 제대로 동작하지 않을 수 있다는 문제점이 있다.However, the debugger is not easy to use when you need to perform tests in an actual system environment, and when the time-critical characteristics of a real-time system are used, the debugger overhead causes the system to fail. The problem is that it may not work properly.

종래 기술에 따른 시스템 테스트 정보를 얻는 다른 방법으로 대상물에 테스트 코드를 삽입(instrument)하는 방법이 있다.Another method of obtaining system test information according to the related art is to insert test code into an object.

예를 들어, 타이머 루틴에 CPU나 메모리 사용량을 측정하는 코드를 삽입하여 주기적으로 성능을 프로파일링하거나, API 테스트를 위하여 함수 호출 시 파라메터를 모니터링하는 코드를 삽입하는 것을 말한다. For example, inserting code that measures CPU or memory usage into a timer routine to profile performance periodically, or insert code that monitors parameters when calling a function for API testing.

하지만 대상물에 테스트 코드를 삽입하는 방법은 추가 코드로 인한 메모리 공간 오버헤드(space-overhead)와 해당 코드 수행으로 인한 성능 오버헤드(performance-overhead)와 같이 여전히 온라인 운영 타임을 해치는 문제점이 있다.However, the method of inserting test code into an object still has problems such as memory space overhead due to additional code and performance overhead due to the execution of the code.

상기 문제점을 해결하기 위하여, 본 발명은 운영체제의 프로세스 관리 방식에 후킹 기술을 도입하고, 시스템 상태 정보 수집에 사용되는 프로파일링 기술을 접목하여, 시스템의 실시간 동작을 최대한 보장하고, 시스템에 운영되는 모든 프로그램(프로세스)에 대한 동적 상황을 테스트하며, 결함 원인과 위치 식별을 위한 테스트 정보도 획득하는 새로운 온라인 시스템 테스트 방법을 개시한다.In order to solve the above problems, the present invention introduces a hooking technique to the process management method of the operating system, by incorporating a profiling technique used to collect system state information, to ensure the real-time operation of the system as much as possible, A new on-line system test method is disclosed that tests the dynamic situation of a program (process) and also obtains test information for identifying the cause and location of the defect.

본 발명은 결함 모델을 정의하는 단계; 테스트 에이전트를 삽입하는 단계;The present invention includes the steps of defining a defect model; Inserting a test agent;

테스트 위치를 후킹하는 단계; 테스트 정보를 수집하는 단계; 및 테스트 에이전트를 제거하는 단계를 포함하는 온라인 시스템 테스트 방법을 개시한다.Hooking a test location; Collecting test information; And removing the test agent.

추가적으로, 본 발명의 상기 결함 모델을 정의하는 단계는 결함 유형에 따라 테스트 위치를 정의하는 단계; 상기 결함 유형에 따라 테스트 정보를 정의하는 단계; 및 상기 테스트 정보를 수집하기 위한 테스트 코드를 생성하는 단계를 포함하는 온라인 시스템 테스트 방법을 개시한다.In addition, the step of defining the defect model of the present invention includes the steps of defining a test position according to a defect type; Defining test information according to the defect type; And generating a test code for collecting the test information.

추가적으로, 본 발명의 상기 테스트 에이전트를 삽입하는 단계는 운영 중인 프로세스에 대한 리스트를 구성하는 단계; 및 상기 리스트를 기초로 상기 테스트 에이전트를 삽입하는 단계를 포함하는 온라인 시스템 테스트 방법을 개시한다.Additionally, inserting the test agent of the present invention comprises: constructing a list for running processes; And inserting the test agent based on the list.

추가적으로, 본 발명의 상기 테스트 위치를 후킹하는 단계는 상기 테스트 위치에 따라 메모리 영역을 식별하는 단계; 상기 식별된 메모리 영역을 상기 테스트 코드로 후킹하는 단계를 포함하는 온라인 시스템 테스트 방법을 개시한다.Additionally, hooking the test location of the present invention may comprise identifying a memory region according to the test location; An online system test method is disclosed that includes hooking the identified memory region with the test code.

추가적으로, 본 발명의 상기 테스트 정보를 수집하는 단계는 프로그램 실행 정보, 프로세스 컨텍스트 정보 및 시스템 상태 정보를 수집하는 것을 특징으로 한다.Additionally, the collecting of the test information of the present invention may include collecting program execution information, process context information, and system state information.

추가적으로, 본 발명의 상기 테스트 에이전트를 제거하는 단계는 상기 테스트 위치를 복구하는 단계; 및 상기 테스트 에이전트를 제거하는 단계를 포함하는 온라인 시스템 테스트 방법을 개시한다.Additionally, removing the test agent of the present invention may include restoring the test location; And removing the test agent.

본 발명에 따른 온라인 시스템 테스트 방법은 시스템이 부팅되어 이미지가 모두 메모리에 올라간 상태에서 특정 메모리 공간을 후킹하기 때문에 실제 시스템이 동작하는 중에 모든 프로세스와 동적 상황에 대한 테스트가 가능하다는 장점이 있다.The online system test method according to the present invention has the advantage that all processes and dynamic situations can be tested while the actual system is operating because the system is booted and hooks a specific memory space while all the images are loaded into the memory.

추가적으로, 종래 기술에 따른 시스템 테스트 방법은 시스템 내에 운영되는 프로세스가 많더라도, 프로세스 관리를 위한 특정 메모리 공간(CPS: Current Process Space)엔 현재 실행 중인 현행 프로세스와 쓰레드에 대한 핵심 실행 정보를 저장하지만, 본 발명에 따른 온라인 시스템 테스트 방법은 운영체제를 매개로, 모든 프로그램 각각에 대한 개별적인 코드 삽입이 아닌 CPS의 프로그램 컨텍스트 정보를 활용한 후킹 기법을 사용함으로써 테스트로 인한 시스템 오버헤드를 최소화할 수 있다는 장점이 있다.In addition, the system test method according to the prior art stores the core execution information on the current process and the thread currently running in a specific memory space (CPS) for process management, even if there are many processes running in the system. The on-line system test method according to the present invention has the advantage of minimizing the system overhead due to the test by using a hooking method utilizing the program context information of the CPS rather than inserting individual code for each program through the operating system. have.

마지막으로, 본 발명에 따른 온라인 시스템 테스트 방법은 시스템의 성능 측 정에 사용되던 프로파일링 기술을 테스트에 적용함으로써 ‘런-타임, 실시간, 자원’ 제약이 심한 온라인 시스템 테스트 시에 결함 발견과 복구를 위한 테스트 정보를 취득할 우 있다는 장점이 있다.Finally, the on-line system test method according to the present invention applies the profiling technique used to measure the performance of the system to the test to detect and repair defects during on-line system testing with severe 'run-time, real-time, resource' constraints. The advantage is that you can get test information.

본 출원에서 사용되는 용어들의 의미는 다음과 같다.The meanings of the terms used in the present application are as follows.

온라인은 시스템의 기능이나 서비스가 실제 운영중인 상태 혹은 시스템에 대한 요청을 즉시 이용할 수 있는 상태를 의미한다. Online means a state in which a function or service of a system is actually operating or a state in which a request for a system is immediately available.

온라인 시스템 테스트는 시스템이 배포 설치되어 실제 운영되는 환경에서의 시스템 테스트를 의미한다. Online system testing means testing the system in an environment in which the system is deployed and installed.

런-타임은 컴파일 타임과 비교되는 '시스템이 실행하는 동안, 즉 시스템이 시작되어 종료되기까지 동작하는 동적 상황'을 의미한다. 런-타임에서의 활동은 단순히 프로그램을 실행하는 것뿐 만 아니라 이와 연관된 컴포넌트들을 로딩하고 통합하는 동적 연동 상황, 멀티쓰레드 오퍼레이션, 프로세스들 혹은 쓰레드들 사이의 공유 자원 관리와 같은 다양한 동적 행위를 포함한다.Run-time refers to a "dynamic situation in which the system runs while it is running, that is, from system startup to shutdown, compared to compile time." Activities at run time include various dynamic behaviors, such as not only running a program, but also dynamic interworking situations that load and integrate related components, multithreaded operations, and managing shared resources between processes or threads. .

실시간은 시스템 혹은 어떤 동작 모드가 외부 프로세스의 요청을 즉시 처리하여 약속된 시간 내에 그 결과를 되돌려 주는 상황을 의미한다. Real-time refers to a situation in which a system or mode of operation immediately processes a request from an external process and returns its results within the promised time.

후킹은 특정 목적을 위해 실행 타임에 시스템의 운영과 제어 방식을 가로채어 원하는 방향으로 변경하는 프로그래밍 기법을 의미한다.Hooking is a programming technique that intercepts the system's operation and control at runtime and changes it in the desired direction for a specific purpose.

후킹 기술은 패치(patch)와 같이 이미 배포된 소프트웨어 제품의 기능 개선이나 사소한 버그를 수정하기 위한 업데이트 프로그램을 만드는데 활용되기도 하 고, 스파이웨어와 같이 사용자 동의없이 다른 사람의 데이터 정보에 접근하여 수집하거나 수정하는 기술로 악용되기도 한다. 후킹 기술을 활용하면 '운영체제 엿보기'가 가능하기 때문에 종종 운영체제와 연관된 디버깅 목적으로 활용되기도 한다Hooking technology can be used to improve the functionality of already deployed software products, such as patches, or to create update programs to fix minor bugs, and to access and collect information from other people without your consent, such as spyware. It can also be abused as a modification technique. It is often used for debugging purposes related to the operating system because it can be used to 'peek operating system' using hooking technology.

후킹은 코드 삽입 기술(code instrumentation)의 일종으로, 코드가 삽입되는 시점에 따라 정적 방식과 동적 방식으로 분류한다. Hooking is a type of code instrumentation, classified into static and dynamic methods depending on when the code is inserted.

정적 방식은 프로그램이 런하기 전, 즉 컴파일 타임에 소스 코드 혹은 바이너리 코드에 정해진 테스트 코드를 추가하는 방식으로 원본 코드를 변형하는 방안이다. 그렇기 때문에, 정적으로 테스트 코드가 삽입된 프로그램은 런-타임에 항상 고정된 방식으로 테스트가 수행되고, 메모리, CPU의 자원 오버헤드가 시스템 라이프 사이클 동안 고정적으로 소비된다. 또한, DLL 연동과 같은 동적 상황을 고려하기 쉽지 않기 때문에 온라인 테스트에 적용하기엔 부족한 방안이다. The static approach is to modify the original code before the program is run, by adding a set of test code to the source or binary code at compile time. As a result, a program with static test code inserted is always tested at run-time in a fixed manner, and the resource overhead of memory and CPU is fixed during the system life cycle. In addition, it is not easy to apply to online test because it is not easy to consider dynamic situation such as DLL linkage.

동적 방식은 테스트 코드를 런-타임에 삽입하는 방식이다. 정적 방안과 비교하여, 런-타임에 파악되는 동적 상황도 테스트할 수 있다는 점에서 온라인 테스트에 더 적합한 방안이라 할 수 있다. The dynamic approach is to insert test code at run time. Compared to the static approach, it is more suitable for online testing in that it can also test dynamic situations that are identified at run-time.

본 발명에 따른 온라인 시스템 테스트 방법은 동적 방식의 후킹을 의미하며, 최종 배포 코드를 대상으로 하기 위해 소스코드가 아닌 시스템에 탑재되어 실제 운영되는 바이너리 코드를 후킹 대상으로 한다. The on-line system test method according to the present invention refers to a dynamic hooking, and targets the binary code that is actually mounted and operated in the system rather than the source code to target the final distribution code.

또한, 온라인 시스템 테스트는 시스템 내에서 운영되는 특정 하나의 프로그램에 대한 테스트가 아닌 시스템에서 동작하는 모든 프로그램에 대한 테스트를 의미하기 때문에, 특정 프로그램에 대한 후킹이 아닌, 시스템에 동작하는 모든 프로 그램들을 관리하고 운영하는 운영체제를 매개로 한 OS-후킹 개념을 적용한다.Also, since online system test means testing all programs that run on the system, not just one program running on the system, all programs running on the system are not hooked. The concept of OS-hooking is applied through the operating and operating system.

프로파일링은 런-타임에 프로그램 행위나 시스템 상태를 측정하는 성능 분석 기법을 의미한다.Profiling is a performance analysis technique that measures program behavior or system state at run time.

프로파일링은 시스템을 최적화시키기 위한 것이므로, 시스템의 성능을 측정하여 성능 병목 구간을 찾는 것이 중요하다. 본 발명은 테스트를 통해 발견된 결함에 대해서 문제가 시스템의 어느 프로그램에서 야기된 것인지, 프로그램 내의 어떤 부분과 연관이 되는지, 결함의 원인이 무엇인지를 밝히기 위한 테스트 정보 수집에 프로파일링을 활용한다.Profiling is to optimize the system, so it is important to measure the system's performance to find performance bottlenecks. The present invention utilizes profiling to collect test information to identify which program in the system the problem is caused by a test, what part of the program is associated with the defect found in the test.

이하에서는 첨부한 도면을 참고하여 본 발명의 실시예를 상세하게 설명한다.Hereinafter, with reference to the accompanying drawings will be described an embodiment of the present invention;

도 1은 본 발명에 따른 온라인 시스템 테스트 방법의 순서도이다.1 is a flowchart of an online system test method according to the present invention.

도 1을 참고하면, 본 발명에 따른 온라인 시스템 테스트 방법을 시작한다.Referring to Fig. 1, an on-line system test method according to the present invention is started.

본 발명에 따른 온라인 시스템 테스트 방법은 먼저 결함 모델을 정의한다(S101). The online system test method according to the present invention first defines a defect model (S101).

결함 모델을 정의한다는 것은 결함에 따라 테스트되어야 할 위치와 결함 발견과 복구를 위한 테스트 정보를 정의한다는 의미이다.Defining a fault model means defining where to test according to the fault and test information for fault detection and repair.

도 2는 본 발명에 따른 온라인 시스템 테스트 방법에서 결함 모델을 정의하는 구체적인 과정을 나타내는 순서도이다.2 is a flowchart illustrating a specific process of defining a defect model in an online system test method according to the present invention.

도 2를 참고하면, 본 발명에 따른 온라인 시스템 테스트 방법은 결함 유형에 따라 테스트 위치를 정의한다(S1011). 2, the online system test method according to the present invention defines a test position according to the defect type (S1011).

다음으로, 본 발명에 따른 온라인 시스템 테스트 방법은 결함 유형에 따라 테스트 정보를 정의한다(S1012).Next, the online system test method according to the present invention defines the test information according to the defect type (S1012).

그리고나서, 본 발명에 따른 온라인 시스템 테스트 방법은 정의된 테스트 위치에 대한 원본 코드 실행과 테스트 정보 수집을 위한 테스트 코드를 생성한다(S1013).Then, the online system test method according to the present invention generates the test code for the execution of the original code and the collection of test information for the defined test location (S1013).

본 발명에 따른 온라인 시스템 테스트 방법의 결함 모델을 정의하는 과정을 종료한다.The process of defining a defect model of the online system test method according to the present invention is terminated.

결함 모델을 정의하고 나면, 테스트 에이전트를 삽입한다(S102).After defining the defect model, the test agent is inserted (S102).

테스트 에이전트를 삽입한다는 것은 테스트 위치 후킹과 테스트 정보 수집 역할을 수행하는 테스트 에이전트를 온라인에 동작하는 모든 프로세스에 삽입(침투)한다는 것을 의미한다.Inserting a test agent means inserting (infiltrating) a test agent that performs test location hooking and test information collection into all processes running online.

도 3은 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 에이전트를 삽입하는 구체적인 과정을 나타내는 순서도이다.3 is a flowchart illustrating a specific process of inserting a test agent in the on-line system test method according to the present invention.

도 3을 참고하면, 본 발명에 따른 온라인 시스템 테스트 방법은 시스템에 운영 중인 프로세스에 대한 리스트를 구성한다(S1021).Referring to FIG. 3, the online system test method according to the present invention constructs a list of processes operating in the system (S1021).

다음으로, 본 발명에 따른 온라인 시스템 테스트 방법은 구성된 프로세스 리스트 정보를 근거로 테스트 에이전트를 삽입한다(S1022).Next, the online system test method according to the present invention inserts a test agent based on the configured process list information (S1022).

본 발명에 따른 온라인 시스템 테스트 방법의 테스트 에이전트를 삽입하는 과정을 종료한다.The process of inserting the test agent of the online system test method according to the present invention is terminated.

테스트 에이전트를 삽입하고 나면, 본 발명에 따른 온라인 시스템 테스트 방법은 테스트 위치를 후킹한다(S103).After inserting the test agent, the online system test method according to the present invention hooks the test position (S103).

테스트 위치를 후킹한다는 것은 삽입된 테스트 에이전트가 테스트 위치로 정의된 곳을 지나갈 때, 원본 코드의 동작을 포함한 테스트 코드가 실행되도록 OS의 CPS (Current Process Space)를 후킹하는 것을 의미한다.Hooking a test location means hooking the OS's Current Process Space (CPS) so that the test code, including the behavior of the original code, is executed when the inserted test agent passes by the test location.

도 4는 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 위치를 후킹하는 구체적인 과정을 나타내는 순서도이다.4 is a flowchart illustrating a specific process of hooking a test position in an on-line system test method according to the present invention.

도 4를 참고하면, 본 발명에 따른 온라인 시스템 테스트 방법은 테스트 위치 별로 CPS에서 후킹할 메모리 영역을 식별한다(S1031).Referring to FIG. 4, the online system test method according to the present invention identifies a memory area to be hooked in the CPS for each test location (S1031).

메모리 영역을 식별한 결과, i) 테스트 위치가 SYSTEM API(Application Process Interface) 함수의 경우, CPS의 APISet 을 후킹 영역으로 식별한다.As a result of identifying the memory area, i) If the test location is a SYSTEM API (Application Process Interface) function, the APISet of the CPS is identified as the hooking area.

ii) 테스트 위치가 DLL(Dynamic Linking Library) EXPORT 함수의 경우, CPS의 IAT (Import Address Table)을 후킹 영역으로 식별한다.ii) In case the test location is DLL (Dynamic Linking Library) EXPORT function, IAT (Import Address Table) of CPS is identified as hooking area.

iii) 그 외의 경우, CPS의 코드 공간을 후킹 영역으로 식별한다.iii) Otherwise, the code space of the CPS is identified as the hooking area.

다음으로, 본 발명에 따른 온라인 시스템 테스트 방법은 식별된 후킹 영역을 테스트 코드로 후킹한다(S1032).Next, the on-line system test method according to the present invention hooks the identified hooking area with the test code (S1032).

본 발명에 따른 온라인 시스템 테스트 방법의 테스트 위치를 후킹하는 과정을 종료한다.The process of hooking the test position of the online system test method according to the present invention is terminated.

테스트 위치를 후킹하고 나면, 본 발명에 따른 온라인 시스템 테스트 방법은 테스트 정보를 수집한다(S104).After hooking the test position, the online system test method according to the present invention collects test information (S104).

테스트 정보를 수집한다는 것은 시스템이 테스트 목적으로 후킹된 위치를 실행할 때, 테스트를 위한 정보를 수집한다는 것을 의미한다.Collecting test information means that when the system executes the hooked location for testing purposes, it collects information for testing.

도 5는 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 정보를 수집하는 구체적인 과정을 나타내는 순서도이다.5 is a flowchart illustrating a specific process of collecting test information in an online system test method according to the present invention.

도 5를 참고하면, 본 발명에 따른 온라인 시스템 테스트 방법은 결함 원인 식별에 필요한 프로그램 실행 정보를 수집한다(S1041).Referring to FIG. 5, the online system test method according to the present invention collects program execution information necessary for identifying a cause of a defect (S1041).

다음으로, 본 발명에 따른 온라인 시스템 테스트 방법은 결함 위치 식별에 필요한 프로세스 컨텍스트 정보를 수집한다(S1042).Next, the on-line system test method according to the present invention collects process context information necessary for defect location identification (S1042).

그리고나서, 본 발명에 따른 온라인 시스템 테스트 방법은 성능 분석에 필요한 시스템 상태 정보를 수집한다(S1043).Then, the online system test method according to the present invention collects system state information necessary for performance analysis (S1043).

본 발명에 따른 온라인 시스템 테스트 방법의 테스트 정보를 수집하는 과정을 종료한다.The process of collecting test information of the online system test method according to the present invention is terminated.

테스트 정보를 수집하고 나면, 본 발명에 따른 온라인 시스템 테스트 방법은 테스트 에이전트를 제거한다(S105).After collecting test information, the online system test method according to the present invention removes the test agent (S105).

테스트 에어전트를 제거한다는 것은 테스트 목적으로 후킹된 위치를 원본 코드로 되돌리고, 테스트 에이전트를 제거한다는 것을 의미한다.Removing the test airagent means returning the hooked position to the original code for testing purposes and removing the test agent.

도 6은 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 에이전트를 제거하는 구체적인 과정을 나타내는 순서도이다.6 is a flowchart illustrating a specific process of removing a test agent in the online system test method according to the present invention.

도 6을 참고하면, 본 발명에 따른 온라인 시스템 테스트 방법은 테스트 코드로 후킹되었던 테스트 위치들을 원본 코드로 복구(unhook)한다(S1051).Referring to FIG. 6, the online system test method according to the present invention unhooks test positions that have been hooked with a test code to an original code (S1051).

다음으로, 본 발명에 따른 온라인 시스템 테스트 방법은 테스트 에이전트가 삽입되었던 프로세스들로부터 테스트 에이전트를 제거한다(S1052).Next, the online system test method according to the present invention removes the test agent from the processes in which the test agent has been inserted (S1052).

본 발명에 따른 온라인 시스템 테스트 방법의 테스트 에이전트를 제거하는 과정을 종료한다. The process of removing the test agent of the online system test method according to the present invention is terminated.

도 1은 본 발명에 따른 온라인 시스템 테스트 방법의 순서도이다.1 is a flowchart of an online system test method according to the present invention.

도 2는 본 발명에 따른 온라인 시스템 테스트 방법에서 결함 모델을 정의하는 구체적인 과정을 나타내는 순서도이다.2 is a flowchart illustrating a specific process of defining a defect model in an online system test method according to the present invention.

도 3은 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 에이전트를 삽입하는 구체적인 과정을 나타내는 순서도이다.3 is a flowchart illustrating a specific process of inserting a test agent in the on-line system test method according to the present invention.

도 4는 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 위치를 후킹하는 구체적인 과정을 나타내는 순서도이다.4 is a flowchart illustrating a specific process of hooking a test position in an on-line system test method according to the present invention.

도 5는 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 정보를 수집하는 구체적인 과정을 나타내는 순서도이다.5 is a flowchart illustrating a specific process of collecting test information in an online system test method according to the present invention.

도 6은 본 발명에 따른 온라인 시스템 테스트 방법에서 테스트 에이전트를 제거하는 구체적인 과정을 나타내는 순서도이다.6 is a flowchart illustrating a specific process of removing a test agent in the online system test method according to the present invention.

Claims (12)

결함 모델을 정의하는 단계;Defining a defect model; CPS(Current Process Space)의 프로그램 컨텍스트 정보를 기초로 현재 동작하고 있는 프로세스에 테스트 에이전트를 삽입하는 단계;Inserting a test agent into a currently running process based on program context information of a current process space (CPS); 테스트 위치를 후킹하는 단계;Hooking a test location; 테스트 정보를 수집하는 단계; 및Collecting test information; And 상기 테스트 에이전트를 상기 프로세스로부터 제거하는 단계를 포함하는 온라인 시스템 테스트 방법.Removing the test agent from the process. 청구항 1에 있어서,The method according to claim 1, 상기 결함 모델을 정의하는 단계는Defining the defect model 결함 유형에 따라 상기 테스트 위치를 정의하는 단계; Defining the test location according to a defect type; 상기 결함 유형에 따라 상기 테스트 정보를 정의하는 단계; 및Defining the test information according to the defect type; And 상기 테스트 정보를 수집하기 위한 테스트 코드를 생성하는 단계를 포함하는 온라인 시스템 테스트 방법.Generating test code for collecting the test information. 청구항 2에 있어서,The method according to claim 2, 상기 테스트 에이전트를 삽입하는 단계는Inserting the test agent 운영 중인 프로세스에 대한 리스트를 구성하는 단계; 및Constructing a list for running processes; And 상기 리스트를 기초로 현재 동작하고 있는 프로세스에 상기 테스트 에이전트를 삽입하는 단계를 포함하는 온라인 시스템 테스트 방법.Inserting the test agent into a currently running process based on the list. 청구항 3에 있어서,The method of claim 3, 상기 테스트 위치를 후킹하는 단계는Hooking the test position 상기 테스트 위치에 따라 메모리 영역을 식별하는 단계;Identifying a memory area according to the test location; 상기 식별된 메모리 영역을 상기 테스트 코드로 후킹하는 단계를 포함하는 온라인 시스템 테스트 방법.Hooking the identified memory area with the test code. 청구항 4에 있어서,The method according to claim 4, 상기 테스트 정보를 수집하는 단계는Collecting the test information 프로그램 실행 정보, 프로세스 컨텍스트 정보 및 시스템 상태 정보를 수집하는 것을 특징으로 하는 온라인 시스템 테스트 방법.An online system test method comprising collecting program execution information, process context information, and system state information. 청구항 5에 있어서,The method according to claim 5, 상기 테스트 에이전트를 상기 프로세스로부터 제거하는 단계는Removing the test agent from the process 상기 테스트 위치를 복구하는 단계; 및Recovering the test location; And 상기 테스트 에이전트를 제거하는 단계를 포함하는 온라인 시스템 테스트 방법.Removing the test agent. 결함 모델을 정의하는 단계;Defining a defect model; CPS(Current Process Space)의 프로그램 컨텍스트 정보를 기초로 현재 동작하고 있는 프로세스에 테스트 에이전트를 삽입하는 단계;Inserting a test agent into a currently running process based on program context information of a current process space (CPS); 테스트 위치에 따라 메모리 영역을 식별하는 단계;Identifying a memory area according to a test location; 상기 식별된 메모리 영역을 후킹하는 단계;Hooking the identified memory region; 테스트 정보를 수집하는 단계; 및Collecting test information; And 상기 테스트 에이전트를 상기 프로세스로부터 제거하는 단계를 포함하는 온라인 시스템 테스트 방법.Removing the test agent from the process. 청구항 7에 있어서,The method of claim 7, 상기 결함 모델을 정의하는 단계는Defining the defect model 결함 유형에 따라 상기 테스트 위치를 정의하는 단계; Defining the test location according to a defect type; 상기 결함 유형에 따라 상기 테스트 정보를 정의하는 단계; 및Defining the test information according to the defect type; And 상기 테스트 정보를 수집하기 위한 테스트 코드를 생성하는 단계를 포함하는 온라인 시스템 테스트 방법.Generating test code for collecting the test information. 청구항 8에 있어서,The method according to claim 8, 상기 식별된 메모리 영역을 후킹하는 단계는Hooking the identified memory area 상기 식별된 메모리 영역을 상기 테스트 코드로 후킹하는 것을 특징으로 하는 온라인 시스템 테스트 방법.Hooking said identified memory region with said test code. 청구항 9에 있어서,The method according to claim 9, 상기 테스트 위치가 SYSTEM API(Application Program Interface) 함수인 경우 CPS(Current Process Space)의 APISet 영역을 후킹하는 것을 특징으로 하는 온 라인 시스템 테스트 방법.And hooking an APISet region of a current process space (CPS) when the test location is a SYSTEM API (Application Program Interface) function. 청구항 9에 있어서,The method according to claim 9, 상기 테스트 위치가 DLL(Dynamic Link Library) EXPORT 함수인 경우 CPS의 IAT(Import Address Table) 영역을 후킹하는 것을 특징으로 하는 온라인 시스템 테스트 방법.And if the test location is a DLL (Dynamic Link Library) EXPORT function, hooking an IAT (Import Address Table) region of the CPS. 청구항 9에 있어서,The method according to claim 9, 상기 테스트 위치가 SYSTEM API 또는 DLL EXPORT 함수가 아닌 경우 CPS의 코드 공간 영역을 후킹하는 것을 특징으로 하는 온라인 시스템 테스트 방법.Hooking a code space region of a CPS when the test location is not a SYSTEM API or a DLL EXPORT function.
KR1020090092272A 2009-09-29 2009-09-29 Online system test method KR101091457B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090092272A KR101091457B1 (en) 2009-09-29 2009-09-29 Online system test method
US12/838,874 US8607094B2 (en) 2009-09-29 2010-07-19 Operational system test method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090092272A KR101091457B1 (en) 2009-09-29 2009-09-29 Online system test method

Publications (2)

Publication Number Publication Date
KR20110034825A KR20110034825A (en) 2011-04-06
KR101091457B1 true KR101091457B1 (en) 2011-12-07

Family

ID=44043264

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090092272A KR101091457B1 (en) 2009-09-29 2009-09-29 Online system test method

Country Status (1)

Country Link
KR (1) KR101091457B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101438979B1 (en) * 2012-12-31 2014-09-11 현대자동차주식회사 Method and system for checking software

Also Published As

Publication number Publication date
KR20110034825A (en) 2011-04-06

Similar Documents

Publication Publication Date Title
US8607094B2 (en) Operational system test method
WO2016177124A1 (en) Method and device for implementing continuous integration test
KR101019210B1 (en) Test Device of Embedded Software using the emulator and Method thereof
US7673180B1 (en) Method and apparatus for dispatching a remote debugging agent in a distributed computing environment
US20100005341A1 (en) Automatic detection and notification of test regression with automatic on-demand capture of profiles for regression analysis
US20110191752A1 (en) Method and System for Debugging of Software on Target Devices
EP3660684A1 (en) Efficient and comprehensive source code fuzzing
CN110580226B (en) Object code coverage rate testing method, system and medium for operating system level program
KR101438990B1 (en) System testing method
CN104077140A (en) Automatic compiling method and compiling device for continuous integration
US10169002B2 (en) Automated and heuristically managed solution to quantify CPU and path length cost of instructions added, changed or removed by a service team
US10831639B2 (en) Method and device for non-intrusively collecting function trace data
CN111026601A (en) Monitoring method and device for Java application system, electronic equipment and storage medium
US20180060224A1 (en) Distinguishing Public and Private Code in Testing Environments
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
US9792402B1 (en) Method and system for debugging a system on chip under test
Soetens et al. Change-based test selection: an empirical evaluation
US8533683B2 (en) Stack walking enhancements using sensorpoints
US20080127118A1 (en) Method and system for dynamic patching of software
CN103186463B (en) Determine the method and system of the test specification of software
US20080127119A1 (en) Method and system for dynamic debugging of software
US20150227448A1 (en) Methods of software performance evaluation by run-time assembly code execution and devices thereof
CN110419031B (en) Code coverage tracking for microcontroller programs
CN114297666A (en) Cloud deployment automation vulnerability mining system based on fuzzy test
US8621438B2 (en) Generating debug information on demand

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: 20141128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171129

Year of fee payment: 7