一种基于粒子群优化的软件多错误定位方法及处理装置与流程

文档序号:17925542发布日期:2019-06-15 00:23阅读:287来源:国知局
一种基于粒子群优化的软件多错误定位方法及处理装置与流程

本发明涉及软件测试技术领域,特别是一种基于粒子群优化的软件多错误定位方法及处理装置。



背景技术:

在工业界软件开发与维护过程中,几乎所有软件都可能包含多个错误,定位出软件中多个错误是软件错误定位领域中亟需解决的关键问题。有研究提出了基于聚类分析的多错误定位方法,他们最先使用失败相似(failureproximity)来识别两个失败执行轨迹是否相似,即认为指向大致相同错误位置的两个失败执行轨迹相似,不同于以前研究中有相似执行行为的轨迹相似,在此基础上,使用聚类分析方法对失败执行轨迹分簇,定位程序中的多错误。随后,另一项研究提出了基于凝聚层次聚类分析的多错误定位方法,并提出了多个调试人员同时调试程序中多个错误的并行调试模式,根据给定阈值,引起同一区域错误的执行轨迹合并为一簇。但上述方法在一定程度上定位了软件中存在的多个错误,但是聚类分析的方法中设置参数较多,实验结果受参数影响较大;并且在多错误的并行调试过程中,人工干预较多。

为了解决上述问题,有研究借助遗传规划(geneticprograming)对unix工具集程序中的92个错误,在无人工干预的前提下,机器推导出30个不同怀疑度计算公式。研究中将30个通过机器推导出来的30个基于遗传规划的怀疑度公式的等价性进行理论分析,发现了其中4个最优公式并从理论分析的角度对不同的怀疑度公式进行了分析;另有研究提出了一种基于遗传算法的多缺陷定位方法,采用进化优化中的遗传算法搜索求最优解,从而定位软件中的多错误,上述方法能够将遗传算法应用解决多错误定位问题,方法新颖有效,且整体定位效率优于传统方法,可以有效减少了人工干预,不足之处在于遗传算法规则复杂、参数较多,定位效果受参数的影响较大。

现今,有研究将粒子群优化算法应用于测试数据生成,实验表明粒子群优化算法能产生更高的分支覆盖率;另有将粒子群优化算法应用到成对组合测试中,研究结果表明粒子群优化算法在软件测试中具有一定的优势,且基于搜索的方法应用于软件测试中,能够取得了较好的效果。

研究表明,对于某个特定的错误,其他错误的存在可能会影响定位某一个错误的效率,经过对错误定位效率与程序中存在的错误数量进行调查,表明错误定位效率与程序中错误数量成反比。由此可见,软件中错误的数量越多,错误定位的效果越差,这增加了定位多错误的难度。因此,寻求高效的定位多错误的方法成为亟待解决的问题。



技术实现要素:

本发明的目的是提供一种基于粒子群优化的软件多错误定位方法及处理装置,用以解决当前多错误定位效果差、效率低的问题。

为实现上述目的,本发明提供一种基于粒子群优化的软件多错误定位方法,包括以下方法技术方案:

方法方案一:一种基于粒子群优化的软件多错误定位方法,步骤如下:

1)通过测试用例获取软件中程序动态切片信息及程序执行结果;

2)根据所述程序动态切片信息和所述程序执行结果的拓展怀疑度计算公式,构造揭示错误分布能力的适应度函数;

3)对多错误分布进行粒子群初始化,使每个粒子位置对应一个候选错误分布;

4)通过所述适应度函数控制更新粒子的位置,确定整个种群的粒子在不断运动中适应度函数的最优解,该最优解即为多错误分布,同时判断更新后的粒子位置是否满足设定的迭代次数,若满足,则结束循环;若不满足,则进行循环判断;

5)根据适应度函数的最优解,按得到的对应程序实体的怀疑度排序,映射得出程序错误的真实位置。

有益效果是,本方法方案一根据动态切片缩小错误定位范围,结合粒子群优化算法的理论和方法,通过基于程序频谱信息及程序执行结果拓展怀疑度计算公式构造的适应度函数,得出最优解并将其映射到真实的错误位置,可以有效地识别软件中的多个错误,而且可以显著提高软件错误定位的效率,因此,解决了当前多错误定位效果差、效率低的问题。

方法方案二:在方法方案一的基础上,对步骤1)采用前向计算方法计算程序后向动态切片的方法,并对定义变量进行影响集分析,得到当前变量在定义时实际引用变量,排除未引用变量,从而获得所述程序动态切片信息及所述程序执行结果。

方法方案三:在方法方案一或方法方案二的基础上,步骤3)中的粒子去初始化采用贪心算法,具体如下:将一个候选多错误分布表示成二进制向量r={r1,r2…,rj…,rn},其中,rj=1表示第j个程序实体有错误,rj=0表示第j个程序实体无错误,n为程序实体的数量。

方法方案四:在方法方案三的基础上,所述适应度函数为

其中,tf为失败测试用例的数量,ψ(r)为假设的候选缺陷分布r解释失败测试用例的能力,φ(r)是假设的候选错误分布解释成功测试用例的能力。

本发明提供一种基于粒子群优化的软件多错误定位处理装置,包括以下装置技术方案:

装置方案一:一种基于粒子群优化的软件多错误定位处理装置,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:

1)通过测试用例获取软件中程序动态切片信息及程序执行结果;

2)根据所述程序动态切片信息和所述程序执行结果的拓展怀疑度计算公式,构造揭示错误分布能力的适应度函数;

3)对多错误分布进行粒子群初始化,使每个粒子位置对应一个候选错误分布;

4)通过所述适应度函数控制更新粒子的位置,确定整个种群的粒子在不断运动中适应度函数的最优解,该最优解即为多错误分布,同时判断更新后的粒子位置是否满足迭代次数,若满足,则结束循环;若不满足,则进行循环判断;

5)根据适应度函数的最优解,按得到的对应程序实体的怀疑度排序,映射得出程序错误的真实位置。

装置方案二:在装置方案一的基础上,对步骤1)采用前向计算方法计算程序后向动态切片的方法,并对定义变量进行影响集分析,得到当前变量在定义时实际引用变量,排除未引用变量,从而获得所述程序动态切片信息及所述程序执行结果。

装置方案三:在装置方案一或装置方案二的基础上,步骤3)中的粒子去初始化采用贪心算法,具体如下:将一个候选多错误分布表示成二进制向量r={r1,r2…,rj…,rn},其中,rj=1表示第j个程序实体有错误,rj=0表示第j个程序实体无错误,n为程序实体的数量。

装置方案四:在装置方案三的基础上,所述适应度函数为

其中,tf为失败测试用例的数量,ψ(r)为假设的候选缺陷分布r解释失败测试用例的能力,φ(r)是假设的候选错误分布解释成功测试用例的能力。

附图说明

图1是一种基于粒子群优化的软件多错误定位方法的流程示意图;

图2是一种基于粒子群优化的软件多错误定位方法的步骤s1的流程图;

图3是一种基于粒子群优化的软件多错误定位方法的步骤s2的流程图;

图4是一种基于粒子群优化的软件多错误定位方法的步骤s3的流程图;

图5是一种基于粒子群优化的软件多错误定位方法的步骤s4的流程图;

图6是一种基于粒子群优化的软件多错误定位方法的步骤s5的流程图。

具体实施方式

下面结合附图对本发明做进一步详细的说明。

本发明提供一种基于粒子群优化的软件多错误定位处理装置,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,其中处理器执行一种基于粒子群优化的软件多错误定位方法,通过深入分析程序的数据依赖和控制依赖关系,拟采用前向计算方法计算程序后向动态切片,并且对定义变量进行影响集分析,找出当前变量在定义时实际引用变量,提出改进的动态切片以缩小错误定位的范围;再以二进制形式表示潜在的错误分布,初始化错误分布的种群,同时基于程序频谱信息及程序执行结果拓展怀疑度计算公式来构造适应度函数;最终采用粒子群优化算法搜索解空间从中搜索出具有最高适应度值的候选错误分布,搜索出的最优解即错误分布最优种群,可显性地表示多个错误的可能位置,将其映射到真实错误位置,从而研究大型开源软件系统中的多错误定位方法。如图1所示,包括具体步骤如下:

步骤s1:通过测试用例获取软件中程序动态切片信息及程序执行结果。

程序谱中信息种类较多,例如程序的覆盖信息、静态切片信息和动态切片信息等,而在本方法中主要获取动态切片信息,其中通过改进的动态切片方法,采用前向计算方法计算程序后向动态切片,并且对定义变量进行影响集分析,找出当前变量在定义时实际引用变量,排除未引用变量,使得动态切片结果更加精确,将得到的动态切片结果应用于错误定位,并利用测试用例将动态切片信息分为成功执行动态切片信息和失败执行动态切片信息。

如图2所示,具体流程如下:

s101:通过测试用例驱动源代码,来获取程序的执行轨迹信息;

s102:采用前向计算方法计算程序后向动态切片,并且对定义变量进行影响集分析,找出当前变量在定义时实际引用变量,排除未引用变量,从而获得程序执行的动态切片信息及执行结果;

s103:动态切片信息和执行结果获取完毕。

步骤s2:根据所述程序动态切片信息和所述程序执行结果的拓展怀疑度计算公式,构造揭示错误分布能力的适应度函数。

粒子群优化算法在进化搜索过程中以适应度函数为依据来评价粒子,适应度函数主要反映了候选解和最优解的解近程度。将多错误定位问题转换为基于搜索求最优解的问题,构造适应度函数来评价粒子优劣;根据程序执行获取的动态切片信息和程序执行结果拓展怀疑度计算公式,

其中,fail(s)表示语句s被失败测试执行的次数,pass(s)表示语句s被成功测试执行的次数;totalfail表示成功测试数,totalpass表示失败测试数。

从而构造揭示错误分布能力的适应度函数fitness如下:

其中,tf为失败测试用例的数量,ψ(r)为假设的候选缺陷分布r解释失败测试用例的能力,φ(r)是假设的候选错误分布解释成功测试用例的能力。

如图3所示,具体流程如下:

s201:获取失败测试用例的数量tf;

s202:设定ψ(r)为假设的候选缺陷分布r解释失败测试用例的能力,φ(r)是假设的候选错误分布解释成功测试用例的能力;

s203:得出适应度函数如下:

步骤s3:对多错误分布进行粒子群初始化,使每个粒子位置对应一个候选错误分布。

使用贪心算法对多错误分布初始化,给每一个粒子赋予初始速度,且使粒子位置对应一个候选多错误分布,即初始化粒子群(每一个候选多错误分布为一个粒子),将一个候选多错误分布表示成二进制向量r={r1,r2…,rj…,rn},rj=1表示第j个程序实体有错误,rj=0则表示第j个程序实体无错误,n为程序实体的数量。

如图4所示,具体流程如下:

s301:使用贪心算法对多错误分布初始化,即初始化粒子群(每一个候选多错误分布为一个粒子);

s302:赋予每一个粒子初始速度;

s303:使粒子位置对应一个候选错误分布。

步骤s4:通过所述适应度函数控制更新粒子的位置,确定整个种群的粒子在不断运动中适应度函数的最优解,该最优解即为多错误分布,同时判断更新后的粒子位置是否满足迭代次数,若满足,则结束循环;若不满足,则进行循环判断。

用适应度函数计算每个粒子对应的全局极值(即种群经历的最好位置)和个体极值(即粒子本身所经历的最好位置);并比较每个粒子的适应度值与粒子的个体极值和每个粒子的适应度值与全局极值。

通过适应度函数控制指导粒子的移动或飞行,从而更新粒子的速度和位置,使其落入非最优解的集中;最终,整个种群的粒子在不断运动中求适应度函数的最优解。

如图5所示,具体流程如下:

s401:计算粒子适应度;

s402:通过适应度函数计算每个粒子对应的局部最优解;

s403:通过适应度函数计算每个粒子对应的全局最优解;

s404:判断粒子是否满足设定条件;

s405:若不满足条件,则控制更新粒子的速度和位置,并再次循环;

s406:若满足,则得出多错误分布最优种群。

步骤s5:根据适应度函数的最优解,按得到的对应程序实体的怀疑度排序,映射得出程序错误的真实位置。

上述步骤s4中求解得到的最优解即为多错误的分布,按得到的对应程序实体的怀疑度排序,映射到程序错误的真实位置。

如图6所示,具体流程如下:

s501:根据得到的最优解对应的程序实体进行怀疑度排序;

根据拓展后的tarantula怀疑度计算公式,按照怀疑度值从大到小排序。

s502:将最终的结果映射到程序错误的真实位置。

以上给出了本发明涉及的具体实施方式,但本发明不局限于所描述的实施方式。在本发明给出的思路下,采用对本领域技术人员而言容易想到的方式对上述实施例中的技术手段进行变换、替换、修改,并且起到的作用与本发明中的相应技术手段基本相同、实现的发明目的也基本相同,这样形成的技术方案是对上述实施例进行微调形成的,这种技术方案仍落入本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1