The most important software fault localization techniques published through 2014 are reviewed and classified in this paper. Concretely, the information sources of this survey are 331 papers and 54 PhD and master’s theses published from 1977 to November 2014. All these works were collected by the authors and classified into eight categories that are also used to structure the survey: slice-based, spectrum-based, statistics-based, program state-based, machine learning-based, data mining-based, model-based, and miscellaneous techniques.
The authors have done a good job collecting the papers, classifying them, and interconnecting their contributions and aims in such a way that, most of the time, the reading has an underlying history that tells you why and how each technique solves the problems of a previous technique; at the same time, it has drawbacks that are in turn improved by a later technique. This produces a chain of techniques that explains their evolution.
My main concern about this survey is that it is excessively ambitious. It tries to explain all fault localization techniques, and this is impossible in 34 pages, especially considering that there are surveys for only one of the eight categories, for example, slicing-based techniques, with 48 pages. In this respect, as an expert in program slicing, I found a lot of important papers omitted, and I wonder if the same happened with the other categories where I am not an expert. My feeling was that in each section, the authors describe (correctly and with good structure) one of the multiple paths of the evolution of this category, and this is done using a sequence of papers. I would have preferred to see an explanation of the fundamentals of each category of techniques and then a taxonomy of subareas of research where the papers described could have been placed. Using a sequence of papers as the conductor of the discourse does not provide an overall overview of this area of research.
I would have liked to see this survey as a complement to the other existing surveys, but, unfortunately, this goal is not achieved. For instance, I missed pointers to other, more specific surveys where deeper explanations, comparisons, and examples can be found about some of the techniques overviewed.
Apart from these issues, the paper succeeds in identifying the main topics and goals of the categories discussed. It provides very interesting statistical information about the evolution of the research area. In particular, it shows the historical trending of the different categories of fault localization techniques using information about the number of publications per year in each category. Another interesting and useful bit of information provided is a description of the main tools and benchmarks used in this area of research.