WO2012002635A1 - 시스템 테스트 장치 - Google Patents

시스템 테스트 장치 Download PDF

Info

Publication number
WO2012002635A1
WO2012002635A1 PCT/KR2011/001803 KR2011001803W WO2012002635A1 WO 2012002635 A1 WO2012002635 A1 WO 2012002635A1 KR 2011001803 W KR2011001803 W KR 2011001803W WO 2012002635 A1 WO2012002635 A1 WO 2012002635A1
Authority
WO
WIPO (PCT)
Prior art keywords
test
information
processes
control block
usage
Prior art date
Application number
PCT/KR2011/001803
Other languages
English (en)
French (fr)
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
Priority claimed from PCT/KR2010/006068 external-priority patent/WO2012033237A1/ko
Application filed by 현대자동차 주식회사, 기아자동차 주식회사, 이화여자대학교 산학협력단 filed Critical 현대자동차 주식회사
Priority to KR1020127034163A priority Critical patent/KR101459867B1/ko
Priority to CN201180032537.0A priority patent/CN102959519B/zh
Priority to US13/704,490 priority patent/US9354996B2/en
Priority to EP11801042.0A priority patent/EP2587379B1/en
Priority to CA2802415A priority patent/CA2802415C/en
Priority to JP2013518216A priority patent/JP5719930B2/ja
Publication of WO2012002635A1 publication Critical patent/WO2012002635A1/ko

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
    • 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
    • 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/3636Software debugging by tracing the execution of the program

Definitions

  • the present invention relates to a system test apparatus, and more particularly, to a system test apparatus for collecting test information about a system in real time using a process control block including execution information of a system.
  • the interaction behavior in the system's operating environment is important. Therefore, it is important to use the live environment with real data, which is obtained from the actual operation of the system, not the virtual data for the test, which is composed solely of software.
  • a system test is required to effectively identify potential defects or operational defects that occur in production.
  • testing each software component of the system independently requires a lot of testing resources and costs, such as the need to equip the replacement component to which it is connected, so you can test in real time all the processes in the system.
  • a memory error test, a performance test, and a communication test between processes included in a system are performed by using a hooking technology, so that a test on a real operating system is possible, and even in a run-time situation of the system. It is an object of the present invention to provide a system test apparatus capable of performing dynamic tests and identifying defects occurring while the system is operating.
  • the present invention provides a system test apparatus, comprising: an insertion module for inserting a test agent into a process control block, a hooking module for hooking a test object with a test code using the test agent when an event related to a test object occurs, the test code And a logging module that collects test information about a process in which an event related to the test object occurs, and a logging module that stores test information collected by the scanning module.
  • the present invention is a system test system, an input device that receives a signal for driving the system, while inserting a test agent into the process control block while the system is operating by the signal input through the input device, A system test apparatus for hooking a test object with a test code using the test agent and collecting test information about a process in which an event related to a test object occurs among the plurality of processes and test information collected by the system test device An analysis device for analyzing.
  • the system since the target code is actually operated, not the source code, the system can be tested while the system is actually running. Thus, you can test memory errors, system performance, and communication between processes while the system is actually running.
  • the system overhead can be minimized and the system can be tested without disturbing the operating system. can do.
  • test information may be collected in real time to check test results.
  • FIG. 1 is a view showing the entire system in which the system test apparatus according to an embodiment of the present invention is used.
  • FIG. 2 is a block diagram showing a system test apparatus according to an embodiment of the present invention.
  • FIG. 3 is a flowchart illustrating a system test method according to an embodiment of the present invention.
  • FIG. 4 is a flowchart illustrating a memory test method, a performance test method, and a communication test method between processes according to an exemplary embodiment of the present invention.
  • the present invention is a test in an environment in which a system is actually operated, and relates to an apparatus and method for testing a system in a dynamic situation from system startup to shutdown.
  • the present invention can use a hooking technique to perform tests on all processes operating in the system.
  • FIG. 1 is a view showing the entire system in which the system test apparatus according to an embodiment of the present invention is used.
  • the entire system includes a system test apparatus 100, a system 200, an input apparatus 300, an analysis apparatus 400, and an output apparatus 500.
  • the system test apparatus 100 is an apparatus for testing communication between a memory defect, a performance of the system 200, or two or more processes included in the system 200 for the system 200.
  • the system test apparatus 100 may be provided independently of the system 200 as illustrated in FIG. 1, or may be implemented in a form included in the system 200.
  • the system 200 is a system to be tested by the system test apparatus 100 and is an embedded system in which various software and hardware are integrated.
  • the system to be tested of the system test apparatus 100 refers to one or more systems including a plurality of processes. Therefore, memory defects or system performance of a plurality of systems may also be tested, and not only communication between a plurality of processes included in one system, but also communication between processes included in different systems may include a system test apparatus ( 100) can be a test target.
  • the system 200 is an embedded system and a computer system in which multi-processes communicate.
  • the system 200 may be an infotainment system, a multimedia system, a wired / wireless network system, or the like.
  • the system 200 is based on the Audio Video Navigation (AVN) function, and is based on Terrestrial Digital Multimedia Broadcasting (TDMB), Transport Protocol Expert Group (TPEG), IPOD, USB, Bluetooth, VR (Voice Recognition), PGS (Parking Guidance System), RDS (Radio Data System), VCDC (Vehicle CDC), DIS (Driver Information System), RSE (Rear Seat Entertainment), HEV (Hybrid Electric Vehicle) ) display, AHU (Air Handling Unit) display, etc.
  • AHU Air Handling Unit
  • the input device 300 is a user input device for driving the system test apparatus 100 and the system 200.
  • the input device 300 may be implemented as a keyboard or a touch screen, and the system 200 is driven according to a signal input through the input device 300.
  • the system test apparatus 100 performs an operation for a system test according to a signal input through the input apparatus 300.
  • the analysis device 400 confirms the test result of the system 200 by analyzing the test information collected by the system test device 100.
  • the system test apparatus 100 may be implemented as one device with the analysis apparatus 400, and may collect test information and analyze the collected test information to check the test result.
  • the output device 500 is a device that outputs the test information collected by the system test device 100 or the test result analyzed by the analysis device 400 as an image or voice.
  • the output device 500 allows the user to check the system test results.
  • FIG. 2 is a block diagram showing a system test apparatus according to an embodiment of the present invention.
  • the system test apparatus 100 includes an insertion module 101, a hooking module 103, a scanning module 105, and a logging module 107.
  • the system 200 connected to the system test apparatus 100 to be a test target is one system including two or more processes.
  • System 200 includes a process control block 201.
  • the process control block 201 has run-time execution information for all processes included in the system 200.
  • the run-time execution information means execution information between all processes while the system 200 is operating.
  • the process control block 201 may include resource usage status, process status, priority, function table, and the like for all processes included in the system 200. More specifically, the process ID, process name, current process, current thread, list of processes running on the system, module list, system page size, available physical memory size, CPU usage, resource list in use, and requested I / O. Device status, open file information, register information, and the like. Therefore, a data structure or apparatus including the above-mentioned information in all systems corresponds to a process control block in the sense of the present invention.
  • the insertion module 101 inserts a test agent into the process control block 201.
  • the test agent may hook a test object with a test code based on information included in the process control block 201 and collect test information.
  • the test location at which the test code is hooked can be defined according to the defect type.
  • the test object hooked with the test code may be a memory area to be tested, a code including performance information of the system, or a code for generating a communication related event.
  • the system 200 before the test agent is inserted into the process control block 201, the system 200 is operating normally, and the system 200 operates normally without being affected by the operation of the system test apparatus 100. .
  • the insertion module 101 may check a process list operating in the system 200 and insert a test agent based on the confirmed process list.
  • the hooking module 103 hooks the test object with the test code using the test agent inserted by the insertion module 101.
  • the test code changes depending on the object to be tested and the defect type. That is, the test code is different according to the memory defect test, the performance test, and the communication test, and the test code may also be changed according to the defect type to be tested in the communication test.
  • the hooking module 103 may change a test position at which the test target is hooked with the test code.
  • the hooking of the test code means that when the test object and the related event occur in the operating system 200, the inserted test agent hooks the process control block of the OS so that the test code including the operation of the original code is executed. Means that. From the information included in the process control block, the hooking module 103 may check whether an event related to the test object occurs.
  • the scanning module 105 collects test information about a process in which an event related to the test object occurs.
  • the test information may include not only information about an event that has occurred previously, but also an event that newly occurs according to a test code hooking.
  • the test information collected depends on the test stage, the purpose of the test, and the type of defect you are testing.
  • the scanning module 105 collects system dynamic state information necessary for analyzing system test results, for example, function parameters and return values, performance measurements, shared resource usage lists, and the like.
  • the logging module 107 stores the test information collected by the scanning module 105 in a storage space.
  • the storage space may be provided in the logging module 107 or may be implemented as a separate device from the logging module 107.
  • the analyzing apparatus 400 of FIG. 1 may analyze test information collected by the scanning module 105 or test information stored by the logging module 107.
  • FIG. 3 is a flowchart illustrating a system test method according to an embodiment of the present invention.
  • a test agent is inserted into the process control block 201 of the system 200 to be tested (S110).
  • the system 200 has been operating normally before the test agent is inserted.
  • test target is hooked into the test code through the inserted test agent (S120).
  • test agent S120
  • the test code may be executed instead of the process in which the event occurs.
  • test information about a process in which an event related to the test target occurs is collected (S130).
  • the collected test information is stored (S140).
  • the test information may be collected only while the test object is hooked with the test code, and after the test object is hooked with the test code, all of the test information may be collected while the system is operating.
  • FIG. 4 is a flowchart illustrating a memory defect test method, a performance test method, and a communication test method between processes according to an exemplary embodiment of the present invention.
  • a defect model is defined (S150).
  • the defect model means a memory location to be tested according to a defect type and test information for defect discovery / recovery.
  • test code may be generated to collect test information while the system 200 is operating normally.
  • test agent is inserted into the process control block 201 of the system 200 (S151).
  • the test agent may be inserted into at least one of a process list running in the system 200.
  • the hooking module 103 identifies a memory area to be hooked based on the information included in the process control block 201 and the defect model, and hooks the test code to the identified memory area (S152).
  • the hooking module 103 identifies the APISet of the process control block 201 as the hooking area. If the test location is a DLL (Dynamic Linking Library) EXPORT function, the hooking module 103 identifies the IAT (Import Address Table) of the process control block 201 as a hooking area. In other cases, the hooking module 103 identifies the code space of the process control block 201 as the hooking area.
  • DLL Dynamic Linking Library
  • the hooking of the test code means that when an event such as writing, reading, or accessing the memory occurs at a memory location that is a test target within the operating system 200, the inserted test agent is connected to the original code. This means hooking the OS's process control blocks so that the test code containing the actions is executed.
  • information about a memory state to be tested is collected (S153). For example, program execution information required for defect cause identification may be collected, process context information necessary for defect location identification may be collected, and system state information required for memory performance analysis may be collected.
  • test information collected in step S153 is stored (S154).
  • the system test method according to the present invention may analyze system performance by hooking system execution information such as page fault rate and processor utilization among data of the process control block 201 to analyze the performance bottleneck and its cause.
  • performance refers to the degree to which a system or components perform a function under the constraints of a given system.
  • Performance testing is an evaluation of whether a system meets specific performance requirements. These performance tests can improve the system's performance by analyzing performance bottlenecks and their causes.
  • a system's performance bottleneck is the performance degradation of the system due to competition for limited resources such as memory, I / O devices, and networks.
  • the causes of system performance bottlenecks can vary, such as lack of resources, shared resource contention, resource monopoly, misconfiguration of resources, or misbehaving resources.
  • a defect model is defined (S160).
  • the defect model means test information indicating a performance bottle position to be tested according to a defect type and a system state to determine the performance bottleneck.
  • test code may be generated to collect test information while the system 200 is operating normally.
  • the insertion module 101 inserts the test agent into the process control block 201 (S161).
  • the insertion module 101 may check a process list operating in the system 200 and insert a test agent based on the confirmed process list. That is, since the base address of the process control block 201 related to the current process is managed in a specific memory space or, in some cases, a fixed address, the base address of the process control block 201 of the current process is stored. Able to know.
  • the hooking module 103 hooks the test code to the test target (S162).
  • the scanning module 105 collects performance information of the system (S163). For example, you can use timer-interrupt and measure performance data at specified time intervals (e.g. 1sec, 100msec). In addition, in order to analyze system performance not only in system units but also in processes and threads, performance information may be measured while circulating the process and thread lists of the process control block 201.
  • the scanning module 105 may store call stack information for each thread, and the performance information measured for each monitoring unit is as follows.
  • the performance information of the process control block 201 may include one or more of processor usage, memory usage, page fault, process context information, process call stack, process heap usage, process status, and process priority.
  • the performance information of the process of the process control block 201 may include one or more of ID, process status, process priority, heap usage, process operation time, usage time, kernel usage time. Can be.
  • the performance information of the thread of the process control block 201 may include one or more of ID, run state, basic priority, current priority, use time, kernel use time, call stack information. .
  • the logging module 107 stores the collected test information in the storage space (S164).
  • the system test method for performing the performance test can determine the memory bottleneck based on the page fault.
  • a high page fault may be a memory bottleneck.
  • Page faults occur when a program tries to access data or code that exists in its address space but does not currently exist in the system's memory.
  • the operating system imports the data into memory so that the program continues to run as if no page fault occurred. Due to the exception handling of the page fault of the operating system, the processing time of the application is delayed and the overall system performance is affected.
  • system test method may identify a performance bottleneck through memory usage.
  • System memory has physical memory usage and virtual memory usage, and can be divided into heap memory usage by each process.
  • the system test method according to the present invention determines the performance bottleneck based on the sum of these memory usages.
  • the system test method according to the present invention may identify a performance bottleneck through processor usage (or CPU usage). For example, the system test method according to the present invention may determine that there is a bottleneck in the CPU when there is free memory while the processor usage is kept high. On the other hand, if the processor usage is high and the memory is exhausted, the performance problem may be more of a memory bottleneck than a CPU.
  • the system test method according to the present invention may identify a performance bottleneck according to processor usage.
  • Process usage is the execution time of the system, which means the total CPU usage minus idle time.
  • the system test method according to the present invention can determine the performance bottleneck according to the user time (User Time).
  • Usage time refers to the time the execution stays in user space, which means the execution time of the application.
  • system test method according to the present invention may determine the performance bottleneck according to the kernel time.
  • Kernel usage time is the time the execution stays in kernel space, which means the service processing time of the kernel.
  • FIG. 4C illustrates a system test method for performing a test on communication between a plurality of processes.
  • the system test apparatus 100 for performing the system method according to FIG. 4C may collect test information for determining whether resource sharing and communication between all processes included in the system 200 are correctly performed.
  • a defect model is defined (S170).
  • the defect model means communication information between processes to be tested according to a defect type and test information for defect detection / recovery.
  • test code may be generated to collect test information while the system 200 is operating normally.
  • the test agent is inserted into the process control block 201 of the system 200 to be tested (S171).
  • the insertion module 101 may select two or more processes from the process list as test targets, and insert a test agent for testing communication between the selected processes.
  • test target is hooked with the test code using the inserted test agent (S172).
  • the hooking of the test target with test code means that when a communication related event occurs between a plurality of processes in the operating system 200, the inserted test agent may execute the test code including the operation of the original code. Hooking the process control block. From the information included in the process control block, the hooking module 103 may identify which type of communication related event occurs between which processes.
  • the communication-related event means a message transfer, shared data transfer, shared memory use, message queue use, synchronization object use, etc. between a plurality of processes.
  • Test code is code for identifying a defect type related to message transfer, message queue, shared memory, or synchronization object between the plurality of processes.
  • the test code includes a first function such as SendMessage () and PostMessage (), and a second function required according to the type of defect to be tested, and the processes included in the system each include the first function. Therefore, when a communication related event occurs between the first process and the second process, the hooking module 103 performs the first function in the first process and the second process by using the inserted communication agent. The test code is hooked by executing the test code instead of the first function of the first process and the second process. The execution of the first function in the first process and the second process is confirmed from the information contained in the process control block.
  • a first function such as SendMessage () and PostMessage ()
  • the processes included in the system each include the first function. Therefore, when a communication related event occurs between the first process and the second process, the hooking module 103 performs the first function in the first process and the second process by using the inserted communication agent.
  • the test code is hooked by executing the test code instead of the first function of
  • the test code may be hooked to only one process corresponding to the transmitting side or the receiving side according to the defect type to be tested.
  • the scanning module 105 collects test information on communication between a plurality of processes in which the communication related event has occurred (S172).
  • the communication between the plurality of processes includes not only communication-related events that have occurred, but also communication-related events that occur according to the test code hooking.
  • the test information collected depends on the test stage, the purpose of the test, and the type of defect you are testing.
  • the scanning module 105 collects system dynamic state information, such as function parameters and return values, performance measures, shared resource usage lists, etc., required for fault determination for communication between a plurality of processes.
  • the test information may include call stack information of the plurality of processes, a communication type transmitted and received between the plurality of processes, a communication ID, communication data, and a delay time generated in the communication between the plurality of processes.
  • the logging module 107 stores the test information collected by the scanning module 105 in the storage space (S173).
  • the storage space may be provided in the logging module 107 or may be implemented as a separate device from the logging module 107.
  • the analyzing apparatus 400 of FIG. 1 may analyze test information collected by the scanning module 105 or test information stored by the logging module 107.
  • the test code used to perform tests for communication between a plurality of processes may be code for identifying defect types associated with message transfers, message queues, shared memory, or synchronization objects between processes.
  • Defect types associated with Message Passing are: Failure to send a message within a specified time (synchronized), message deadlock (synchronized), message processing delay (synchronized), message loss (synchronized), message change (synchronized), and inserted into the message queue. It may be classified as failure (asynchronous), message processing delay (asynchronous), message loss (asynchronous), or message change (asynchronous).
  • Defect types associated with Message Queue can be classified as failed to create a message queue, failed to close a message queue, failed to read from a message queue, or failed to write to a message queue.
  • a defect type associated with Shares Memory may be a failure to create a shared memory.
  • Defect types associated with a synchronization object may be classified as using a synchronization object not created, not using a created synchronization object, or not releasing a used synchronization object.
  • test code changes with each defect type.
  • the system test apparatus 100 may perform test agent insertion, test code hooking, and test information collection without affecting the system 200 in operation.
  • the system test by 100 is performed based on the information contained in the process control block included in the system.
  • the present invention can be embodied as processor readable code on a processor readable recording medium.
  • the processor-readable recording medium includes all kinds of recording devices that store data that can be read by the processor. Examples of a processor-readable recording medium include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, and the like.
  • the processor-readable recording medium can also be distributed over network coupled computer systems so that the processor-readable code is stored and executed in a distributed fashion.
  • the present invention can test memory errors, system performance, and communication between processes while the system is in operation.

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)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

본 발명은 시스템 테스트 장치로서, 본 발명은 시스템 테스트 장치로서, 프로세스 제어블록에 테스트 에이전트를 삽입하는 삽입 모듈, 테스트 대상과 관련된 이벤트가 발생하는 경우, 상기 테스트 에이전트를 이용하여 테스트 대상을 테스트 코드로 후킹하는 후킹 모듈, 상기 테스트 대상이 후킹된 경우, 상기 테스트 대상과 관련된 이벤트가 발생한 프로세스에 대한 테스트 정보를 수집하는 스캐닝 모듈, 및 상기 스캐닝 모듈에 의해 수집된 테스트 정보를 저장하는 로깅 모듈을 포함한다.

Description

시스템 테스트 장치
본 발명은 시스템 테스트 장치에 관한 것으로, 보다 상세하게는 시스템의 실행 정보를 포함하는 프로세스 제어블록을 이용하여 시스템에 대한 테스트 정보를 실시간으로 수집하는 시스템 테스트 장치에 관한 것이다.
다양한 소프트웨어 및 하드웨어를 포함하는 임베디드 시스템에 있어서, 시스템의 운영환경에서 상호작용(interaction)하는 동작이 중요하다. 따라서, 소프트웨어만으로 구성된 테스트를 위한 가상 데이터가 아닌, 시스템이 실제 운영되면서 얻게 되는 실제 데이터(live environment with real data)를 이용하는 동작이 중요하므로, 시스템을 테스트 하고자 하는 경우에도, 실제 운용 데이터를 이용하여 시스템 테스트를 수행해야 잠재적 결함 또는 실제 운용상 발생하는 운용상 결함을 효과적으로 찾아낼 수 있는 방안이 요구된다.
또한, 시스템을 구성하는 소프트웨어 각각을 별도로 독립적으로 테스트하려면, 연결되는 상대 컴포넌트를 대체하기 위한 장비를 갖추어야 하는 등 테스트 자원과 비용이 많이 필요하기 때문에, 시스템에 포함된 모든 프로세스를 실시간으로 테스트할 수 있고, 메모리 공간 오버헤드 또는 해당 코드 수행으로 인한 성능 오버헤드를 최소화하는 테스트 장치가 요구된다.
본 발명은 후킹 기술을 이용하여 시스템에 대한 메모리 오류 테스트, 성능 테스트 및 시스템 내부에 포함된 프로세스 사이의 통신 테스트를 수행함으로써, 실제 운영되는 시스템에 대한 테스트가 가능하고, 시스템의 런-타임 상황에서도 동적 테스트를 수행할 수 있고, 시스템이 동작하는 동안 발생하는 결함을 확인할 수 있는 시스템 테스트 장치를 제공하는데 그 목적이 있다.
본 발명은 시스템 테스트 장치로서, 프로세스 제어블록에 테스트 에이전트를 삽입하는 삽입 모듈, 테스트 대상과 관련된 이벤트가 발생하는 경우, 상기 테스트 에이전트를 이용하여 테스트 대상을 테스트 코드로 후킹하는 후킹 모듈, 상기 테스트 코드로 후킹된 경우, 상기 테스트 대상과 관련된 이벤트가 발생한 프로세스에 대한 테스트 정보를 수집하는 스캐닝 모듈, 및 상기 스캐닝 모듈에 의해 수집된 테스트 정보를 저장하는 로깅 모듈을 포함한다.
또한, 본 발명은 시스템 테스트 시스템으로서, 시스템을 구동시키기 위한 신호를 입력받는 입력 장치, 상기 입력 장치를 통해 입력된 신호에 의해 상기 시스템이 동작하는 동안, 상기 프로세스 제어블록에 테스트 에이전트를 삽입하고, 상기 테스트 에이전트를 이용하여 테스트 대상을 테스트 코드로 후킹하고, 상기 복수의 프로세스 중 테스트 대상과 관련된 이벤트가 발생한 프로세스에 대한 테스트 정보를 수집하는 시스템 테스트 장치 및 상기 시스템 테스트 장치에 의해 수집된 테스트 정보를 분석하는 분석 장치를 포함한다.
본 발명에 따르면, 소스 코드가 아닌 실제 운영되는 코드를 대상으로 하므로, 시스템이 실제로 운용되는 동안에도 시스템에 대한 테스트를 수행할 수 있다. 따라서, 시스템이 실제 동작하는 동안 메모리 오류, 시스템 성능, 프로세스 사이의 통신을 테스트 할 수 있다.
또한, 각각의 프로세스에 대한 개별적인 코드 삽입이 아닌 프로세스 제어블록에 포함된 정보를 활용한 후킹 방법을 이용하므로, 시스템 오버헤드를 최소화할 수 있고, 동작하는 시스템을 방해하지 않고 시스템에 대한 테스트를 수행할 수 있다.
또한, 프로세스 사이의 공유 자원이 제한된 경우에도, 실시간으로 테스트 정보를 수집하여 테스트 결과를 확인할 수 있다.
도 1은 본 발명의 일실시예에 따른 시스템 테스트 장치가 이용되는 전체 시스템을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 시스템 테스트 장치를 나타내는 구성도이다.
도 3은 본 발명의 일실시예에 따른 시스템 테스트 방법을 나타내는 흐름도이다.
도 4는 본 발명의 일실시예에 따른 메모리 테스트 방법, 성능 테스트 방법 및 프로세스 사이의 통신 테스트 방법을 나타내는 흐름도이다.
본 발명은 시스템이 실제 운영되는 환경에서의 테스트이며, 시스템이 시작되어 종료되기까지의 동적 상황에서 시스템을 테스트할 수 있는 장치 및 방법에 관한 것이다. 본 발명은 후킹 기법을 이용하여, 시스템 내에서 동작하는 모든 프로세스에 대한 테스트를 수행할 수 있다.
도 1은 본 발명의 일실시예에 따른 시스템 테스트 장치가 이용되는 전체 시스템을 나타내는 도면이다.
도 1에 도시된 바와 같이, 전체 시스템은 시스템 테스트 장치(100), 시스템(200), 입력 장치(300), 분석 장치(400) 및 출력 장치(500)를 포함한다.
시스템 테스트 장치(100)는 시스템(200)에 대한 메모리 결함, 시스템(200)의 성능 또는 시스템(200)에 포함된 둘 이상의 프로세스 사이의 통신을 테스트하기 위한 장치이다. 시스템 테스트 장치(100)는 도 1에 도시된 바와 같이 시스템(200)과 독립적으로 구비될 수도 있으며, 시스템(200) 내부에 포함되는 형태로 구현될 수도 있다.
시스템(200)은 시스템 테스트 장치(100)의 테스트 대상이 되는 시스템으로서, 다양한 소프트웨어 및 하드웨어가 통합된 임베디드 시스템이다. 시스템 테스트 장치(100)의 테스트 대상이 되는 시스템은 복수의 프로세스를 포함하는 하나 이상의 시스템을 의미한다. 따라서, 복수의 시스템의 메모리 결함 또는 시스템 성능도 테스트 대상이 될 수 있으며, 하나의 시스템에 포함되는 복수의 프로세스 사이의 통신뿐 아니라, 서로 다른 시스템에 포함된 프로세스들 사이의 통신도 시스템 테스트 장치(100)의 테스트 대상이 될 수 있다.
상기 시스템(200)은 멀티 프로세스가 통신하는 모든 임베디드 시스템 및 컴퓨터시스템으로서, 예를 들어, 인포테인먼트 시스템, 멀티미디어시스템, 유무선네트워크시스템 등이 될 수 있다. 예를 들어, 시스템(200)이 차량 인포테인먼트 시스템인 경우, 시스템(200)은 AVN(Audio Video Navigation) 기능을 중심으로 TDMB(Terrestrial Digital Multimedia Broadcasting), TPEG(Transport Protocol Expert Group), IPOD, USB, 블루투스(Bluetooth), VR (Voice Recognition), PGS (Parking Guidance System), RDS (Radio Data System), VCDC (Vehicle CDC), DIS (Driver Information System), RSE (Rear Seat Entertainment), HEV (Hybrid Electric Vehicle) display, AHU (Air Handling Unit) display 등을 포함한다.
입력 장치(300)는 시스템 테스트 장치(100) 및 시스템(200)을 구동시키기 위한 사용자 입력 장치이다. 입력 장치(300)는 키보드 또는 터치 스크린으로 구현될 수 있으며, 입력 장치(300)를 통해 입력되는 신호에 따라 시스템(200)이 구동된다. 또한, 입력 장치(300)를 통해 입력되는 신호에 따라 시스템 테스트 장치(100)가 시스템 테스트를 위한 동작을 실행한다.
분석 장치(400)는 시스템 테스트 장치(100)에 의해 수집된 테스트 정보를 분석하여 시스템(200)의 테스트 결과를 확인한다. 상기 시스템 테스트 장치(100)는 분석 장치(400)와 하나의 장치로 구현되어, 테스트 정보를 수집함과 동시에 수집된 테스트 정보를 분석하여 테스트 결과를 확인할 수도 있다.
출력 장치(500)는 시스템 테스트 장치(100)에 의해 수집된 테스트 정보 또는 분석 장치(400)에 의해 분석된 테스트 결과를 이미지 또는 음성으로 출력하는 장치이다. 출력 장치(500)를 통해 사용자는 시스템 테스트 결과를 확인할 수 있다.
도 2는 본 발명의 일실시예에 따른 시스템 테스트 장치를 나타내는 구성도이다.
도 2에 도시된 바와 같이, 시스템 테스트 장치(100)는 삽입 모듈(101), 후킹 모듈(103), 스캐닝 모듈(105) 및 로깅 모듈(107)을 포함한다. 도 2에서 시스템 테스트 장치(100)와 연결되어 테스트 대상이 되는 시스템(200)은 둘 이상의 프로세스를 포함하는 하나의 시스템으로 가정한다.
시스템(200)은 프로세스 제어블록(201, Process Control Block)을 포함한다. 프로세스 제어블록(201)은 시스템(200)에 포함된 모든 프로세스에 대한 런-타임 실행정보를 갖는다. 여기서, 런-타임 실행정보란, 시스템(200)이 동작하는 동안 모든 프로세스 사이의 실행정보를 의미한다. 따라서, 프로세스 제어블록(201)은 시스템(200)에 포함된 모든 프로세스에 대한 자원사용 현황, 프로세스 상태, 우선순위, 함수테이블 등을 포함할 수 있다. 보다 상세하게는 프로세스 ID, 프로세스 이름, 현행 프로세스, 현행 쓰레드, 시스템에서 실행되고 있는 프로세스 리스트, 모듈 리스트, 시스템 페이지 사이즈, 사용 가능한 물리메모리 사이즈, CPU 사용량, 사용중인 자원 리스트, 요청중인 I/O디바이스 상태, 오픈된 파일 정보, 레지스터 정보 등을 포함할 수 있다. 따라서, 모든 시스템 내에서 상기 언급된 정보를 포함하는 데이터구조 또는 장치는 본 발명에서 의미하는 프로세스 제어블록에 해당된다.
삽입 모듈(101)은 프로세스 제어블록(201)에 테스트 에이전트를 삽입한다. 테스트 에이전트는 프로세스 제어블록(201)에 포함된 정보를 기초로 테스트 대상을 테스트 코드로 후킹하고, 테스트 정보를 수집할 수 있다. 테스트 코드가 후킹되는 테스트 위치는 결함 유형에 따라 정의될 수 있다. 본 발명에서, 테스트 코드로 후킹되는 테스트 대상은 테스트 대상이 되는 메모리 영역, 시스템의 성능 정보를 포함하는 코드, 또는 통신 관련 이벤트를 발생시키는 코드 등을 될 수 있다. 본 발명에서 테스트 에이전트가 프로세스 제어블록(201)에 삽입되기 전에, 먼저 시스템(200)은 정상적으로 동작하고 있으며, 시스템(200)은 시스템 테스트 장치(100)의 동작에 의해 영향을 받지 않고 정상적으로 동작한다.
또한, 삽입 모듈(101)은 시스템(200)에서 동작하고 있는 프로세스 리스트를 확인하여, 확인된 프로세스 리스트를 기초로 테스트 에이전트를 삽입할 수 있다.
후킹 모듈(103)은 상기 삽입 모듈(101)에 의해 삽입된 테스트 에이전트를 이용하여 테스트 대상을 테스트 코드로 후킹한다. 상기 테스트 코드는 테스트하고자 하는 대상 및 결함 유형에 따라 변경된다. 즉, 메모리 결함 테스트, 성능 테스트 및 통신 테스트에 따라 테스트 코드가 각각 달라지며, 통신 테스트에서도 테스트하고자 하는 결함 유형에 따라 테스트 코드가 달라질 수 있다. 또한, 후킹 모듈(103)은 테스트 대상이 테스트 코드로 후킹되는 테스트 위치를 변경할 수 있다.
테스트 코드가 후킹된다는 것은, 동작하고 있는 시스템(200) 내에서 테스트 대상과 관련 이벤트가 발생하는 경우, 삽입된 테스트 에이전트가 원본 코드의 동작을 포함한 테스트 코드가 실행되도록 OS의 프로세스 제어블록을 후킹한다는 것을 의미한다. 프로세스 제어블록에 포함되는 정보로부터 후킹 모듈(103)은 테스트 대상과 관련된 이벤트가 발생하는지 확인할 수 있다.
스캐닝 모듈(105)은 테스트 코드가 후킹된 경우, 상기 테스트 대상과 관련된 이벤트가 발생한 프로세스에 대한 테스트 정보를 수집한다. 여기서, 테스트 정보는 기발생한 이벤트에 대한 정보 뿐 아니라, 테스트 코드 후킹에 따라 새롭게 발생하는 이벤트까지 포함할 수 있다. 수집되는 테스트 정보는 테스트 단계, 테스트 목적, 테스트하고자 하는 결함 유형에 따라 달라진다.
따라서, 스캐닝 모듈(105)은 시스템 테스트 결과 분석에 필요한 시스템 동적 상태 정보, 예를 들어, 함수 파라미터 및 반환 값, 성능 측정값, 공유 자원 사용 리스트 등을 수집한다.
로깅 모듈(107)은 상기 스캐닝 모듈(105)에 의해 수집된 테스트 정보를 저장 공간에 저장한다. 저장 공간은 로깅 모듈(107)에 구비될 수도 있고, 로깅 모듈(107)과 별개 장치로 구현될 수 있다. 도 1의 분석 장치(400)는 스캐닝 모듈(105)에 의해 수집된 테스트 정보 또는 로깅 모듈(107)에 의해 저장된 테스트 정보를 분석할 수 있다.
도 3은 본 발명의 일실시예에 따른 시스템 테스트 방법을 나타내는 흐름도이다.
도 3에 도시된 바와 같이, 테스트 대상이 되는 시스템(200)의 프로세스 제어블록(201)에 테스트 에이전트가 삽입된다(S110). 시스템(200)은 테스트 에이전트가 삽입되기 전부터 정상적으로 동작하고 있다.
다음, 테스트 대상과 관련된 이벤트가 발생하는 경우, 삽입된 테스트 에이전트를 통해 테스트 대상이 테스트 코드로 후킹된다(S120). 테스트 대상이 테스트 코드로 후킹됨으로써, 상기 이벤트가 발생한 프로세스 대신 테스트 코드가 실행될 수 있다.
다음, 테스트 대상이 테스트 코드로 후킹된 경우, 상기 테스트 대상과 관련된 이벤트가 발생한 프로세스에 대한 테스트 정보가 수집된다(S130). 다음, 수집된 테스트 정보는 저장된다(S140). 여기서, 테스트 정보는 테스트 대상이 테스트 코드로 후킹되고 있는 동안에만 수집될 수 있고, 테스트 대상이 테스트 코드로 후킹된 후, 시스템이 동작하는 동안 모두 수집될 수도 있다.
도 4는 본 발명의 일실시예에 따른 메모리 결함 테스트 방법, 성능 테스트 방법 및 프로세스 사이의 통신 테스트 방법을 나타내는 흐름도이다.
도 4a는 메모리 결함 테스트를 수행하기 위한 시스템 테스트 방법을 나타낸다. 먼저, 결함 모델이 정의된다(S150). 여기서, 결함 모델이란, 결함 유형에 따라 테스트되어야 하는 메모리 위치 및 결함 발견/복구를 위한 테스트 정보를 의미한다. 정의된 결함 모델에 따라, 시스템(200)이 정상적으로 동작하는 동안 테스트 정보를 수집할 수 있는 테스트 코드가 생성될 수 있다.
다음, 시스템(200)의 프로세스 제어블록(201)에 테스트 에이전트가 삽입된다(S151). 테스트 에이전트는 시스템(200)에서 동작하고 있는 프로세스 리스트 중 적어도 하나에 삽입될 수 있다.
다음, 후킹 모듈(103)은 프로세스 제어블록(201)에 포함된 정보 및 결함 모델을 기초로 후킹할 메모리 영역을 식별하고, 식별된 메모리 영역에 테스트 코드를 후킹한다(S152). 메모리 영역을 식별한 결과, 테스트 위치가 SYSTEM API(Application Process Interface) 함수의 경우, 후킹 모듈(103)은 프로세스 제어블록(201)의 APISet 을 후킹 영역으로 식별한다. 테스트 위치가 DLL(Dynamic Linking Library) EXPORT 함수의 경우, 후킹 모듈(103)은 프로세스 제어블록(201)의 IAT (Import Address Table)을 후킹 영역으로 식별한다. 그 외의 경우, 후킹 모듈(103)은 프로세스 제어블록(201)의 코드 공간을 후킹 영역으로 식별한다.
도 4a에서, 테스트 코드가 후킹된다는 것은, 동작하고 있는 시스템(200) 내에서 테스트 대상인 메모리 위치에, 메모리에 대한 쓰기, 읽기, 접근 등의 이벤트가 발생하는 경우, 삽입된 테스트 에이전트가 원본 코드의 동작을 포함한 테스트 코드가 실행되도록 OS의 프로세스 제어블록을 후킹한다는 것을 의미한다.
다음, 테스트 대상인 메모리 상태에 대한 정보가 수집된다(S153). 예를 들어, 결함 원인 식별에 필요한 프로그램 실행 정보가 수집되고, 결함 위치 식별에 필요한 프로세스 컨텍스트 정보가 수집되며, 메모리 성능 분석에 필요한 시스템 상태 정보가 수집될 수 있다.
다음, S153 단계에서 수집된 테스트 정보가 저장된다(S154).
도 4b는 성능 테스트를 수행하기 위한 시스템 테스트 방법을 나타낸다. 본 발명에 따른 시스템 테스트 방법은 성능 병목과 그 원인을 분석하기 위해 프로세스 제어블록(201)의 데이터 중 페이지 폴트율, 프로세서 사용율과 같은 시스템 실행 정보들을 후킹하여 시스템 성능을 분석할 수 있다.
여기서, 성능은 시스템이나 컴포넌트들이 주어진 시스템의 제약 조건 하에서 기능을 수행하는 정도를 의미한다. 성능 테스트는 특정 성능 요구사항을 시스템이 만족하는 지에 관한 평가이다. 이러한 성능 테스트를 통해 성능 병목과 그 원인을 분석하여 이를 해결함으로 시스템의 성능을 개선할 수 있다.
시스템의 성능 병목은 메모리, I/O 디바이스, 네트워크와 같은 제한된 자원들에 대한 경쟁으로 시스템의 성능이 저하되는 현상이다. 시스템 성능 병목의 원인은 자원 부족, 공유자원 경합, 자원 독점, 자원의 잘못된 구성 또는 자원의 잘못된 동작과 같이 다양하다.
먼저, 결함 모델이 정의된다(S160). 여기서, 결함 모델이란, 결함 유형에 따라 테스트되어야 하는 성능 병목 위치 및 성능 병목을 판정할 시스템 상태를 나타내는 테스트 정보를 의미한다. 정의된 결함 모델에 따라, 시스템(200)이 정상적으로 동작하는 동안 테스트 정보를 수집할 수 있는 테스트 코드가 생성될 수 있다.
삽입 모듈(101)은 프로세스 제어블록(201)에 테스트 에이전트를 삽입한다(S161). 삽입 모듈(101)은 시스템(200)에서 동작하고 있는 프로세스 리스트를 확인하여, 확인된 프로세스 리스트를 기초로 테스트 에이전트를 삽입할 수 있다. 즉, 현행 프로세스(Current Process)에 관한 프로세스 제어블록(201)의 base address는 특정 메모리 공간에 관리되거나, 경우에 따라 미리 고정된 주소로 관리되기 때문에 현행 프로세스의 프로세스 제어블록(201)의 정보를 알 수 있다.
다음, 후킹 모듈(103)은 테스트 대상에 테스트 코드를 후킹한다(S162).
테스트 대상이 테스트 코드로 후킹된 경우, 스캐닝 모듈(105)은 시스템의 성능 정보를 수집한다(S163). 예를 들어, timer-interrupt를 사용하며 지정된 시간 간격 (e.g. 1sec, 100msec) 마다 성능 데이터를 측정할 수 있다. 또한, 시스템 성능을 시스템 단위뿐만 아니라 프로세스와 쓰레드의 단위로까지 분석하기 위해, 프로세스 제어블록(201)의 프로세스와 쓰레드 리스트들을 순환하면서 성능 정보를 측정할 수 있다.
시스템 성능 병목이 발생하는 위치를 자세히 추적하기 위해, 스캐닝 모듈(105)은 쓰레드 별로 콜-스택(Call-stack) 정보를 저장할 수 있으며, 각 모니터링 단위 별 측정되는 성능 정보는 다음과 같다.
프로세스 제어블록(201)의 성능 정보는 프로세서 사용량, 메모리 사용량, 페이지 폴트(Page Fault), 프로세스 컨텍스트 정보, 프로세스 콜스택, 프로세스 힙 사용량, 프로세스 상태, 프로세스 우선순위 중 하나 이상을 포함할 수 있다. 프로세스 제어블록(201)의 프로세스에 대한 성능 정보는 아이디(ID), 프로세스의 상태, 프로세스의 우선 순위, 힙(Heap) 사용량, 프로세스의 동작 시간, 사용 시간, 커널 사용 시간 중 하나 이상을 포함할 수 있다. 또한, 프로세스 제어블록(201)의 쓰레드에 대한 성능 정보는 아이디, 운영 상태(Run State), 기본 우선 순위, 현재 우선 순위, 사용 시간, 커널 사용 시간, 콜스택 정보 중 하나 이상을 포함할 수 있다.
다음, 로깅 모듈(107)은 수집된 테스트 정보를 저장 공간에 저장한다(S164).
성능 테스트를 수행하기 위한 시스템 테스트 방법은 페이지폴트를 기준으로 메모리 병목을 판단할 수 있다. 예를 들어, 페이지 폴트가 높으면 메모리 병목일 수 있다. 페이지폴트란 프로그램이 자신의 주소 공간에는 존재하지만 시스템의 메모리에는 현재 없는 데이터나 코드에 접근 시도하였을 경우 발생하는 현상이다. 페이지폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서 마치 페이지폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하도록 한다. 운영체제의 페이지폴트에 대한 예외처리 때문에 어플리케이션의 처리시간은 지연되며, 전체 시스템 성능에 영향을 준다.
또한, 본 발명에 따른 시스템 테스트 방법은 메모리 사용량을 통해 성능 병목을 식별할 수 있다. 시스템의 메모리는 물리 메모리 사용량, 가상 메모리 사용량이 있고, 프로세스 별로 힙 메모리 사용량으로 구분할 수 있다. 본 발명에 따른 시스템 테스트 방법은 이러한 메모리 사용량들의 합을 기준으로 성능 병목을 판단한다.
또한 본 발명에 따른 시스템 테스트 방법은 프로세서 사용량 (혹은 CPU 사용량)을 통해 성능 병목을 식별할 수 있다. 예를 들어, 본 발명에 따른 시스템 테스트 방법은 프로세서 사용량이 높게 유지되면서 여유 메모리가 있는 경우는 CPU에 병목이 있다고 판단할 수 있다. 반면 프로세서 사용량이 높고 메모리도 고갈되었다면 성능 문제는 CPU보다 메모리 병목으로 판단할 수 있다.
또한 본 발명에 따른 시스템 테스트 방법은 프로세스 사용량 (Processor Usage)에 따라 성능 병목을 식별할 수 있다. 프로세스 사용량은 시스템의 실행 시간으로 전체 CPU 사용량에서 대기 시간(Idle Time)을 제외한 시간을 의미한다.
또한 본 발명에 따른 시스템 테스트 방법은 사용 시간 (User Time)에 따라 성능 병목을 판단할 수 있다. 사용 시간은 실행이 사용자 공간에서 머무른 시간을 의미하며, 곧 어플리케이션의 실행 시간을 의미한다.
또한 본 발명에 따른 시스템 테스트 방법은 커널 사용 시간 (Kernel Time)에 따라 성능 병목을 판단할 수 있다. 커널 사용 시간은 실행이 커널 공간에서 머무른 시간으로, 커널의 서비스 처리 시간을 의미한다.
도 4c는 복수의 프로세스 사이의 통신에 대한 테스트를 수행하기 위한 시스템 테스트 방법을 나타낸다. 도 4c에 따른 시스템 방법을 수행하는 시스템 테스트 장치(100)는 시스템(200)에 포함된 모든 프로세스 사이의 자원 공유 및 의사 전달이 정확히 이루어지는지 판단할 수 있는 테스트 정보를 수집할 수 있다.
먼저, 결함 모델이 정의된다(S170). 여기서, 결함 모델이란, 결함 유형에 따라 테스트되어야 하는 프로세스 사이의 통신 위치 및 결함 발견/복구를 위한 테스트 정보를 의미한다. 정의된 결함 모델에 따라, 시스템(200)이 정상적으로 동작하는 동안 테스트 정보를 수집할 수 있는 테스트 코드가 생성될 수 있다.
테스트 대상이 되는 시스템(200)의 프로세스 제어블록(201)에 테스트 에이전트가 삽입된다(S171). 삽입 모듈(101)은 상기 프로세스 리스트 중 둘 이상의 프로세스를 테스트 대상으로 선정하여, 선정된 프로세스 사이의 통신을 테스트하기 위한 테스트 에이전트를 삽입할 수도 있다.
다음, 복수의 프로세스 사이에 통신 관련 이벤트가 발생하는 경우, 삽입된 테스트 에이전트를 이용하여 테스트 대상이 테스트 코드로 후킹된다(S172).
테스트 대상이 테스트 코드로 후킹된다는 것은, 동작하고 있는 시스템(200) 내에서 복수의 프로세스 사이에 통신 관련 이벤트가 발생하는 경우, 삽입된 테스트 에이전트가 원본 코드의 동작을 포함한 테스트 코드가 실행되도록 OS의 프로세스 제어블록을 후킹한다는 것을 의미한다. 프로세스 제어블록에 포함되는 정보로부터 후킹 모듈(103)은 어떤 프로세스 사이에 어떤 유형의 통신 관련 이벤트가 발생하는지를 확인할 수 있다. 여기서, 통신 관련 이벤트란, 복수의 프로세스 사이에 메시지 전송, 공유 데이터 전송, 공유 메모리 사용, 메시지큐 사용, 동기화 객체 사용 등을 의미한다.
테스트 코드는 상기 복수의 프로세스 사이의 메시지 전송, 메시지 큐, 공유 메모리 또는 동기화 객체에 관련된 결함 유형을 확인하기 위한 코드이다.
예를 들어, 테스트 코드는 SendMessage(), PostMessage()와 같은 제1함수 및 테스트 하고자 하는 결함유형에 따라 필요한 제2함수를 포함하며, 시스템에 포함된 프로세스들은 각각 제1함수를 포함한다. 따라서, 제1 프로세스 및 제2 프로세스 사이에 통신 관련 이벤트가 발생하는 경우, 후킹 모듈(103)은 삽입된 통신 에이전트를 이용하여 제1 프로세스 및 제2 프로세스에서 제1함수가 실행되는 단계에서, 제1 프로세스 및 제2 프로세스의 제1함수 대신 테스트 코드를 실행시킴으로써, 테스트 코드를 후킹한다. 제1 프로세스 및 제2 프로세스에서 제1함수가 실행되는 단계는 프로세스 제어블록에 포함된 정보로부터 확인된다.
한편, 테스트 대상이 복수의 프로세스 사이의 통신이므로 테스트하고자 하는 결함 유형에 따라 송신 측 또는 수신 측에 해당하는 일방의 프로세스에만 테스트 코드를 후킹할 수도 있다.
다음, 스캐닝 모듈(105)은 테스트 대상이 후킹된 경우, 상기 통신 관련 이벤트가 발생한 복수의 프로세스 사이의 통신에 대한 테스트 정보를 수집한다(S172). 여기서, 복수의 프로세스 사이의 통신이란, 기발생한 통신 관련 이벤트 뿐 아니라, 테스트 코드 후킹에 따라 발생하는 통신 관련 이벤트까지 포함한다. 수집되는 테스트 정보는 테스트 단계, 테스트 목적, 테스트하고자 하는 결함 유형에 따라 달라진다.
따라서, 스캐닝 모듈(105)은 복수의 프로세스 사이의 통신에 대해 결함 판정에 필요한 시스템 동적 상태 정보, 예를 들어, 함수 파라미터 및 반환 값, 성능 측정값, 공유 자원 사용 리스트 등을 수집한다.
테스트 정보는 상기 복수의 프로세스의 콜-스택 정보, 상기 복수의 프로세스 사이에 송수신되는 통신 유형, 통신 아이디, 통신 데이터, 상기 복수의 프로세스 사이의 통신에서 발생한 지연시간 등을 포함할 수 있다.
다음, 로깅 모듈(107)은 상기 스캐닝 모듈(105)에 의해 수집된 테스트 정보를 저장 공간에 저장한다(S173). 저장 공간은 로깅 모듈(107)에 구비될 수도 있고, 로깅 모듈(107)과 별개 장치로 구현될 수 있다. 도 1의 분석 장치(400)는 스캐닝 모듈(105)에 의해 수집된 테스트 정보 또는 로깅 모듈(107)에 의해 저장된 테스트 정보를 분석할 수 있다
복수의 프로세스 사이의 통신에 대한 테스트를 수행하기 위해 이용되는 테스트 코드는 프로세스 사이의 메시지 전송, 메시지 큐, 공유 메모리 또는 동기화 객체와 관련된 결함 유형을 확인하기 위한 코드가 될 수 있다.
메시지 전송(Message Passing)과 관련된 결함 유형은 지정 시간 내 메시지 전송 실패(동기), 메시지 데드락(동기), 메시지 처리 지연(동기), 메시지 손실(동기), 메시지 변경(동기), 메시지 큐에 삽입 실패(비동기), 메시지 처리 지연(비동기), 메시지 손실(비동기), 또는 메시지 변경(비동기)으로 분류될 수 있다.
메시지 큐(Message Queue)와 관련된 결함 유형은 메시지 큐 생성 실패, 메시지 큐 닫기 실패, 메시지 큐로부터 읽기 실패, 또는 메시지 큐에 쓰기 실패로 분류될 수 있다.
공유 메모리(Shares Memory)와 관련된 결함 유형은 공유 메모리 생성 실패일 수 있다.
동기화 객체(Synchronization Object)와 관련된 결함 유형은 생성하지 않은 동기화 객체 사용, 생성한 동기화 객체 사용하지 않음, 또는 사용한 동기화 객체 해제 하지 않음으로 분류될 수 있다.
따라서, 각 결함 유형에 따라 테스트 코드가 변경된다.
상기한 바와 같이, 본 발명에 따른 시스템 테스트 장치(100)는 동작하고 있는 시스템(200)에 영향을 주지 않으면서 테스트 에이전트 삽입, 테스트 코드 후킹, 테스트 정보 수집을 실시할 수 있으며, 상기 시스템 테스트 장치(100)에 의한 시스템 테스트는 시스템에 포함된 프로세스 제어블록에 포함된 정보를 기초로 실시된다.
본 발명은 프로세서가 읽을 수 있는 기록매체에 프로세서가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 프로세서가 읽을 수 있는 기록매체는 프로세서에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 프로세서가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있다. 또한 프로세서가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
본 발명은 상술한 일실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능하며, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
본 발명은 시스템이 실제 동작하는 동안 메모리 오류, 시스템 성능, 프로세스 사이의 통신을 테스트 할 수 있다.

Claims (20)

  1. 복수의 프로세스 및 상기 복수의 프로세스에 대한 런-타임 실행정보를 포함하는 프로세스 제어블록을 포함하는 시스템에 대한 시스템 테스트 장치에 있어서,
    상기 프로세스 제어블록에 테스트 에이전트를 삽입하는 삽입 모듈;
    테스트 대상과 관련된 이벤트가 발생하는 경우, 상기 테스트 에이전트를 이용하여 테스트 대상을 테스트 코드로 후킹하는 후킹 모듈;
    상기 테스트 대상이 후킹된 경우, 상기 테스트 대상과 관련된 이벤트가 발생한 프로세스에 대한 테스트 정보를 수집하는 스캐닝 모듈; 및
    상기 스캐닝 모듈에 의해 수집된 테스트 정보를 저장하는 로깅 모듈을 포함하는 시스템 테스트 장치.
  2. 제1항에 있어서,
    상기 프로세스 제어블록은 상기 복수의 프로세스에 대한 자원사용 현황, 프로세스 상태, 우선순위 및 함수테이블 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템 테스트 장치.
  3. 제2항에 있어서,
    상기 테스트 코드는 결함 유형에 따라 정의되는 것을 특징으로 하는 시스템 테스트 장치.
  4. 제3항에 있어서,
    상기 후킹 모듈은 상기 결함 유형에 따른 테스트 위치에 따라 메모리 영역을 식별하여, 식별된 메모리 영역을 테스트 코드로 후킹하는 것을 특징으로 하는 시스템 테스트 장치.
  5. 제3항에 있어서,
    상기 테스트 정보는 프로그램 실행 정보, 프로세스 컨텍스트 정보 및 시스템 상태 정보 중 적어도 하나인 것을 특징으로 하는 시스템 테스트 장치.
  6. 제2항에 있어서,
    상기 스캐닝 모듈은 상기 프로세스 제어블록의 성능 정보를 측정하는 것을 특징으로 하는 시스템 테스트 장치.
  7. 제6항에 있어서,
    상기 프로세스 제어블록의 성능 정보는 프로세서 사용량, 메모리 사용량, 페이지 폴트(Page Fault), 프로세스 컨텍스트 정보, 프로세스 콜스택, 프로세스 힙 사용량, 프로세스 상태, 프로세스 우선순위 중 적어도 하나인 것을 특징인 시스템 테스트 장치.
  8. 제6항에 있어서,
    미리 설정된 시간 간격마다 상기 프로세스 제어블록의 성능 정보를 측정하는 것을 특징으로 하는 시스템 테스트 장치.
  9. 제6항에 있어서,
    상기 프로세스 제어 블록의 프로세스 및 쓰레드(Thread)에 대한 성능 정보를 측정하는 것을 특징으로 하는 시스템 테스트 장치.
  10. 제9항에 있어서,
    상기 프로세스 제어 블록의 프로세스에 대한 성능 요소는
    아이디(ID), 프로세스의 상태, 프로세스의 우선 순위, 힙(Heap) 사용량, 프로세스의 동작 시간, 사용 시간, 커널 사용 시간 중 하나 이상을 포함하는 것을 특징으로 하는 시스템 테스트 장치.
  11. 제9항에 있어서,
    상기 프로세스 제어 블록의 쓰레드에 대한 성능 요소는
    아이디, 운영 상태(Run State), 기본 우선 순위, 현재 우선 순위, 사용 시간, 커널 사용 시간, 콜 스택(Call Stack) 중 하나 이상을 포함하는 것을 특징으로 하는 시스템 테스트 장치.
  12. 제2항에 있어서,
    상기 테스트 대상과 관련된 이벤트는 상기 복수의 프로세스 사이의 메시지 전송, 공유 데이터 전송, 공유 메모리 사용, 메시지큐 사용, 동기화 객체 사용 중 적어도 하나인 것을 특징으로 하는 시스템 테스트 장치.
  13. 제12항에 있어서,
    상기 테스트 코드는 상기 복수의 프로세스 사이의 메시지 전송, 메시지 큐, 공유 메모리 및 동기화 객체 중 적어도 하나의 결함 유형을 확인하기 위한 코드인 것을 특징으로 하는 시스템 테스트 장치.
  14. 제12항에 있어서,
    상기 테스트 정보는 상기 복수의 프로세스의 콜-스택 정보, 상기 복수의 프로세스 사이에 송수신되는 통신 유형, 통신 아이디, 통신 데이터 및 상기 복수의 프로세스 사이의 통신에서 발생한 지연시간 중 적어도 하나인 것을 특징으로 하는 시스템 테스트 장치.
  15. 제12항에 있어서,
    상기 테스트 정보는 시스템 동적 상태 정보, 프로세스 상태 정보, 및 상기 복수의 프로세스 사이의 통신 정보를 포함하는 것을 특징으로 하는 시스템 테스트 장치.
  16. 복수의 프로세스 및 상기 복수의 프로세스에 대한 런-타임 실행정보를 포함하는 프로세스 제어블록을 포함하는 시스템에 대한 시스템 테스트 시스템에 있어서,
    상기 시스템을 구동시키기 위한 신호를 입력받는 입력 장치;
    상기 입력 장치를 통해 입력된 신호에 의해 상기 시스템이 동작하는 동안, 상기 프로세스 제어블록에 테스트 에이전트를 삽입하고, 상기 테스트 에이전트를 이용하여 테스트 대상을 테스트 코드로 후킹하고, 상기 복수의 프로세스 중 테스트 대상과 관련된 이벤트가 발생한 프로세스에 대한 테스트 정보를 수집하는 시스템 테스트 장치; 및
    상기 시스템 테스트 장치에 의해 수집된 테스트 정보를 분석하는 분석 장치를 포함하는 시스템 테스트 시스템.
  17. 제16항에 있어서,
    상기 프로세스 제어블록은 상기 복수의 프로세스에 대한 자원사용 현황, 프로세스 상태, 우선순위 및 함수테이블 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템 테스트 시스템.
  18. 제16항에 있어서,
    상기 테스트 코드가 후킹되는 테스트 위치는 결함 유형에 따라 변경될 수 있는 것을 특징으로 하는 시스템 테스트 시스템.
  19. 제16항에 있어서,
    상기 테스트 정보는 프로그램 실행 정보, 프로세스 컨텍스트 정보, 시스템상태정보, 프로세서 사용량, 메모리 사용량, 페이지 폴트(Page Fault), 상기 복수의 프로세스의 콜-스택 정보, 상기 복수의 프로세스 사이에 송수신되는 통신 유형, 통신 아이디, 통신 데이터 및 상기 복수의 프로세스 사이의 통신에서 발생한 지연시간 중 적어도 하나인 것을 특징으로 하는 시스템 테스트 시스템.
  20. 제16항에 있어서,
    상기 분석 장치에 의해 분석된 테스트 결과를 이미지 또는 음성으로 출력하는 출력 장치를 더 포함하는 시스템 테스트 시스템.
PCT/KR2011/001803 2010-06-28 2011-03-15 시스템 테스트 장치 WO2012002635A1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020127034163A KR101459867B1 (ko) 2010-06-28 2011-03-15 시스템 테스트 장치
CN201180032537.0A CN102959519B (zh) 2010-06-28 2011-03-15 系统测试设备
US13/704,490 US9354996B2 (en) 2010-06-28 2011-03-15 System test apparatus
EP11801042.0A EP2587379B1 (en) 2010-06-28 2011-03-15 System test apparatus
CA2802415A CA2802415C (en) 2010-06-28 2011-03-15 System test apparatus
JP2013518216A JP5719930B2 (ja) 2010-06-28 2011-03-15 システムテスト装置

Applications Claiming Priority (4)

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

Publications (1)

Publication Number Publication Date
WO2012002635A1 true WO2012002635A1 (ko) 2012-01-05

Family

ID=45402314

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2011/001803 WO2012002635A1 (ko) 2010-06-28 2011-03-15 시스템 테스트 장치

Country Status (7)

Country Link
US (1) US9354996B2 (ko)
EP (1) EP2587379B1 (ko)
JP (1) JP5719930B2 (ko)
KR (1) KR101459867B1 (ko)
CN (1) CN102959519B (ko)
CA (1) CA2802415C (ko)
WO (1) WO2012002635A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225302B2 (en) * 2003-02-13 2012-07-17 Lawrence Taylor Waugh System and method for managing source code and acquiring metrics in software development
US8890880B2 (en) * 2009-12-16 2014-11-18 Intel Corporation Graphics pipeline scheduling architecture utilizing performance counters
KR101459867B1 (ko) 2010-06-28 2014-11-13 현대자동차주식회사 시스템 테스트 장치
CA2800271A1 (en) * 2010-09-07 2012-03-15 Ewha University-Industry Collaboration Foundation System test method
KR101459868B1 (ko) 2011-03-15 2014-11-12 현대자동차주식회사 통신 테스트 장치 및 방법
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
US9092564B2 (en) * 2013-02-15 2015-07-28 Microsoft Technology Licensing, Llc Call stacks for asynchronous programs
CN103810099B (zh) * 2013-11-21 2017-05-24 北京奇虎科技有限公司 代码跟踪方法及其系统
KR102210544B1 (ko) * 2014-11-21 2021-02-01 삼성전자주식회사 전자 시스템의 결함 분석 방법
CN105468522A (zh) * 2015-11-20 2016-04-06 浪潮电子信息产业股份有限公司 一种基于Linux系统CPU负载控制下的软件压力测试方法
CN105426310B (zh) * 2015-11-27 2018-06-26 北京奇虎科技有限公司 一种检测目标进程的性能的方法和装置
CN107885623A (zh) * 2016-09-30 2018-04-06 北京机电工程研究所 基于com组件技术的pxi模块网络化方法
CN109460328A (zh) * 2018-10-11 2019-03-12 联宝(合肥)电子科技有限公司 一种测试设备的管理系统、方法及电子设备
CN109684219A (zh) * 2018-12-26 2019-04-26 百度在线网络技术(北京)有限公司 系统性能测试方法、装置及存储介质
US11574696B2 (en) * 2021-04-12 2023-02-07 Nanya Technology Corporation Semiconductor test system and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040087767A (ko) * 2003-04-09 2004-10-15 바산네트워크(주) 리얼타임, 임베디드 s/w 컴포넌트 테스팅 및 실시간 분석 방법 및 시스템
KR20070087400A (ko) * 2006-02-23 2007-08-28 삼성전자주식회사 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템
KR20080048035A (ko) * 2005-09-23 2008-05-30 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 소프트웨어의 테스트 및 모니터를 위한 데이터의 주입 및추출을 위한 동적 프로브에 대한 방법 및 시스템
KR20090083623A (ko) * 2008-01-30 2009-08-04 주식회사 국민은행 임베디드 장비를 이용한 품질테스트 자동화방법

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04286035A (ja) 1991-03-15 1992-10-12 Nec Corp プロセストレース方式
US5383192A (en) * 1992-12-23 1995-01-17 Intel Corporation Minimizing the likelihood of slip between the instant a candidate for a break event is generated and the instant a microprocessor is instructed to perform a break, without missing breakpoints
DE4418231C2 (de) * 1994-05-25 1997-02-27 Siemens Ag Modular strukturierter Service-Personalcomputer
JPH10269105A (ja) * 1997-01-27 1998-10-09 N T T Data Tsushin Kk トレースシステム、リソース解放漏れ検出システム及び記録媒体
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
KR20030041612A (ko) 2001-11-20 2003-05-27 (주)유니트시스템즈 서버 병목을 실시간으로 분석하는 방법
US7954088B2 (en) 2005-03-23 2011-05-31 Microsoft Corporation Method and apparatus for executing unit tests in application host environment
JP4562568B2 (ja) 2005-03-28 2010-10-13 富士通テン株式会社 異常検出プログラムおよび異常検出方法
US7904886B2 (en) * 2006-03-13 2011-03-08 International Business Machines Corporation Method for executing an application in a virtual container forming a virtualized environment session
KR20080079343A (ko) 2006-12-15 2008-09-01 주식회사 케이티프리텔 이동통신망의 미들웨어 서버를 모니터링하는 서버 및 그방법
EP1962192A1 (en) 2007-02-21 2008-08-27 Deutsche Telekom AG Method and system for the transparent migration of virtual machine storage
JP2008210213A (ja) * 2007-02-27 2008-09-11 Nec Corp プロセス動作表示装置及びプロセス動作表示方法並びにプログラム
KR20090001897A (ko) 2007-05-29 2009-01-09 주식회사 케이티프리텔 턱시도 미들웨어 환경의 모니터링 시스템 및 방법
CN101398780B (zh) * 2007-09-27 2011-08-24 国际商业机器公司 可基于进程定制调试器的即时调试的方法和系统
KR20090081749A (ko) 2008-01-25 2009-07-29 삼성전자주식회사 응용프로그램의 자원 모니터링 방법 및 그 장치
US8793662B2 (en) 2008-03-25 2014-07-29 Microsoft Corporation Runtime code hooking for print driver and functionality testing
JP2009265823A (ja) 2008-04-23 2009-11-12 Yokogawa Digital Computer Corp 情報端末装置及びログデータ取得プログラム
KR101459867B1 (ko) 2010-06-28 2014-11-13 현대자동차주식회사 시스템 테스트 장치
CA2800271A1 (en) 2010-09-07 2012-03-15 Ewha University-Industry Collaboration Foundation System test method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040087767A (ko) * 2003-04-09 2004-10-15 바산네트워크(주) 리얼타임, 임베디드 s/w 컴포넌트 테스팅 및 실시간 분석 방법 및 시스템
KR20080048035A (ko) * 2005-09-23 2008-05-30 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 소프트웨어의 테스트 및 모니터를 위한 데이터의 주입 및추출을 위한 동적 프로브에 대한 방법 및 시스템
KR20070087400A (ko) * 2006-02-23 2007-08-28 삼성전자주식회사 운영 체제 소프트웨어의 테스트 커버리지 분석 방법 및시스템
KR20090083623A (ko) * 2008-01-30 2009-08-04 주식회사 국민은행 임베디드 장비를 이용한 품질테스트 자동화방법

Also Published As

Publication number Publication date
EP2587379A1 (en) 2013-05-01
US9354996B2 (en) 2016-05-31
CN102959519A (zh) 2013-03-06
JP2013535069A (ja) 2013-09-09
EP2587379B1 (en) 2023-05-10
CN102959519B (zh) 2016-10-19
KR20130042502A (ko) 2013-04-26
JP5719930B2 (ja) 2015-05-20
CA2802415A1 (en) 2012-01-05
US20130086425A1 (en) 2013-04-04
CA2802415C (en) 2018-02-13
EP2587379A4 (en) 2014-08-06
KR101459867B1 (ko) 2014-11-13

Similar Documents

Publication Publication Date Title
WO2012002635A1 (ko) 시스템 테스트 장치
WO2012124841A1 (ko) 통신 테스트 장치 및 방법
WO2012033237A1 (ko) 시스템 테스트 방법
WO2012153879A1 (ko) 예외처리 테스트 장치 및 방법
WO2019117593A1 (ko) 컨테이너 기반의 자원 할당을 지원하는 클라우드 컴퓨팅 장치 및 방법
WO2018148405A1 (en) Real-time capture of traffic upon failure for protocol debug
WO2022124720A1 (ko) 운영체제 커널 메모리의 실시간 오류 검출 방법
WO2012091341A1 (en) Method and apparatus for detecting a malware in files
WO2013168947A1 (ko) 모니터링 자원의 사용량 표현 방법, 컴퓨팅 장치 및 그 방법을 실행시키기 위한 프로그램을 기록한 기록 매체
WO2018062614A1 (ko) 계량데이터 관리 시스템 및 컴퓨터 판독가능 기록 매체
WO2016137035A1 (ko) 테스트 케이스 생성 장치와 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
WO2022145524A1 (ko) 이종 데이터 정형화 방법 및 장치
WO2011065783A2 (ko) 컴퓨팅 장치 및 미디어 재생 장치를 이용한 사용자 애플리케이션 테스트 시스템 및 테스트 방법
WO2012015273A2 (en) Direct memory access device for multi-core system and operating method of the same
WO2023058782A1 (ko) 워크로드 단위 배치 및 우선순위 스케줄링을 제공하는 하이브리드 클라우드 운용 방법
WO2011065782A2 (ko) 사용자 애플리케이션의 테스트가 가능한 미디어 재생 장치 및 이를 이용한 사용자 애플리케이션의 테스트 방법
WO2023127979A1 (ko) Autosar 센서 인터페이스의 정적 설정 시스템 및 방법
WO2021187744A1 (ko) 전자 장치 및 그 제어 방법
WO2022145520A1 (ko) 블록체인과 연계된 개인정보 관리를 위한 데이터 맵핑 방법 및 장치
WO2023075308A1 (ko) 제품의 정비를 가이드 하는 전자 장치 및 전자 장치의 동작 방법
WO2022145521A1 (ko) 유무선 통합 rtu의 통신 방식 자동 절체 운영 방법 및 유무선 통합 rtu 시스템
WO2018097345A1 (ko) 분산 컴퓨팅 기반의 어플리케이션 객체 분석 방법, 이를 수행하는 어플리케이션 객체 분석 서버 및 이를 저장하는 기록매체
WO2011065781A2 (ko) 미디어 재생 장치에서 실행되는 사용자 애플리케이션을 제공하는 컴퓨팅 장치 및 제공 방법
CN116204360A (zh) 一种背板测试方法、装置、电子设备及存储介质
WO2011121666A1 (ja) マルチクラスタシステム

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201180032537.0

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11801042

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2802415

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 13704490

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2011801042

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2013518216

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 20127034163

Country of ref document: KR

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE