当前位置: X-MOL 学术IEEE Trans. Softw. Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Accelerating Patch Validation for Program Repair With Interception-Based Execution Scheduling
IEEE Transactions on Software Engineering ( IF 7.4 ) Pub Date : 2024-01-30 , DOI: 10.1109/tse.2024.3359969
Yuan-An Xiao 1 , Chenyang Yang 2 , Bo Wang 3 , Yingfei Xiong 1
Affiliation  

Long patch validation time is a limiting factor for automated program repair (APR). Though the duality between patch validation and mutation testing is recognized, so far there exists no study of systematically adapting mutation testing techniques to general-purpose patch validation. To address this gap, we investigate existing mutation testing techniques and identify five classes of acceleration techniques that are suitable for general-purpose patch validation. Among them, mutant schemata and mutant deduplication have not been adapted to general-purpose patch validation due to the arbitrary changes that third-party APR approaches may introduce. This presents two problems for adaption: 1) the difficulty of implementing the static equivalence analysis required by the state-of-the-art mutant deduplication approach; 2) the difficulty of capturing the changes of patches to the system state at runtime. To overcome these problems, we propose two novel approaches: 1) execution scheduling, which detects the equivalence between patches online, avoiding the static equivalence analysis and its imprecision; 2) interception-based instrumentation, which intercepts the changes of patches to the system state, avoiding a full interpreter and its overhead. Based on the contributions above, we implement ExpressAPR, a general-purpose patch validator for Java that integrates all recognized classes of techniques suitable for patch validation. Our large-scale evaluation with four APR approaches shows that ExpressAPR accelerates patch validation by 137.1x over plain validation or 8.8x over the state-of-the-art approach, making patch validation no longer the time bottleneck of APR. Patch validation time for a single bug can be reduced to within a few minutes on mainstream CPUs.

中文翻译:

通过基于拦截的执行调度加速程序修复的补丁验证

补丁验证时间长是自动程序修复(APR)的限制因素。尽管认识到补丁验证和突变测试之间的二元性,但迄今为止还没有系统地将突变测试技术应用于通用补丁验证的研究。为了解决这一差距,我们研究了现有的突变测试技术,并确定了五类适合通用补丁验证的加速技术。其中,由于第三方 APR 方法可能引入任意更改,突变模式和突变重复数据删除尚未适应通用补丁验证。这提出了两个适应问题:1)实现最先进的突变体重复数据删除方法所需的静态等价分析的难度;2)运行时捕获补丁对系统状态的变化的难度。为了克服这些问题,我们提出了两种新颖的方法:1)执行调度,在线检测补丁之间的等价性,避免静态等价分析及其不精确性;2)基于拦截的检测,拦截系统状态补丁的变化,避免完整的解释器及其开销。基于上述贡献,我们实现了 ExpressAPR,这是一个用于 Java 的通用补丁验证器,集成了所有公认的适合补丁验证的技术类别。我们对四种 APR 方法的大规模评估表明,ExpressAPR 的补丁验证速度比普通验证快 137.1 倍,比最先进的方法快 8.8 倍,使补丁验证不再是 APR 的时间瓶颈。在主流 CPU 上,单个错误的补丁验证时间可以缩短到几分钟之内。
更新日期:2024-01-30
down
wechat
bug