论文部分内容阅读
随着计算机软件的日益复杂,软件可信的要求越来越高,特别是在航空、航天、金融、证券、交通等领域尤其如此。可信要求软件具有高可靠性和高可用性。软件中隐藏的缺陷数目直接决定软件的可靠性。缺陷定位是移除软件缺陷的关键步骤,缺陷定位的有效性直接影响软件的可用性。
由于软件测试的成本越来越高和测试技术的不断发展,自动化测试(Automated Testing)被越来越多的使用在软件测试中。自动化测试提高发现缺陷的效率,但是要找到这些缺陷还是需要程序员逐一审查代码来实现,缺陷定位成为了提高高质量软件的开发效率的瓶颈。自动化的缺陷定位能够辅助程序员定位缺陷,提高缺陷定位的效率,具有十分重要的意义。基于执行轨迹的缺陷定位方法只需要被测系统的源代码和测试用例集,能够很好的和自动化测试相结合,实现自动化的缺陷定位。
本文研究了基于执行轨迹的缺陷定位,提出了一个缺陷定位的框架和一个新的缺陷定位方法,并设计实现了一个自动化缺陷定位的原型工具。本文的主要工作如下:
1、综述了缺陷定位的研究现状。首先介绍了缺陷的概念和分类,并讨论了缺陷定位的相关术语。将现有缺陷定位方法分为基于代码修改、基于内存状态、基于数据挖掘、基于执行轨迹等四类,并详细介绍了各类方法的主要思想。
2、提出基于执行轨迹缺陷定位方法的通用框架FLOC。将基于执行轨迹的缺陷定位方法分为四个阶段:执行轨迹的组织,测试用例的选择,怀疑率的计算,定位报告的评价。在此框架下系统的比较了现有的基于执行轨迹的缺陷定位方法。
3、提出一种基于类层相似性的缺陷定位方法CLSim。考虑面向对象程序中类具有高内聚性和低耦合性的特点,按面向对象程序的代码结构来组织执行轨迹。从语句块的角度,根据执行轨迹的类层相似性选择与各语句块相关的测试用例,在语句块层计算各语句块的怀疑率,从而避免冗余测试用例的影响。
4、开发出自动化缺陷定位原型工具JFLoc。JFLoc能够和自动化测试紧密结合,在自动化测试阶段收集测试信息,按照FLOC框架对信息进行整理、选择、分析,并生成缺陷定位报告以辅助程序员定位缺陷。
5、通过一个开源软作为实验对象,评价了CLSim方法的效果,验证了JFLoc的实用性。我们在JFLOC中集成了CLSim和Tarantula等方法,然后利用JFLOC来对开源XML解析软件NanoXML中的缺陷进行定位。实验结果表明,JFLoc具有很好的实用性,且在我们的实验对象下CLSim的定位效果要好于Tarantula。