Context: Mutation testing is a fault-injection-based technique to help testers generate test cases for detecting specific and predetermined types of faults. Objective: Before mutation testing can be effectively applied to embedded systems, traditional mutation testing needs to be modified. To inject a fault into an embedded system without causing any system failure or hardware damage is a challenging task as it requires some knowledge of the underlying layers such as the kernel and the corresponding hardware. Method: We propose a set of mutation operators for embedded systems using kernel-based software and hardware fault simulation. These operators are designed for software developers so that they can use the mutation technique to test the entire system after the software is integrated with the kernel and hardware devices. Results: A case study on a programmable logic controller for a digital reactor protection system in a nuclear power plant is conducted. Our results suggest that the proposed mutation operators are useful for fault-injection and this is evidenced by the fact that faults not injected by us were discovered in the subject software as a result of the case study. Conclusion: We conclude that our mutation operators are useful for integration testing of an embedded system.
Bibliographical noteFunding Information:
This work was supported in part by the Korea Research Foundation under award KRF-2007-357-D00215, The Ministry of Knowledge Economy (MKE), Korea, under the Information Technology Research Center (ITRC) support program supervised by the National IT Industry Promotion Agency (NIPA) (NIPA-2011-(C1090-1131-0008)) and the USA National Science Foundation (NSF DUE-1023071).
- Embedded systems
- Fault injection
- Integration testing
- Mutation operators