classifying field crash reports for fixing bugs: a case study of mozilla firefox

摘要:

这篇论文探讨了如何对Mozilla Firefox的现场崩溃报告进行分类,以便更有效地修复软件错误。研究指出,现有的崩溃报告分组方法可能不够精确,导致由同一错误引起的崩溃报告被分到不同组,或一组中包含多个错误引起的崩溃报告,从而延长了错误修复时间。为此,研究人员提出了一种两级分组方法,并通过实证研究验证了其有效性。

引言:

随着软件系统复杂性的增加,自动收集和分析崩溃报告变得至关重要。Mozilla Firefox每天接收数百万崩溃报告,直接分析每一份报告不现实,因此需要有效的分组方法。现有方法可能将同一错误的报告分到不同组,或一组包含多个错误的报告,这增加了开发者的工作难度。

方法论:

研究人员提出了一种两级分组方法:

  1. 第一级分组: 按照堆栈跟踪的顶部方法签名进行分组,这是Mozilla当前的做法。
  2. 第二级分组: 使用Levenshtein距离比较堆栈跟踪的相似性,进一步细分组,确保每个子组包含由单个错误引起的崩溃报告。

Levenshtein距离用于衡量两个字符串的差异,通过计算转变一个字符串为另一个字符串所需的编辑操作次数。

结果:

研究发现:

  • 80%的错误在与之关联的崩溃报告的堆栈跟踪中出现,表明堆栈跟踪对错误定位非常有用。
  • 当多个错误关联到同一崩溃类型时,修复时间显著延长。
  • 两级分组方法效果显著,88%的子组包含单一错误引起的崩溃报告,且平均98%的崩溃报告来自同一错误。

讨论:

该方法通过减少错误定位时间,提高了软件维护效率。研究人员使用代表性堆栈跟踪优化计算复杂性,确保方法的高效性。论文还讨论了研究的局限性,如测量误差和外部有效性,并建议在其他软件系统中进行进一步研究。

结论:

这篇论文提供了一种有效的崩溃报告分类方法,显著提高了错误修复效率。其两级分组方法不仅适用于Firefox,也可能在其他软件系统中发挥作用,但可能需要根据具体情况进行调整。

批判性评价:

尽管研究结果令人鼓舞,但仍需考虑方法在更大数据集中的可扩展性。此外,Levenshtein距离是否为比较堆栈跟踪的最佳方法值得进一步探讨。该研究为软件维护领域提供了有价值的见解,值得在更广泛的背景下进行验证和应用。