当前位置: X-MOL 学术Empir. Software Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Locating faults with program slicing: an empirical analysis
Empirical Software Engineering ( IF 3.5 ) Pub Date : 2021-04-01 , DOI: 10.1007/s10664-020-09931-7
Ezekiel Soremekun , Lukas Kirschner , Marcel Böhme , Andreas Zeller

Statistical fault localization is an easily deployed technique for quickly determining candidates for faulty code locations. If a human programmer has to search the fault beyond the top candidate locations, though, more traditional techniques of following dependencies along dynamic slices may be better suited. In a large study of 457 bugs (369 single faults and 88 multiple faults) in 46 open source C programs, we compare the effectiveness of statistical fault localization against dynamic slicing. For single faults, we find that dynamic slicing was eight percentage points more effective than the best performing statistical debugging formula; for 66% of the bugs, dynamic slicing finds the fault earlier than the best performing statistical debugging formula. In our evaluation, dynamic slicing is more effective for programs with single fault, but statistical debugging performs better on multiple faults. Best results, however, are obtained by a hybrid approach: If programmers first examine at most the top five most suspicious locations from statistical debugging, and then switch to dynamic slices, on average, they will need to examine 15% (30 lines) of the code. These findings hold for 18 most effective statistical debugging formulas and our results are independent of the number of faults (i.e. single or multiple faults) and error type (i.e. artificial or real errors).



中文翻译:

用程序切片定位故障:一项实证分析

统计故障定位是一种易于部署的技术,用于快速确定故障代码位置的候选对象。但是,如果程序员必须在最上面的候选位置之外搜索故障,则更传统的跟踪沿动态切片的依赖关系的技术可能会更适合。在对46个开源C程序中的457个bug(369个单故障和88个多故障)的大型研究中,我们比较了统计故障定位与动态切片的有效性。对于单个故障,我们发现动态切片比性能最佳的统计调试公式有效八个百分点。对于66%的错误,动态切片比最佳性能的统计调试公式更早地发现故障。在我们的评估中,动态切片对于具有单个故障的程序更有效,但是统计调试在多个故障上的表现更好。但是,最好的结果是通过混合方法:如果程序员首先从统计调试中最多检查五个最可疑的位置,然后平均切换到动态切片,则他们将需要检查15%(30行)的代码。这些发现适用于18个最有效的统计调试公式,我们的结果与故障数量(即单个或多个故障)和错误类型(即人为或实际错误)无关。

更新日期:2021-04-01
down
wechat
bug