Skip to main content
QUICK REVIEW

[论文解读] Automated Fault Localization Using Potential Invariants

Brock Pytlik, Manos Renieris|ArXiv.org|Oct 18, 2003
Software Testing and Debugging Techniques参考文献 5被引用 110
一句话总结

本文提出了一种使用潜在不变量——从执行轨迹静态推导出的程序不变量——的自动化故障定位技术,通过对比失败运行与成功运行模型的行为来识别错误。尽管理论基础具有潜力,但实验结果表明其效果有限:在 print_tokens 中仅有 484 个故障运行中的一个产生了有意义的不变量差异,tcas 中则一个也未产生,表明仅靠潜在不变量不足以实现稳健的故障定位,除非结合更丰富的不变量集合或领域特定的调优。

ABSTRACT

We present a general method for fault localization based on abstracting over program traces, and a tool that implements the method using Ernst's notion of potential invariants. Our experiments so far have been unsatisfactory, suggesting that further research is needed before invariants can be used to locate faults.

研究动机与目标

  • 开发一种使用程序轨迹和不变量的通用自动化故障定位方法。
  • 使程序员能够通过对比失败运行与成功执行的模型来识别错误。
  • 评估使用从关系模式(如相等、求和、小于)推导出的潜在不变量来精确定位软件故障的可行性。
  • 评估良好运行与不良运行之间的不变量差异是否能可靠地突出实际错误。

提出的方法

  • 使用 Daikon 的代码插桩工具对源代码进行插桩,以收集良好输入和不良输入的执行轨迹。
  • 利用预定义的关系模式(相等、求和、小于、常量相等)从轨迹中提取潜在不变量。
  • 通过计算多个成功运行的谱(活跃不变量)的交集,构建正确行为的模型。
  • 将失败运行的谱与良好运行的模型进行对比,以识别可能指示故障的不变量差异。
  • 使用值集和成对值集来追踪变量范围,以减少因笛卡尔积不准确导致的误报。
  • 在 Siemens 套件中的真实程序(tcas 和 print_tokens)上应用该方法,故障为人工注入。

实验结果

研究问题

  • RQ1能否从程序轨迹中提取的潜在不变量有效定位软件故障?
  • RQ2将失败运行的谱与成功运行的模型进行对比,是否能揭示指向实际错误的有意义差异?
  • RQ3随着更多成功执行的加入,良好运行的模型稳定性如何?
  • RQ4该方法产生的不变量差异在语义上是否与实际故障相关?

主要发现

  • 良好运行的模型在关系不变量上快速稳定,但即使在数百次运行后,值集仍持续增长,表明收敛性差。
  • 在 tcas 套件的 568 个故障运行中,与良好运行的稳态模型对比时,无一产生任何不变量差异。
  • 在 print_tokens 套件中,484 个故障运行中仅有 1 个产生了不变量差异,且这些差异与实际错误无关。
  • 在 print_tokens 中人工注入的故障成功触发了两个相关不变量违规,表明该方法在受控情况下具有潜力。
  • 未能检测到大多数真实故障,表明当前不变量模式集合不足以支持通用故障定位。
  • 结果表明,仅靠潜在不变量不足以实现可靠的故障定位,未来研究需探索更丰富的不变量集合或领域特定的改进方案。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

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