Affiliation:
1. Institute of Computer Science University of Goettingen Goettingen Germany
2. University of Kotli Azad Jammu and Kashmir Kotli Pakistan
3. Faculty of Computer Science and Mathematics University of Passau Passau Germany
Abstract
AbstractThe competent programmer hypothesis is one of the fundamental assumptions of mutation testing, which claims that most programmers are competent enough to create correct or almost correct source code. This implies that faults should usually manifest through small variations of the correct code. Consequently, researchers assumed that the synthetic faults injected in source code through the mutation operators closely resemble the real faults. Unfortunately, it is still unclear whether the competent programmer hypothesis holds, as past research presents contradictory claims. Within this article, we provide a new perspective on the competent programmer hypothesis and its relation to mutation testing. We try to re‐create real‐world faults through chains of mutations to understand if there is a direct link between mutation testing and faults. The lengths of these paths help us to understand if the source code is really almost correct, or if large variations are required. Our experiments used a state‐of‐the‐art benchmark database of real faults named Defects4J 2.0.0. It contains 835 reproducible real‐world faults in 17 open‐source projects that comprise a total of 1044 bug‐fix pairs of files. Our results indicate that while the competent programmer hypothesis seems to be true, mutation testing is missing important operators to generate representative real‐world faults.
Reference34 articles.
1. An experimental determination of sufficient mutant operators
2. Hints on Test Data Selection: Help for the Practicing Programmer
3. DemilloRA MathurAP.On the use of software artifacts to evaluate the effectiveness of mutation analysis for detecting errors in production software. Technical Report SERC‐TR‐92‐P Purdue Univ. 1992.
4. Investigations of the software testing coupling effect