The automotive functional safety standard ISO 26262 recommends the Fault Injection Test as part of the method to ensure that the safety mechanisms implemented in the unit and integration tests of the software work properly. However, standardizing the requirements for functional safety of the vehicle software is not enough to secure the reliability of the defect injection test for the purpose of verifying the functional safety of the software. Additionally, in systems that become larger and more complex due to the integration and advancement of technologies, such as infotainment systems, the cost to correct them may increase exponentially as time goes by without identifying and improving potential defects early in the development process. Therefore, this paper introduces a dynamic defect injection and diagnostic technique that can automatically inject various defects at the software level and verify system robustness without modifying the equipment or source code. In this study, a software-level dynamic fault injection tool (hereinafter referred to as a fault injector) that can operate without any hardware support was designed and developed. The fault injector is an automated system that can inject faults according to test cases targeting a working system or specific task and monitor the results to verify that the system or task functions properly and overcomes the injected faults as expected by the user. The fault injector is composed of a fault management system that generates test cases and manages injected faults, a dynamic fault injection system that dynamically injects faults into the system or task, a system monitor that monitors state changes before and after fault injection and any abnormal symptoms, and a system monitor that collects output from each component and generates a final report. The fault management system interprets test case specifications written by the user in a certain format and generates fault tasks in a format that can be understood by the dynamic fault injection system. It also generates fault task information to be passed to the result analyzer. The dynamic fault injection system is the core part of the fault injection tool proposed in this paper and directly controls the task being executed to inject faults. The faults injected can be broadly categorized as system faults and task faults, and the injected faults can be classified according to the target execution location, the type of fault, and the probability of occurrence. The system monitor monitors state changes before and after fault injection and any abnormal symptoms, and the system monitor collects output from each component and generates a final report.
Mr. Pyounghwa Lee, IVI Software Engineer, Hyundai Motor Company