  Despite being one of the most basic tasks in software development, debugging
is still performed in a mostly manual way, leading to high cost and low
performance. To address this problem, researchers have studied promising
approaches, such as Spectrum-based Fault Localization (SFL) techniques, which
pinpoint program elements more likely to contain faults. This survey discusses
the state-of-the-art of SFL, including the different techniques that have been
proposed, the type and number of faults they address, the types of spectra they
use, the programs they utilize in their validation, the testing data that
support them, and their use at industrial settings. Notwithstanding the
advances, there are still challenges for the industry to adopt these
techniques, which we analyze in this paper. SFL techniques should propose new
ways to generate reduced sets of suspicious entities, combine different spectra
to fine-tune the fault localization ability, use strategies to collect
fine-grained coverage levels from suspicious coarser levels for balancing
execution costs and output precision, and propose new techniques to cope with
multiple-fault programs. Moreover, additional user studies are needed to
understand better how SFL techniques can be used in practice. We conclude by
presenting a concept map about topics and challenges for future research in
SFL.
