Chapter 9. An Automated Fault Prediction System

Elaine J. Weyuker

Thomas J. Ostrand

Everyone wants their software to be perfect and contain no faults (or defects or bugs). Typically, developers use software testing techniques to identify these problems so that they can be removed, but when the software system is large, thorough testing can require a huge amount of resources.

Accurate prediction of the parts of a system that are most likely to have faults can provide developers, testers, and managers with a large head start on finding problems, increase the efficiency of testing, and help make the most of resources that are usually in short supply. Over the past several years, we have built models that predict the expected number of defects in each file of a software system in its next release. The files can then be arranged in decreasing order of predicted numbers of faults, so the files most likely to have defects are easily identified.

We have now used one of these prediction models to build an automated tool that can help a project manager prioritize effort for the files predicted to be most defect-prone. For example, the project manager might schedule more test time for these files, assign the team’s best developers to make changes to them, or do code inspections for the files predicted to be most problematic. This should lead to faster identification of defects and therefore to reduced testing costs. It might also free up resources, allowing additional testing for the entire system, ...

Get Making Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.