Skip to main content
QUICK REVIEW

[论文解读] ASTOR: Evolutionary Automatic Software Repair for Java

Matías Martínez, Martin Monperrus|arXiv (Cornell University)|Oct 24, 2014
Software Testing and Debugging Techniques参考文献 11被引用 6
一句话总结

ASTOR 是一个针对 Java 的开源、可扩展的进化式自动软件修复框架,实现了 GenProg、PAR 模板的子集以及基于变异测试的方法,采用遗传编程和测试套件验证。它通过提供共享的故障定位、修复验证和可扩展组件,在 GPL v2 许可证下实现了修复技术的可重现评估与比较。

ABSTRACT

Context: During last years, many automatic software repair approaches have been presented by the software engineering research community. According to the corresponding papers, these approaches are able to repair real defects from open source projects. Problematic: Some previous publications in the automatic repair field do not provide the implementation of theirs approaches. Consequently, it is not possible for the research community to re-execute the original evaluation, to set up new evaluations (for example, to evaluate the performance against new defects) or to compare approaches against each others. Solution: We propose a publicly available automatic software repair tool called Astor. It implements three state-of-the-art automatic software repair approaches in the context of Java programs (including GenProg and a subset of PAR's templates). The source code of Astor is licensed under the GNU General Public Licence (GPL v2).

研究动机与目标

  • 为解决自动软件修复研究中的可重现性危机,提供公开可用的、开源的修复技术实现。
  • 统一多种最先进的修复方法中的故障定位与修复验证,以实现一致的评估。
  • 使研究人员能够使用一个通用、模块化的框架,对现有修复方法进行比较、扩展和重新评估。
  • 通过可自定义的组件(如测试用例优先级排序和代码重用策略)支持可扩展性。
  • 提供一个可重用的通用框架,将修复逻辑与核心进化计算和测试基础设施解耦。

提出的方法

  • ASTOR 使用遗传编程,在抽象语法树(AST)层面通过 Spoon 库对源代码变换,演化程序变体。
  • 它维护一个程序变体的种群,每代通过在父变体上应用变换生成子变体。
  • 基于失败测试用例的数量评估适应度;目标是使失败测试数为零,表示程序已修复。
  • 统一的故障定位模块使用 Ochiai 公式计算可疑度分数,并采用加权随机选择可疑语句进行变换。
  • 修复验证通过运行失败的测试用例和之前通过的测试用例来完成,以确保正确性和回归安全性。
  • 该框架通过可插拔组件(如测试用例优先级排序和代码重用策略,例如局部与全局策略)支持可扩展性。

实验结果

研究问题

  • RQ1统一的、开源的框架是否能提升自动软件修复研究中的可重现性与可比性?
  • RQ2在相同框架中,共享的故障定位技术(Ochiai 公式)在不同修复方法中的有效性如何?
  • RQ3通用的修复验证流水线在多大程度上能确保不同修复策略的一致正确性并防止回归?
  • RQ4在一个框架中集成多种修复技术(GenProg、PAR 模板、基于变异的修复)对可维护性和可扩展性有何影响?
  • RQ5该框架能否支持可自定义的修复工作流,例如可疑语句的替代导航策略?

主要发现

  • ASTOR 在一个可重用的框架中成功实现了三种最先进的修复方法——GenProg、PAR 模板的子集以及基于变异测试的方法。
  • 该框架使用 Ochiai 公式进行故障定位,并采用加权随机策略选择可疑语句,确保所有修复技术的一致性。
  • ASTOR 中的所有修复方法共享相同的基于测试套件的验证流水线,该流水线同时检查正确性(通过失败测试)和回归安全性(通过之前通过的测试)。
  • 源代码在 https://github.com/SpoonLabs/astor 公开发布,采用 GPL v2 许可证,支持完全可重现性与社区扩展。
  • ASTOR 的模块化架构支持可扩展性,例如可集成测试用例优先级排序或自定义的代码重用策略,而无需修改核心修复逻辑。
  • 通过统一故障定位与验证,ASTOR 实现了对不同修复技术在相同基准上更公平的比较与一致的评估。

更好的研究,从现在开始

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

无需绑定信用卡

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