收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

基于传播链的缺陷定位及修复技术研究

李唯实  
【摘要】:缺陷作为软件系统设计和维护过程中不可避免的产物,随着软件系统的规模和复杂程度的增加也在不断增加。将软件缺陷的定位与修复工作进行自动化,对于提升软件调试效率以及软件质量有着重要意义。多年来学术界和工业界一直致力于高效的、准确的缺陷定位和自动修复技术的研究,取得了不少进展。然而由于软件缺陷作用机理的复杂性,目前的缺陷定位和自动修复技术仍然面临很大挑战。本文基于软件执行过程中错误的传播过程,对现有的缺陷定位技术以及基于缺陷定位的自动修复技术修复效果进行研究分析,并针对缺陷定位、补丁生成以及补丁验证三个方面,研究基于测试用例聚类的缺陷定位优化技术、基于可疑代码集过滤的程序自动修复技术以及基于测试用例分组的迭代修复技术,提出了一系列提高缺陷定位能力和自动修复能力的优化技术,并通过对大型开源软件真实历史错误进行缺陷定位和修复实验,依据科学统计和度量方法验证了这些优化技术的效能。论文的主要研究工作及创新点如下:1)从缺陷容忍和缺陷排除的角度出发,对现有的程序自动修复工具的修复效果进行分析在研究领域,缺陷容忍和缺陷排除是两类主流的提升软件可靠性和安全性的方式。现有的程序自动修复工具均专注于通过补丁生成的方式来修复目标程序暴露出来的故障,却忽略了对修复效果的分析研究。本文通过收集两种主流的软件自动修复工具:Genprog以及CETI所生成的修复补丁,分析各个修复补丁中所修改的代码与目标程序中的软件缺陷之间的关联性,研究现有修复工具的修复效果是倾向于实现缺陷容忍还是缺陷排除。此外,本文还提出了缺陷复杂程度和错误深度的概念,通过缺陷所涉及的代码数来简单表示缺陷的复杂程度,以及通过从缺陷到失效所经过的传播链的长度和缺陷所影响的错误传播链的数量来定义程序中所包含错误的深度,并分析统计了缺陷的复杂程度、错误深度与最终修复效果(生成补丁是属于缺陷容忍还是缺陷排除?)之间的关联程度。分析结果表明,现有程序自动化修复工具更多地是以缺陷容忍方式而不是缺陷排除方式来修复目标程序,缺陷的复杂程度越低、错误深度越小,就越可能通过缺陷排除的方式进行修复,反之,则只能通过缺陷容忍的方式进行修复。2)提出了基于测试用例聚类的缺陷定位技术优化方法基于程序谱的缺陷定位技术(SFL)是目前最为流行的一种缺陷定位技术,然而由于其是根据测试用例集来进行统计定位缺陷的,它的定位精度必然受到巧合正确性现象(coincidental correctness)的影响。巧合正确性是指在测试用例执行过程中,缺陷所在代码被执行,但缺陷并未被激活或错误的传播并未导致失效的情况,由于sfl是根据执行测试用例所覆盖的代码以及执行结果来统计得到各个程序代码为缺陷所在的可疑度,巧合正确的测试用例越多,其定位缺陷的精度就越受影响。本文通过对部分缺陷程序进行缺陷定位实验,观察到在巧合正确的测试用例之间,测试用例执行过程中的错误的传播链之间具有很高的相似性,基于这个观测结果,假设在执行所有巧合正确的测试用例时,其行为之间均具有很高的相似度,并提出了一种基于聚类分析的缺陷定位优化方法tsar(testcaseselectionandreconsitution),通过将测试用例进行聚类,并基于聚类来构建新的覆盖矩阵来进行缺陷定位的可疑度计算,从而尽可能地削弱巧合正确性现象对sfl的定位精度的影响。实验结果表明,在大部分情况下,通过tsar能有效提高sfl的定位精度。3)提出了基于可疑代码集过滤的程序自动修复技术优化方法目前,自动化的程序修复技术往往是通过修改一处或多处的代码来产生修复补丁,这些可进行修改的代码集合通常是通过缺陷定位技术来得到的,且被称为可疑代码集。然而,现有的可疑代码集中往往包含大量与成功修复无关的代码,这些代码影响了自动修复的效率。本文提出了一种过滤可疑代码集中无用代码的方法sfcsf(suspiciousfaultycodesnippetfiltering),在保证修复成功率的同时可以有效地减少可疑代码集的大小。sfcsf依托于基于程序谱的缺陷定位(sbfl)技术来获得各个代码的可疑值。基于错误的传播链,sfcsf只从可疑代码集中过滤出在错误传播链上那些可疑值即将发生变化的节点处代码作为过滤后的可疑代码集进行自动修复。实验结果表明了sfcsf在大多数情况下能够大大提高了自动修复工具的修复效率,但同时,sfcsf的有效性也受到了测试用例集的制约:程序谱过于相似的测试用例集将使得sfcsf失效。4)提出了基于测试用例分组的迭代修复技术在补丁验证阶段,自动化的程序修复技术往往使用测试用例集来验证所生成补丁的有效性:只有使得所有测试用例的执行结果均正确的补丁才是正确的修复补丁。这种验证方式表明现有的自动化的程序修复技术仍是基于缺陷排除的思想来生成并验证补丁的,而忽略了部分修复的可能性。而本文之前的研究表明,修复结果大部分是缺陷容忍的。自动修复技术的目标与结果之间的矛盾性使得修复的成功率和效率受到很大影响,特别是针对复杂缺陷,现有的自动修复技术的修复效果并不理想。本文从实现缺陷容忍的角度出发,提出了一种基于测试用例分组的迭代修复方法,该方法根据测试用例的代码执行信息将测试用例进行分组,并基于迭代的方式对程序进行修复:每次迭代的目标在于生成能够满足一组或多组测试用例的中间补丁,通过多次迭代,最终获得满足所有测试用例的修复补丁。实验结果显示,本文方法能够大大提高对程序缺陷特别是复杂缺陷的修复能力。


知网文化
【相似文献】
中国期刊全文数据库 前10条
1 叶钢;李重文;余丹;马世龙;;基于非参数假设检验的程序缺陷定位方法[J];北京航空航天大学学报;2012年08期
2 叶钢;余丹;李重文;李先军;尹杰;吕江花;马世龙;;一种基于Kolmogorov-Smirnov检验的缺陷定位方法[J];计算机研究与发展;2013年04期
3 丁晖;陈林;钱巨;许蕾;徐宝文;;一种基于信息量的缺陷定位方法[J];软件学报;2013年07期
4 杜懋畅,张进安;光子探测光纤缺陷定位的实验研究[J];电子学报;1981年01期
5 潘伟伟;张波;郑勇军;史峥;严晓浪;;一种改进的测试芯片的设计方法[J];电路与系统学报;2013年02期
6 何杰;;手机软件APP在配网巡视中的应用[J];电子世界;2014年10期
7 郝鹏;郑征;张震宇;高乙超;宫成;薛云志;;基于谓词执行信息分析的自适应缺陷定位算法[J];计算机学报;2014年03期
8 李伟;郑征;郝鹏;高乙超;饶培峰;宫成;;基于谓词执行序列的软件缺陷定位算法[J];计算机学报;2013年12期
9 刘卉芳;王召巴;陈友兴;;合金弹头超声检测缺陷定位方法研究[J];山西电子技术;2010年06期
10 蔡虹;黄霞;;一种基于聚类算法的缺陷语句定位技术[J];山东大学学报(工学版);2012年06期
中国重要会议论文全文数据库 前3条
1 盛佩军;;斜面探伤中的缺陷定位修正及实际应用[A];2007'湖北·武汉NDT学术年会论文集[C];2007年
2 贾社民;沈功田;吴彦;;索道钢丝绳无损检测和缺陷定位[A];北京机械工程学会2008年优秀论文集[C];2008年
3 贾社民;沈功田;吴彦;;索道钢丝绳无损检测和缺陷定位[A];第四届十三省区市机械工程学会科技论坛暨2008海南机械科技论坛论文集[C];2008年
中国博士学位论文全文数据库 前1条
1 李唯实;基于传播链的缺陷定位及修复技术研究[D];国防科学技术大学;2016年
中国硕士学位论文全文数据库 前10条
1 张晓红;基于频谱的软件缺陷定位方法的研究[D];南京邮电大学;2015年
2 施小燕;基于条件概率公式的缺陷定位问题研究[D];南京大学;2013年
3 童燕翔;基于Bug Report的降噪和缺陷定位研究[D];南京航空航天大学;2016年
4 张鹏;多缺陷和多线程缺陷定位技术研究[D];国防科学技术大学;2014年
5 唐启锋;基于模型结合的缺陷定位研究[D];南京大学;2012年
6 雷晏;基于迭代反馈的缺陷定位技术研究[D];国防科学技术大学;2010年
7 贡亮;软件频谱缺陷定位技术的研究[D];清华大学;2013年
8 王志银;铝合金薄板焊缝的超声检测与缺陷定位[D];哈尔滨工业大学;2008年
9 杨飞;X射线数字成像中的缺陷定位检测技术研究[D];华北工学院;2003年
10 张军辉;钛合金焊接结构缺陷检测与定位方法[D];哈尔滨工业大学;2008年
中国知网广告投放
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978