What Makes Software Bugs Escape Testing? Evidence from a Large-Scale Empirical Study
Domenico Cotroneo, Giuseppe De Rosa, Cristina Improta, Benedetta Gaia Varriale
TLDR
This study analyzes 14k defects to show post-release bugs escape testing due to evolutionary dynamics in older, frequently modified code.
Key contributions
- Characterizes 14k pre/post-release defects in C/C++ and Java using diverse software metrics.
- Finds post-release bugs concentrate in older, frequently modified, high-churn code components.
- Shows residual defects stem from evolutionary/process dynamics, not just code structure.
Why it matters
This paper provides crucial insights into why software bugs escape testing and manifest in production. It shifts focus from pre-release to post-release defects, suggesting that testing efforts should target mature and complex code regions. This can significantly improve software reliability.
Original Abstract
Understanding how software defects manifest and evolve in production environments is critical for improving reliability. While previous research has largely focused on pre-release defects, the nature of residual faults, i.e., those escaping testing and surfacing post-release, remains poorly understood. This paper presents a large-scale characterization of pre- and post-release defects across C/C++ and Java systems, encompassing over 14k defects mined from open-source projects. We employ a broad suite of software metrics to capture diverse code attributes such as complexity, size, structure, and development history. Results show that post-release defects are concentrated in older, frequently modified, and high-churn components, typically requiring longer and more complex fixes than pre-release ones. These findings highlight that residual defects arise more from evolutionary and process dynamics than code structure alone, suggesting that reliability engineering should prioritize targeted testing in mature and complex code regions.
📬 Weekly AI Paper Digest
Get the top 10 AI/ML arXiv papers from the week — summarized, scored, and delivered to your inbox every Monday.