首页|基于频谱的错误定位优化技术研究

基于频谱的错误定位优化技术研究

杨磊

基于频谱的错误定位优化技术研究

杨磊1
扫码查看

作者信息

  • 1. 中国矿业大学(江苏)
  • 折叠

摘要

随着现代化软件规模不断扩大,复杂性不断提高,其在为人类生产生活带来便利的同时,也为软件调试带来了更大的挑战。错误定位被认为是软件调试中最繁琐、最复杂的部分之一。传统的软件错误定位依靠开发人员手动完成,耗费大量人力和时间成本,而自动化错误定位方法不仅可以降低错误定位的成本,还可以提供更加精准的定位指导。所以,研究更加有效的自动化错误定位方法是极具现实意义的。 截至目前,研究人员已经提出了数十种自动化软件错误定位方法,基于频谱的错误定位是众多方法中较为突出的,但是仍然存在一些不足之处。主要体现在:(1)现有的基于频谱的错误定位方法未能充分挖掘失败测试用例之间的区别,并且没有充分利用失败测试用例的执行上下文信息,语句排查范围过大,错误定位效率低。(2)现有的基于频谱的错误定位方法都受到偶然正确测试用例的影响,导致错误语句的可疑度值偏低,从而降低了错误定位的精度。针对以上两个问题,本文的主要研究工作如下所示: (1)提出了一种基于PageRank算法的错误定位方法(FaultLocalizationBasedonPageRankAlgorithm,简称PFL),并验证了所提方法的有效性。该方法首先提取失败测试用例覆盖图和方法调用图并构造转移矩阵。其次利用转移矩阵进行PageRank算法迭代,计算所有失败测试用例的权值对其进行区分,并选取出权值最高的失败测试用例。最后,在基于频谱的错误定位基础上,利用所选取的失败测试用例的执行上下文切片(即测试用例覆盖的语句集合)约减可疑度列表中所需要检查的语句,缩小排查范围。实验结果表明,PFL方法可以提高现有的错误定位方法的定位效率。 (2)提出了一种基于偶然正确测试用例识别的错误定位方法(FaultLocalizationBasedonCoincidentalCorrectTestCaseIdentification,简称CCFL),并验证了所提方法的有效性。该方法首先使用所有失败测试用例所覆盖语句的并集对覆盖矩阵进行维度约减。其次对约减后的信息应用模糊C均值聚类算法将成功的测试用例聚成两类:真正成功的测试用例和偶然正确的测试用例。然后使用剔除策略,对识别出的偶然正确测试用例加以利用,构建新的测试集。最后,在新测试集的基础上进行基于频谱的错误定位,提高了错误语句的可疑度值。实验结果表明,与基线方法相比较,CCFL方法提高了偶然正确测试用例识别的精度和召回率,进而提升了错误定位的精度。 (3)使用Java和Shell语言设计并实现了一个自动化错误定位工具。该工具简化了部分错误定位的实现流程,并提供可视化界面,用以辅助定位错误。

关键词

错误定位/SBFL/执行切片/软件调试/聚类分析

引用本文复制引用

授予学位

硕士

学科专业

软件工程

导师

姜淑娟

学位年度

2023

学位授予单位

中国矿业大学(江苏)

语种

中文

中图分类号

TP
段落导航相关论文