Papers /

Jeffrey-SSTA 2008

Reading

Outdoors

Games

Hobbies

LEGO

Food

Code

Nook

sidebar

Jeffrey-SSTA 2008

Fault Localization Using Value Replacement

Jeffrey, Gupta, Gupta

fault localization debugging software engineering

@conference{jeffrey:ssta-2008,
  title={Fault Localization Using Value Replacement},
  author={Jeffrey, D. and Gupta, N. and Gupta, R.},
  booktitle={International Symposium on Software Testing and Analysis},
  pages={167--178},
  year={2008},
  organization={{ACM}}
}

Debugging is necessary since software development is so human intensive

  • Looking to automate the debugging process

Tarantula: Previous statistical work

  • Statements primarily executed by failing runs are more likely to have problems than statements primarily run by successful runs

This work looks for statements that can be shown to be modifiable to make the result correct

Statements map from used values (variables) and defined values (outcomes)

An Interesting Value Mapping Pair (IVMP) is a pair of such value maps, such that replacing the alternate with the original then the incorrect output of the run becomes correct

  • Alternate values are taken from Value Profile, constructed from all values seen in all test runs, rather than near infinite selection
  • Can also be done if output is not known but can be determined as being improved; e.g., if the system crashes, but swapping values makes it not crash, that is an improvement

Seems like many of the results could be very hard to decipher, particularly for indirect IVMPs such as for constant assignemnts

Complexity runs in time proportional to number of failing runs, number of statements, and elements in value profile

  • Mostly dominated by length of execution run (number of statements)
  • Value profile cut down by applying heuristics, reducing to constant number of span representatives
  • Doesn't need large number of runs for good results

Bug could be elsewhere than the IVMP, so they have to be ranked

  • Dependence cause
  • Compensation cause

Rank statements according to notion that statements associated with IVMPs in more failing runs are more likely to be faulty

Cut cut down on number of alternates via simple heuristics

  • Using min, max, average, etc

Demonstration run within valgrind infrastructure

Experimental process seems reasonable, particularly in that they accounted somewhat for potential biasing in the test case construction

  • But results don't really present statistical significance, i.e., of outperforming Tarantula

Still talking about tens and hundreds of thousands of re-executions

Doesn't work very well on floating point values...

  • Too difficult to make output come out correct

Should be combined with program slicing to only consider those aspects

  • But this requires correlating particular elements of the output to a slice

Can speed up executions, checkpointing and skipping large sequences

Multiple faults diminishes the value of the approach!

Doesn't really help with memory related faults, as you can't just swap in random pointer values

Recent Changes (All) | Edit SideBar Page last modified on March 04, 2010, at 10:06 PM Edit Page | Page History