基于数据挖掘的软件错误定位方法研究
发布时间:2017-09-29 22:19
本文关键词:基于数据挖掘的软件错误定位方法研究
更多相关文章: 软件调试 错误定位 动态切片 关联分析 聚类分析
【摘要】:近年来,社会发展对软件测试和调试技术提出了新的挑战。不断变化的环境和需求对软件系统提出了更高的要求,保证软件质量变得至关重要。目前,软件调试是保证软件质量最主要的手段之一,而错误定位是软件调试中最为耗时费力的活动之一。错误定位旨在找到隐含在程序源代码中的错误指令、过程或数据定义。它可以提高软件质量、降低软件调试成本。因此,研究软件错误定位具有重要意义。软件错误定位是近年来国内外研究的热点,具有重要科学意义和应用前景。到目前为止,软件错误定位方法还不够完善,存在如下问题:(1)错误定位精度有待进一步提高。大多数错误定位方法,利用统计理论对定位结果进行了精炼,只在一定程度上提高了错误定位的精度。(2)较少考虑偶然正确性测试用例对错误定位效率的影响,偶然正确性测试用例会使错误定位效率下降。(3)已有的方法在软件中存在多个错误时的定位效果不理想,开发人员较难高效地同时定位出软件中存在的多个错误。针对上述问题,本文从程序切片分析入手并结合数据挖掘技术进行软件错误定位研究。首先,研究基于关联分析及排序策略的错误定位方法;其次,研究偶然正确性测试用例对错误定位效率的影响,从理论角度进行了分析,并提出偶然正确性测试用例识别方法;最后,针对软件中存在多错误的问题,提出多错误定位方法。本文的主要工作和贡献总结如下:(1)提出了基于关联分析及排序策略的错误定位方法FLAR(Fault Localization based on Association analysis and Rank strategy)以及改进方法DS-FLAR(Dynamic Slicing-Fault Localization based on Association analysis and Rank strategy)。采用关联分析技术能够反映出程序执行轨迹中语句与执行结果之间的关联关系,然后利用本文设计的排序策略对关联分析后的语句进行排序,生成错误定位报告。实证研究表明,FLAR方法错误定位效果较好。另外,我们提出改进的动态切片方法,用于更好地缩小错误定位的范围,从而优化FLAR方法,最终提出一种基于动态切片、关联分析及排序策略相结合的错误定位方法DS-FLAR。实验结果表明DS-FLAR定位效果优于FLAR方法、以及其它对比方法。(2)针对偶然正确性问题,提出了错误定位效率受偶然正确性测试用例影响的理论分析框架。通过将怀疑度计算公式看成是程序元素的四元组表示形式中变量(成功测试用例覆盖程序元素的次数)的函数,采用对函数求导的方式来分析偶然正确性测试用例对不同怀疑度计算公式效率的影响。基于上述框架,理论分析了偶然正确性测试用例对30个经典怀疑度计算公式效率的影响。此研究工作是偶然正确性测试用例对错误定位效率影响的有益理论探索,为在软件错误定位时移除偶然正确性测试用例提供理论依据。(3)针对偶然正确性影响错误定位效率的问题,提出了面向有效错误定位的偶然正确性测试用例识别方法。该方法首先识别偶然正确性元素,应用怀疑度计算公式计算程序元素怀疑度,挑选出高可疑偶然正确性元素作为偶然正确性特征元素;然后,根据该特征元素对程序执行轨迹进行维度约简,并进一步建立基于模糊c均值聚类的偶然正确性测试用例识别模型;最后,将其结果应用于错误定位。应用该方法在3组测试程序上进行偶然正确性测试用例识别,在此基础上,采用4种错误定位方法开展错误定位,比较移除偶然正确性测试用例对错误定位效率的影响。实验结果表明,与基于k-means聚类的偶然正确性测试用例识别方法相比,该方法在偶然正确性测试用例识别方面具有较低的误报率和漏报率,更能提高错误定位的效率。(4)针对软件中存在多个错误的问题,提出了基于Chamelelon聚类分析的多错误定位方法。该方法首先将每一个失败程序执行轨迹和所有成功程序执行轨迹合并,计算其怀疑度,按怀疑度大小选取高可疑元素作为程序执行轨迹的特征元素,按照该特征元素对失败程序执行轨迹进行约简;其次,在此基础上,聚类分析技术将失败程序执行轨迹分簇,使得每簇包含一个错误;然后,将失败程序执行轨迹簇与所有成功程序执行轨迹簇合并,计算其怀疑度;最后,根据合并后的簇生成的怀疑度序列,采用并行调试模式同时定位程序中的多个错误。实证研究表明该方法能有效地定位程序中的多个错误。
【关键词】:软件调试 错误定位 动态切片 关联分析 聚类分析
【学位授予单位】:中国矿业大学
【学位级别】:博士
【学位授予年份】:2015
【分类号】:TP311.53;TP311.13
【目录】:
- 致谢4-5
- 摘要5-7
- Abstract7-10
- Extended Abstract10-23
- 变量注释表23-24
- 1 绪论24-37
- 1.1 研究背景及意义24-25
- 1.2 国内外研究现状25-31
- 1.3 存在问题31-32
- 1.4 研究内容32-35
- 1.5 论文结构35-36
- 1.6 本章小结36-37
- 2 错误定位及相关理论37-49
- 2.1 问题描述37
- 2.2 错误定位框架37-41
- 2.3 程序切片41-43
- 2.4 数据挖掘43-48
- 2.5 本章小结48-49
- 3 基于关联分析及排序策略的错误定位方法49-63
- 3.1 引言49-50
- 3.2 错误定位方法50-57
- 3.3 实验评估57-62
- 3.4 本章小结62-63
- 4 基于动态切片和关联分析的错误定位方法63-80
- 4.1 引言63-64
- 4.2 研究动机64-65
- 4.3 错误定位方法65-69
- 4.4 实验评估69-79
- 4.5 本章小结79-80
- 5 错误定位效率受偶然正确性测试用例影响理论分析80-95
- 5.1 引言80-81
- 5.2 偶然正确性相关定义81-82
- 5.3 研究动机82-84
- 5.4 理论分析框架84-85
- 5.5 实例研究85-94
- 5.6 本章小结94-95
- 6 面向有效错误定位的偶然正确性测试用例识别方法95-114
- 6.1 引言95-96
- 6.2 问题描述96-97
- 6.3 偶然正确性测试用例识别方法97-99
- 6.4 实验评估99-113
- 6.5 本章小结113-114
- 7 基于Chameleon聚类分析的多错误定位方法114-129
- 7.1 引言114-115
- 7.2 问题描述115
- 7.3 基于聚类分析的多错误定位115-118
- 7.4 实验评估118-128
- 7.5 本章小结128-129
- 8 总结与展望129-131
- 8.1 论文工作总结129-130
- 8.2 展望130-131
- 参考文献131-143
- 作者简历143-146
- 学位论文数据集146
本文编号:944568
本文链接:https://www.wllwen.com/shoufeilunwen/xxkjbs/944568.html