Fault Localization Using Function Call Frequencies
Béla Vancsics, Ferenc
Horváth, Attila Szatmári and Árpád
Beszédes
In traditional Spectrum-Based Fault Localization (SBFL),
hit-based spectrum is used to estimate a program element’s
suspiciousness to contain a fault, i.e., only the binary
information is used if the code element was executed by the test
case or not. Count-based spectra can potentially improve the
localization effectiveness due to the number of executions also
being available. In this work, we use function-level granularity
and define count-based spectra which use function call
frequencies. We investigate the naive approach, which simply
counts the function call instances. We also define a novel method
which is based on counting the different function call contexts,
i.e., the frequency of the investigated function occurring in
unique call stack instances during test execution. The basic
intuition is that if a function is called in many different
contexts during a failing test case, it will be more probable to
be accountable for the fault. We empirically evaluated the fault
localization capability of different variations of the approach
and compared them to 9 traditional SBFL techniques using the
Defects4J benchmark. We show that: (i) naive counts result in
worse rank positions than the hit-based approach, but (ii) unique
counts produce better rank positions with some of the algorithm
variants.
Keywords: Spectrum-Based
Fault Localization, Function Call Frequency, Call Stacks, Testing,
Debugging.
Back