基于多目标优化的变异测试变异体约简方法与流程

文档序号:18322083发布日期:2019-08-03 10:34阅读:543来源:国知局
基于多目标优化的变异测试变异体约简方法与流程

本发明涉及一种变异体约简方法,特别涉及一种基于多目标优化的变异测试变异体约简方法。



背景技术:

文献“曾凡平,黄玉涵,张美超,等.基于遗传算法聚类的变异体约简[j].计算机应用,2011,31(5):1314-1317.”公开了一种基于遗传算法聚类的变异体约简方法。该方法提出了基于遗传算法聚类的变异体约简方法,把具有相似特征的变异体置于同一簇中,再利用遗传算法从每个簇中随机选择一个作为代表,从而实现对遗传算法变异体的约简。该文献只使用同一种遗传算法进行变异体的约简,并没有对遗传算法进行比较,没有证明所使用的遗传算法的相对合理性。



技术实现要素:

为了克服现有变异体约简方法效率低的不足,本发明提供一种基于多目标优化的变异测试变异体约简方法。该方法首先对已有的程序生成大量变异体,然后制定对变异体进行约简的多目标优化算法目标,包括变异体被检测率、变异体和源程序之间的差别、变异测试花费的时间,通过不同的多目标优化算法对变异体进行约简并一一记录结果并进行对比,最终选择表现最优的多目标优化算法,实现基于多目标优化的变异体约简,提高了变异体约简的效率。

本发明解决其技术问题所采用的技术方案:一种基于多目标优化的变异测试变异体约简方法,其特点是包括以下步骤:

步骤一、对于来自软件工件基础设施库的四个开源的程序集,利用随机生成的办法生成大量变异体。

随机生成变异体时首先判断这个变异体是否已经被生成过,已经被生成过则结束流程;否则通过对插入绝对值、替换算术运算符、替换逻辑运算符、替换关系运算符和插入元运算符的操作,进行变异体的生成,然后移除等价的变异体,最后输出剩下的变异体和运算的时间。

步骤二、使用已有的六种多目标优化算法对变异体进行筛选。

选择6种应用广泛的多目标优化算法作为比较的对象,分别是nsga-ii、ibea、moea/d-ws、moea/d-tch、moea/d-pbi和spea2+sde。同时制定作为评价指标的三种被优化目标,分别是变异体的被检出率、测试所需的时间、变异体和源程序的区别。更好的变异体集合应该与源程序差别较小,花费时间更少,同时相对不易被已有的测试用例集检测出,因此希望对这三个目标都进行最小化,计算公式如下:

其中,d是突变程序和源程序之间的差异,lm是突变程序更改的行数,l是源程序中的行数。

其中,costp是经过标准化的耗时,t是运行该解集的时间,tmin是运行所有解集的最小时间,tmax是运行所有解集的最大时间,由于其他两个目标都是用百分数表示的,因此对花费时间进行百分数的标准化。

其中,rd变异体的被检出率,pd′是被检测出的变异体数,p′是生成的变异体总数。

步骤三、对约简之后得到的变异体集合进行评价,选出适合进行变异体约简的多目标优化算法。

通过给定的指标用这六种算法来对生成的变异体进行筛选并得到最终结果并进行评价,评价指标从两个方面进行,包括对解集整体进行评价和对所有生成的解集中最好的一个进行评价。评价整体解集的方法是hv值,即解集中个体与参考点在目标空间中所围成得到超立方体的体积。对最好解集的评价是在确保在将变异体的被检出率、变异体和源程序的区别控制在最小的情况下选出、测试所需的时间最小的最优变异体集合,并进行分析比较。最终选出适合进行变异体约简的多目标优化算法。

本发明的有益效果是:该方法首先对已有的程序生成大量变异体,然后制定对变异体进行约简的多目标优化算法目标,包括变异体被检测率、变异体和源程序之间的差别、变异测试花费的时间,通过不同的多目标优化算法对变异体进行约简并一一记录结果并进行对比,最终选择表现最优的多目标优化算法,实现基于多目标优化的变异体约简,提高了变异体约简的效率。

本发明基于实验数据,将已有的遗传算法进行了对比,选出了在给定条件下最适合进行变异体约简的遗传算法,并证明了该遗传算法进行约简的可行性。在实验中,首先生成了500个不同的变异体,使用六种不同的多目标优化算法将这500个变异体约简为200个,得到了不同的变异体结合。对比了总共的六种多目标优化算法(nsga-ii、ibea、moea/d-ws、moea/d-tch、moea/d-pbi、spea2+sde),分别从几个不同的角度对算法生成的变异体集合进行了对比:

1)对于算法约简后的所有变异体集合,采用hv对解集进行判断:多目标优化领域中,使用hv作为指标进行判断是一个很常见的方式,它是用来表示解集中个体与参考点在目标空间中所围成得到超立方体的体积。hv的值越高,则认为这个解集具有更好的收敛性、扩展性和一致性,也就是是更好的解集。比较的结果参见表1。参照表2是对每一个程序集来说最优和次优的算法。

表1规范化hv值

表2不同程序的最优算法评价

2)选择从每一个生成的解集中选出最好的一组变异体集合进行对比,当变异体被检测率(%)和变异体与源程序的差别(%)都被控制到最小时,对cost进行比较,找到最好的变异体集。参照表3-表6是实验的结果。

表3tcas程序实验结果

表4schedule程序实验结果

表5tot-info程序实验结果

表6gzip程序实验结果

最终认定,在给定的优化条件下,选出适合进行变异体约简的多目标优化算法是moea/d-ws。

下面结合附图和具体实施方式对本发明作详细说明。

附图说明

图1是本发明基于多目标优化的变异测试变异体约简方法的流程图。

图2是图1中生成变异体的流程图。

具体实施方式

参照图1-2。本发明基于多目标优化的变异测试变异体约简方法具体步骤如下:

步骤一、对于来自软件工件基础设施库的四个开源的程序集,利用随机生成的办法生成大量变异体。

随机生成变异体时首先判断这个变异体是否已经被生成过,已经被生成过则结束流程;否则通过对五种运算符的操作(插入绝对值、替换算术运算符、替换逻辑运算符、替换关系运算符、插入元运算符)来进行变异体的生成,然后移除等价的变异体,最后输出剩下的变异体和运算的时间。

步骤二、使用已有的六种多目标优化算法对变异体进行筛选。

选择6种应用广泛的多目标优化算法作为比较的对象,分别是nsga-ii、ibea、moea/d-ws、moea/d-tch、moea/d-pbi和spea2+sde。同时我们制定了作为评价指标的三种被优化目标,分别是变异体的被检出率、测试所需的时间、变异体和源程序的区别。经过研究认为,更好的变异体集合应该与源程序差别较小,花费时间更少,同时相对不易被已有的测试用例集检测出,因此希望对这三个目标都进行最小化,计算公式如下:

其中d是突变程序和源程序之间的差异,lm是突变程序更改的行数,l是源程序中的行数。

其中costp是经过标准化的耗时,t是运行该解集的时间,tmin是运行所有解集的最小时间,tmax是运行所有解集的最大时间,由于其他两个目标都是用百分数表示的,因此对花费时间进行了百分数的标准化。

其中rd变异体的被检出率,p′d是被检测出的变异体数,p′是生成的变异体总数。

步骤三、对约简之后得到的变异体集合进行评价,选出适合进行变异体约简的多目标优化算法。

通过给定的指标用这六种算法来对生成的变异体进行筛选并得到最终结果并进行评价,评价指标从两个方面进行,包括对解集整体进行评价和对所有生成的解集中最好的一个进行评价。评价整体解集的方法是hv值,即解集中个体与参考点在目标空间中所围成得到超立方体的体积。对最好解集的评价是在确保在将变异体的被检出率、变异体和源程序的区别控制在最小的情况下选出、测试所需的时间最小的最优变异体集合,并进行分析比较。最终选出适合进行变异体约简的多目标优化算法。

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