介紹 5 種錯誤定位技巧
Tarantula Set-union Set-intersection Nearest Neighbor Cause Transition
上一篇 Paper 有介紹 多了計算 statement 的 suspiciousness 並且 rank
Coverage-based Methods -> A statement is more likely to be buggy if it is visited more often in failed test cases and less often in passed test cases.
Assume there are one or more passed test cases {P 0, P 1, P 2, …} and one failed test case f. Union : the bug is contained in the set { statements executed by f } – { statements executed by any P i } Intersection : the bug is contained in the set { statements executed by all P i } – { statements executed by f }
Neglect test case 1
The technique performs poorly in practice – sensitive to particular test cases.
Pick a passed test case p which is the nearest to the failed test case f. Distance between f and p could be defined as: the number of statements in f which are not in p. Report f-p as the potential bugs.
This technique is also sensitive to the particular test cases used.
Performs a binary search of the memory states of a program between a passing test case and a failing test case This technique is part of a suite of techniques defined by Zeller and colleagues called Delta Debugging. H. Cleve and A. Zeller. Locating causes of program failures.
Identify the initial set of blamed statements; rank them the highest Find statements of distance 1 from the initial set (in both forward and backward direction); rank them the second highest Find statements of distance 2 and so on.
Finish this paper