IBIR: Bug Report driven Fault Injection
This work addresses the problem of generating realistic software faults for software engineers and testers, improving the relevance of experimental studies based on fault injection.
This paper introduces IBIR, a fault injection tool that creates realistic software faults by reversing code transformation templates from bug report-driven automated program repair systems. IBIR outperforms traditional mutation testing in semantic similarity to original bugs and provides statistically significant better estimations of test effectiveness. When injecting 100 faults, IBIR's faults coupled with real ones in 36% of cases, compared to less than 1% for mutation testing.
Much research on software engineering and software testing relies on experimental studies based on fault injection. Fault injection, however, is not often relevant to emulate real-world software faults since it "blindly" injects large numbers of faults. It remains indeed challenging to inject few but realistic faults that target a particular functionality in a program. In this work, we introduce IBIR, a fault injection tool that addresses this challenge by exploring change patterns associated to user-reported faults. To inject realistic faults, we create mutants by retargeting a bug report driven automated program repair system, i.e., reversing its code transformation templates. IBIR is further appealing in practice since it requires deep knowledge of neither of the code nor the tests, but just of the program's relevant bug reports. Thus, our approach focuses the fault injection on the feature targeted by the bug report. We assess IBIR by considering the Defects4J dataset. Experimental results show that our approach outperforms the fault injection performed by traditional mutation testing in terms of semantic similarity with the original bug, when applied at either system or class levels of granularity, and provides better, statistically significant, estimations of test effectiveness (fault detection). Additionally, when injecting 100 faults, IBIR injects faults that couple with the real ones in 36% of the cases, while mutants from mutation testing inject less than 1%. Overall, IBIR targets real functionality and injects realistic and diverse faults.