【技术实现步骤摘要】
一种基于链接排名算法和排序学习的缺陷定位方法
[0001]本专利技术属于软件缺陷定位领域,涉及一种利用PageRank技术与排序学习技术改进软件缺陷定位的方法。
技术介绍
[0002]在软件系统的开发和维护过程中,出现缺陷是不可避免的问题。同时缺陷的定位是最困难、最苛刻的步骤,需要占用约80%的软件开发成本。因此软件缺陷定位已经成为降低软件维护昂贵成本的主要方法。但随着软件系统复杂性的增加,在数百万行的代码中准确定位软件缺陷是非常困难的。因此,在软件工程领域迫切需要自动化的软件缺陷定位技术。
[0003]在过去的二三十年里,出现了各种技术来帮助开发者定位软件缺陷的具体位置,如基于频谱的技术、基于切片的技术、基于机器学习的技术以及基于突变的技术。其中基于频谱的缺陷定位(Spectrum
‑
Based Fault Localization,下称SBFL)因其轻巧而成为研究最广泛的技术之一。现有SBFL技术的重点是区分不同程序实体出错的可能性,其计算过程只考虑了程序实体所执行的测试用例的数目以及最终的执行结果,而不考虑测试用例覆盖范围大小对缺陷定位所作出的贡献存在区别。对开发人员来说,不同的测试用例对缺陷定位所能作出的贡献的是不同的,该分析主要基于以下事实:
[0004]1.如果一个执行失败的测试用例只覆盖了很少的程序实体,那么该测试用例的搜索空间较小,所执行的程序实体中包含缺陷的概率更高,所以在开发人员眼中该测试用例所执行的程序实体在定位过程中应该更重要。
[0005]2.反之, ...
【技术保护点】
【技术特征摘要】
1.一种基于链接排名算法和排序学习的缺陷定位方法,其特征在于,包括以下步骤:步骤1:收集程序频谱并进行函数级聚合;步骤2:基于链接排名算法的权重获取;步骤3:加权计算SBFL分数并进行特征组合矩阵的获取;步骤4:使用排序学习算法进行模型构建;步骤5:结合SBFL特征与模型进行缺陷定位。2.根据权利要求1所述的一种基于链接排名算法和排序学习的缺陷定位方法,其特征在于所述的步骤1包括以下子步骤:S1
‑
1.频谱结果统计;在被测程序中运行所有测试用例,得到测试用例集中每个测试用例的程序频谱;所述程序频谱包括:被执行的语句和执行结果;S1
‑
2.怀疑度计算;使用SBFL技术对频谱进行怀疑度计算,得到所有被执行语句的怀疑度分数;S1
‑
3.函数级聚合;抽取函数中怀疑度最高的语句行频谱,将其汇总到整个函数的频谱;S1
‑
4.频谱统计;将函数级聚合的频谱矩阵转换为一个四元组矩阵(e
f
,e
p
,n
f
,n
p
),分别代表执行并通过的测试用例数量、执行并失败的测试用例数量、为执行并通过的测试用例数量、为执行并失败的测试用例数量。3.根据权利要求1所述的一种基于链接排名算法和排序学习的缺陷定位方法,其特征在于步骤2所述的函数权重的获取包括以下子步骤:S2
‑
1.测试用例调用关系获取;收集程序执行过程中的调用关系,以函数、测试用例为网络节点,以函数与函数、函数与测试用例之间的调用关系为双向边,构建调用网络图;S2
‑
2.根据所得到的调用网络图,构建n*n的转移矩阵P,其中n代表函数节点的数量与失败测试用例的数量之和;P
i,j
代表从节点j直接转移到节点i的概率,计算方法为S2
‑
3.所有节点权重计算;根据S3
‑
1得到的转移矩阵计算,所有节点权重,公式如下:其中P为上一步所得到的转移矩阵;引入阻...
【专利技术属性】
技术研发人员:王兴起,陈伟昌,魏丹,陈滨,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。