Skip to main content
QUICK REVIEW

[论文解读] Dynamic Code Coverage with Progressive Detail Levels

Alexandre Perez|arXiv (Cornell University)|Jun 19, 2013
Software Testing and Debugging Techniques参考文献 37被引用 5
一句话总结

本文提出DCC(动态代码覆盖率)这一新型故障定位技术,通过从粗粒度代码覆盖率开始,并根据中间故障定位结果逐步细化,从而降低代码插桩开销。该方法在保持诊断准确性的前提下,相较于传统的基于谱的故障定位技术,平均执行时间减少27%,诊断报告大小减少63%。

ABSTRACT

Nowadays, locating software components responsible for observed failures is one of the most expensive and error-prone tasks in the software development process. To improve the debugging process efficiency, some effort was already made to automatically assist the detection and location of software faults. This led to the creation of statistical debugging tools such as Tarantula, Zoltar and GZoltar. These tools use information gathered from code coverage data and the result of test executions to return a list of potential faulty locations. Although helpful, fault localization tools have some scaling problems because of the fine-grained coverage data they need to perform the fault localization analysis. Instrumentation overhead, which in some cases can be as high as 50% is the main cause for their inefficiency. This thesis proposes a new approach to this problem, avoiding as much as possible the high level of coverage detail, while still using the proven techniques these fault localization tools employ. This approach, named DCC, consists of using a coarser initial instrumentation, obtaining only coverage traces for large components. Then, the instrumentation detail of certain components is progressively increased, based on the intermediate results provided by the same techniques employed in current fault localization tools. To assess the validity of our proposed approach, an empirical evaluation was performed, injecting faults in four real-world software projects. The empirical evaluation demonstrates that the DCC approach reduces the execution overhead that exists in spectrum-based fault localization, and even presents a more concise potential fault ranking to the user. We have observed execution time reductions of 27% on average and diagnostic report size reductions of 63% on average.

研究动机与目标

  • 降低基于谱的故障定位(SFL)工具的高插桩开销,其开销可高达50%。
  • 在最小化插桩代码量的同时,保持与SFL相当的诊断准确性。
  • 通过生成更简洁的故障定位报告,提升调试效率。
  • 探索基于中间结果自适应调整粒度的动态、迭代式插桩方法。
  • 通过在实际软件项目中注入故障,对方法进行实证验证。

提出的方法

  • DCC从粗粒度插桩开始,仅收集大型组件(如类)的覆盖率数据。
  • 在初始粗粒度数据上应用标准统计故障定位技术(如Tarantula、GZoltar),以识别高概率故障组件。
  • 基于中间结果,DCC动态提高选定组件的插桩粒度,将覆盖率细化至方法或语句级别。
  • 该过程为迭代式:仅对故障可能性高的组件进行更精细的插桩,从而减少整体插桩范围。
  • 该方法在逐步细化的数据上使用现有的SFL算法,确保与现有故障定位技术的兼容性。
  • 根据中间诊断评分,按组件调整插桩粒度,实现自适应细化。

实验结果

研究问题

  • RQ1是否可使用细节程度较低的代码覆盖率实现与传统SFL相当的诊断准确性?
  • RQ2通过渐进式细节层级降低插桩开销,能否提升调试效率?
  • RQ3使用粗粒度初始插桩并辅以针对性细化,是否能减少执行时间和诊断报告大小?
  • RQ4动态调整插桩粒度对故障定位精度有何影响?
  • RQ5DCC方法能否在实际软件系统中有效应用于注入故障的场景?

主要发现

  • 与传统SFL技术相比,DCC将平均执行时间减少了27%。
  • 诊断报告大小平均减少了63%,从而实现了更简洁的故障排名。
  • 通过在四个实际软件项目中注入故障进行验证,该方法保持了与标准SFL相当的诊断准确性。
  • 动态、迭代的细化策略显著减少了插桩代码量,同时未牺牲故障定位精度。
  • 该方法能有效早期剔除低概率组件,仅在必要位置进行插桩。
  • 实证评估证实,DCC在实际软件系统中注入单个故障的情况下具有可行性与高效性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。