A new perspective on the competent programmer hypothesis through the reproduction of real faults with repeated mutations

Zaheed Ahmed, Eike Schwass, Steffen Herbold, Fabian Trautsch, Jens Grabowski

Abstract

The 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.
Keywords: 
competent programmer hypothesis, mutation testing, reproduction of faults
Document Type: 
Journal Articles
Language: 
English
Publisher: 
Wiley
Journal: 
Software Testing, Verification & Reliability
Pages: 
20
Month: 
2
Year: 
2024
DOI: 
https://doi.org/10.1002/stvr.1874
2024 © Software Engineering For Distributed Systems Group

Main menu 2