当前位置:文档之家› 基于频谱的软件错误定位方法研究

基于频谱的软件错误定位方法研究

目录

摘要.................................................................................................................................................I Abstract..........................................................................................................................................II 目录...............................................................................................................................................IV 第一章绪论.. (1)

1.1研究背景与意义 (1)

1.2研究现状 (2)

1.3主要研究内容 (3)

1.4论文章节组织结构 (4)

第二章软件错误定位相关技术概述 (6)

2.1基于统计的方法 (6)

2.2基于静态,动态和执行切片的方法 (8)

2.3基于模型的方法 (8)

2.4基于程序状态的方法 (9)

2.5基于频谱的方法 (10)

2.6本章小结 (13)

第三章基于语句频度统计的软件错误定位方法 (14)

3.1引言 (14)

3.2相关定义 (14)

3.3Tarantula方法概述 (16)

3.4基于语句频度统计的错误定位方法 (18)

3.4.1SFL方法分析 (18)

3.4.2语句频度及其归一化处理 (18)

3.5FLSF算法实现 (20)

3.6本章小结 (23)

第四章自动化软件错误定位框架的实现 (24)

4.1引言 (24)

4.2FLSF实验总体框架 (24)

4.3实验相关工具 (25)

4.4系统具体实现 (28)

4.5本章小结 (32)

第五章实验及分析 (33)

5.1实验评测标准数据集 (33)

5.2错误定位技术的评价标准 (33)

5.3实验结果 (34)

5.4实验数据分析 (36)

5.5本章小结 (40)

第六章总结和展望 (41)

6.1总结 (41)

6.2展望 (41)

参考文献 (43)

攻读硕士学位期间研究成果 (48)

致谢 (49)

第一章绪论

1.1研究背景与意义

随着信息技术的高速发展,计算机在各个领域中的应用越来越广泛。软件作为计算机的重要组成部分,在我们的日常生活中有着举足轻重的作用。我们对软件功能的要求不断增加,软件规模也随之越变越大,所有这些都导致了软件的高出错率。

历史上由软件故障导致的航天事故就有很多:例如Ariane5(无人驾驶火箭)的爆炸,是由于导航软件的一个类型转换错误造成的,将一个64位的浮点数转换成了16位的有符号整数;Mars Pathfinder(火星探路者)到达火星后,因为软件故障出现持续不断地重启。事后,一个技术官在IEEE Real-Time Systems Symposium会议上给出答案,这是因为软件系统中线程调度策略的设计引起的失误;1999年,两个开发小组在软件中使用了不同的国际标准的单位,使得数据不能正常传递,最终造成mars polar lander(火星极地登陆探测器)到达火星不久后就消失了。这些软件错误带来的损失是无法预估的,因此,在软件投入使用之前对其进行测试,发现软件存在的故障,提高软件的可靠性就成了一门重要的课题。如何定位到软件中错误发生的位置是软件测试中的核心问题。

错误定位的目的就是寻找程序中错误发生的位置。传统的用于错误定位的方法是调试[1],程序员先在程序中设置一个或多个断点,接着从断点处开始执行失败的测试用例,检查执行过程中程序的运行状态,由此找到错误发生的原因。这种方法存在几个明显的缺点:首先断点在程序中的位置难以确定;其次这种方法工作量非常庞大,所以学者们提出了许多自动化的错误定位方法[2]。这些方法大致可以分为以下几种[3]:基于静态、动态和执行切片的错误定位方法[4,5,6],基于统计的错误定位方法[7,8],基于模型的诊断和调试方法(MBD)[9,10]以及基于频谱的错误定位方法(SFL)[11,12,13]。在这些方法中,基于频谱的方法因为独立于系统模型而且实现比较简单,所以得到了开发人员的青睐。程序谱[14,15]在程序执行测试用例时,收集并统计分析程序产生的频谱信息,得到程序中每个程序实体(本文中是指语句)在测试用例中的覆盖信息以及每个测试例的运行结果,然后利用这些信息来计算每条可执行语句的可疑度,最后将所有语句按照可疑度进行从大到小排序以便排查出错误的语句。为了进一步提高SFL方法的效率和稳定性,我们提出了基于语句频度统计的程序错误定位方法。

SFL方法只是简单地统计语句在每次执行测试用例时的覆盖情况,记录的是语句覆盖测试用例的数目,而不是测试用例执行语句的次数,只要语句被覆盖,它在此次运行中的

相关主题
文本预览
相关文档 最新文档