A Survey of Software Fault Localization

A Survey of Software Fault Localization

November 2009 | W. Eric Wong and Vidroha Debroy
This paper presents a survey of software fault localization techniques. Software fault localization is a critical and time-consuming activity in program debugging. The goal is to identify the locations of program faults with minimal human intervention. Various methods have been proposed to improve the effectiveness of fault localization. The paper categorizes these methods into traditional, advanced, and other approaches, such as program spectrum-based, statistics-based, program state-based, machine learning-based, and model-based methods. Each method has its own advantages and limitations. Traditional methods include memory dump analysis and print statements, while advanced methods use slicing, execution slices, and program spectra to narrow down the search domain. Statistics-based methods use probabilities to determine the suspiciousness of code. Program state-based methods analyze program states to identify faulty code. Machine learning-based methods use algorithms to learn patterns in execution data. Model-based methods use models to predict and diagnose faults. The paper also discusses important issues such as the effectiveness of fault localization methods, clustering for programs with multiple bugs, the impact of test cases, and faults introduced by missing code. The conclusion is that while many fault localization methods exist, they are not perfect, and further research is needed to improve their effectiveness. The paper emphasizes the importance of choosing the right method based on the specific program and context.This paper presents a survey of software fault localization techniques. Software fault localization is a critical and time-consuming activity in program debugging. The goal is to identify the locations of program faults with minimal human intervention. Various methods have been proposed to improve the effectiveness of fault localization. The paper categorizes these methods into traditional, advanced, and other approaches, such as program spectrum-based, statistics-based, program state-based, machine learning-based, and model-based methods. Each method has its own advantages and limitations. Traditional methods include memory dump analysis and print statements, while advanced methods use slicing, execution slices, and program spectra to narrow down the search domain. Statistics-based methods use probabilities to determine the suspiciousness of code. Program state-based methods analyze program states to identify faulty code. Machine learning-based methods use algorithms to learn patterns in execution data. Model-based methods use models to predict and diagnose faults. The paper also discusses important issues such as the effectiveness of fault localization methods, clustering for programs with multiple bugs, the impact of test cases, and faults introduced by missing code. The conclusion is that while many fault localization methods exist, they are not perfect, and further research is needed to improve their effectiveness. The paper emphasizes the importance of choosing the right method based on the specific program and context.
Reach us at info@futurestudyspace.com
[slides] A Survey on Software Fault Localization | StudySpace