최근 자동차의 다양한 기능들은 전자 장치와 소프트웨어로 구현된다. 차량용 소프트웨어의 결함은 치명적인 사고의 원인이 되므로 시스템의 품질 보장을 위한 검증은 매우 중요하다. 차량용 소프트웨어의 개발 단계 중 소프트웨어와 하드웨어 통합 단계에서 Hardware-in-the-Loop(HiL) 테스트를 통해 검증이 이루어진다. 하지만 HiL 테스트는 블랙박스 테스트이므로 결함 발생 시 디버깅을 위한 시스템 내부의 동작 정보를 얻기 어렵다. 또한 자동차 시스템은 주문자상표부착생산 (Original Equipment Manufacturer, OEM) 방식에 따라 개발된다. 이 때문에 부품 개발과 통합 검증은 서로 분리된 독립적인 환경에서 수행된다. 따라서 결함에 대한 한정적인 정보는 개발자가 결함 위치를 파악하고 디버깅하는 데 많은 시간이 소요되게 한다.
HiL 테스트 환경에서 디버깅 정보 제공 방법 중에는 메모리 정보를 활용한 결함 위치 정보 제공 방법이 있다. 메모리 정보는 프로그램의 동작 이력을 파악하는 중요한 단서가 될 수 있다. 또한 자동차 시스템의 엄격한 실시간성 때문에 특정 기능의 동작 중 애플리케이션의 메모리 사용은 언제나 같은 양상을 보인다. 이를 이용해 위의 방법에서는 단위 테스트와 통합 테스트의 메모리 갱신 정보를 비교하여 결함 위치를 추정한다. 하지만 메모리 정보를 해석하기 위해서는 SW 개발자 수준의 사전 지식이 필요하며 결함과 관련된 메모리 주소가 많을수록 정보 분석에 대한 직관성이 떨어진다는 단점이 있다. 따라서 본 논문에서는 메모리 갱신 패턴을 이용하여 통합 테스트 중 동작한 단위기능을 자동으로 식별하고 결함 정보를 기능별로 시각화하는 방법을 제안한다. 제안하는 방법은 3개의 ECU를 CAN 네트워크로 연결한 모형자동차에 실제 구현 후 통합 테스트 환경에 적용하여 평가하였다. 12가지 결함에 대해 실험한 결과, 메모리 갱신 패턴 시각화를 기반으로 전체 사용된 메모리 주소의 평균 3.47% 이내로 결함 후보를 축소할 수 있음을 확인하였다.
Alternative Abstract
Recently, various functions of automobiles have been implemented by electronic devices and software. Since faults in automotive software cause fatal accidents, verification to guarantee of system quality is very important. It is accomplished through Hardware-in-the-Loop (HiL) testing. However, since the HiL test is a black box test, it is difficult to obtain information on the internal operation of the system for debugging when a fault occurs. The automotive system is also developed in accordance with the original equipment manufacturer (OEM) method. For this reason, component development and integration verification are performed in separate and independent environments. Thus, the limited information on the fault allows the developer to spend a lot of time to locating and debugging the defect.
There is a method of fault localization by comparing the memory-updated information for the unit test and the integration test among the methods of providing the debugging information in the HiL test environment. The memory information can be an important clue for understanding the operation history of the program. In addition, due to the hard real-time system, the memory usage of applications during the operation of a particular function always appears the same. In this method, the fault location is estimated by comparing the memory-updated information of the unit test and the integration test. However, in order to interpret the memory information, it is necessary to acquire the SW Developer-level prior knowledge. Moreover, the more memory addresses are related to defects, the less intuitive the information analysis is. Therefore, in this paper, we propose a method to identify the unit function automatically that operates during the integration test using the memory-updated pattern and visualize the fault information by function. The proposed method is applied to the integration test environment after actual implementation in a model car connected with three CAN networks. Experiments on 12 defects confirmed that the fault candidates can be reduced to an average of 3.47% of the total memory addresses.