引用本文:娄一翎,张令明,郝丹,张皓天,张路.自适应推导下的统一化调试加速技术.软件学报,2022,33(2):377-396
【打印本页】   【下载PDF全文】   查看/发表评论  【EndNote】   【RefMan】   【BibTex】
←前一篇|后一篇→ 过刊浏览    高级检索
本文已被:浏览 2945次   下载 5617 本文二维码信息
码上扫一扫!
分享到: 微信 更多
自适应推导下的统一化调试加速技术
娄一翎1,2, 张令明3, 郝丹1,2, 张皓天4, 张路1,2
1.高可信软件技术教育部重点实验室(北京大学), 北京 100871;2.北京大学信息科学技术学院, 北京 100871;3.Department of Computer Science, University of Illinois at Urbana-Champaign, Illinois 61822, USA;4.蚂蚁金融服务集团, 浙江 杭州 310099
摘要:
在传统调试过程中, 缺陷定位通常作为程序修复的前置步骤. 最近, 一种新型调试框架(统一化调试)被提出. 不同于传统调试中缺陷定位和程序修复的单向连接方式, 统一化调试首次建立了定位与修复之间的双向连接机制, 从而达到同时提升两个领域的效果. 作为首个统一化调试技术, ProFL利用程序修复过程中伴随产生的大量补丁执行信息逆向地提升已有缺陷定位技术的效果. 统一化调试技术不仅修复了可被修复的缺陷, 而且也为不能被自动修复技术修复的缺陷提供了有效的调试线索. 虽然统一化调试是一个很有前景的研究方向, 但其在补丁验证过程中涉及到了大量的测试用例执行(比如百万量级的测试执行), 因此时间开销问题严重. 提出一种针对于统一化调试框架的加速技术(AUDE), 该技术通过减少对缺陷定位效果无提升的测试执行, 以提升统一化调试的效率. 具体来说, AUDE首先通过马尔可夫链蒙特卡洛采样方法构建补丁执行的初始序列, 随后在补丁执行过程中将已执行的补丁信息作为反馈信息, 自适应性地估计每一个未执行补丁可能提供有效反馈信息的概率. 在广泛使用的数据集Defects4J上对该技术进行了验证, 发现AUDE在显著加速ProFL的同时, 并没有降低其在缺陷定位和程序修复的效果. 例如: 在减少了ProFL中70.29%的测试执行的同时, AUDE仍在Top-1/Top-3/Top-5指标上与ProFL保持了相同的定位效果.
关键词:  软件质量保障  软件测试  软件调试  缺陷定位  缺陷修复
DOI:10.13328/j.cnki.jos.006347
分类号:
基金项目:国家重点研发计划(2017YFB1001803); 国家自然科学基金(61872008)
Accelerating Unified Debugging via Adaptive Inference
LOU Yi-Ling1,2, ZHANG Ling-Ming3, HAO Dan1,2, ZHANG Hao-Tian4, ZHANG Lu1,2
1.Key Laboratory of High Confidence Software Technologies of Ministry of Education (Peking University), Beijing 100871, China;2.School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China;3.Department of Computer Science, University of Illinois at Urbana-Champaign, Illinois 61822, USA;4.Ant Financial Services Group, Hangzhou 310099, China
Abstract:
Fault localization and program repair techniques have been extensively studied for over decades; their only connection is that fault localization serves as a supplier diagnosing potential buggy code for automated program repair. Recently, unified debugging has been proposed to unify fault localization and program repair in the other direction for the first time to boost both areas. ProFL, the first work on unified debugging, opens a new dimension that the large volume of patch execution information during program repair in turn can help boost state-of-the-art fault localization. Note that even state-of-the-art program repair techniques can only fix a small ratio of real bugs (e.g., < 20% for Defects4J) and simply abort for the vast majority of unfixed bugs. In contrast, unified debugging not only directly fixes bugs when possible, but also provides debugging hints for bugs that cannot be automatically fixed (e.g., the patch execution information from such unsuccessful repair can still help boost fault localization for manual repair). Although demonstrated to be a promising direction, unified debugging relies on massive test executions (i.e., million test executions) and can cost hours for execution. This work proposes AUDE to accelerate unified debugging by reducing test executions that provide little helpful feedback for improving fault localization. Specifically, AUDE first constructs an initial execution order of patches guided by Markov chain Monte Carlo sampling strategy, and then adaptively estimates the likelihood of each patch being informative during patch execution on-the-fly. The results on the widely-used Defejcts4J benchmark show that AUDE significantly accelerates ProFL by reducing 70.29% of test executions with negligible effectiveness drop in both fault localization and program repair, e.g., AUDE can localize the same number of bug methods at Top-1/Top-3/Top-5 as ProFL.
Key words:  software quality assurance  software testing  software debugging  fault localization  program repair

引用本文:
【打印本页】   【下载PDF全文】   查看/发表评论  【EndNote】   【RefMan】   【BibTex】
←前一篇|后一篇→ 过刊浏览    高级检索
本文已被:浏览次   下载  
分享到: 微信 更多
摘要:
关键词:  
DOI:
分类号:
基金项目:
Abstract:
Key words: