论文部分内容阅读
由于软件规模和复杂性的不断增大,没有缺陷的软件是几乎不可能存在的。调试就是找到和排除故障,它对提高软件质量有着重要作用。缺陷定位是调试中十分重要的一个步骤,然而它也是最枯燥、最困难、最耗费资源的一步。为了降低调试的花销,许多研究者对缺陷定位进行了研究,试图提出一套有效的缺陷定位方法来降低其花销。本文对缺陷定位技术的发现现状进行了研究,并分析其存在的挑战和问题。针对由于测试与调试的目标不同而导致测试提供给缺陷定位的信息存在不足与干扰的问题,本文提出了基于迭代反馈的缺陷定位方法来不断产生有效反馈来解决这个问题。这个方法包含两个关键部分:1)充分利用程序信息,分析成功测试用例运行和失败测试用例运行之间差异来定位缺陷;2)基于当前测试信息和缺陷定位结果,产生迭代反馈给当前测试用例集来减少干扰信息作用以及增加有效信息,通过反馈实现缺陷定位性能的提升。本文分析了信息不足与干扰的作用机理,给出了本文方法的框架,并从程序信息差异研究、反馈机制研究、反馈数据生成研究三个面进行了程序信息与迭代反馈研究。同时本文设计和实现了一个基于迭代反馈的缺陷定位系统IFFL。在典型案例Siemens suite的实验表明本方法能有效改进三种最好性能的SFL(Program Spectrum-based Fault Localization)的性能,反馈数据的平均有效性高于来自测试的测试用例,并且性能改进优于两种改进SFL的方法。基于这些实验结果,本文得出以下结论:1)本方法能有效地提高缺陷定位性能;2)信息不足与干扰问题极大地影响着缺陷定位性能;3)满足测试充分性准则的测试用例集提供给缺陷定位的信息可能存在不足和干扰问题,现有缺陷定位方法的信息充分性假设存在不合理性。有效的缺陷定位方法对软件调试和软件质量有着重要的意义。本文对缺陷定位技术进行了研究,提出基于迭代反馈的缺陷定位方法。该方法能有效地进行缺陷定位,对缺陷定位领域研究做出了贡献。