[发明专利]一种基于变异体分组的软件变异测试数据进化生成方法有效

专利信息
申请号: 201710945540.0 申请日: 2017-10-12
公开(公告)号: CN107729241B 公开(公告)日: 2020-11-03
发明(设计)人: 姚香娟;巩敦卫;王佩佩;党向盈;杨焱;施智敏;张功杰 申请(专利权)人: 中国矿业大学
主分类号: G06F11/36 分类号: G06F11/36;G06N3/12
代理公司: 暂无信息 代理人: 暂无信息
地址: 221116 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公布了一种基于变异体分组的软件变异测试数据进化生成方法,目的是提高变异测试数据生成问题的效率。首先,基于变异体被杀死的可达性条件,将变异体分成若干组,使得每组包含相对较少的变异体,这样,就可以把杀死所有变异体的测试数据生成问题,转化为若干相对简单的子问题;然后,采用多种群进化算法对所建立的模型进行求解,每个子种群求解一个子优化问题;在求解的过程中,随着变异体不断被杀死,对整个优化问题逐步进行简化,进一步降低问题的求解难度。该方法可以降低变异测试数据生成问题的难度,提高变异测试的效率和可行性,因此,具有重要的理论意义和实用价值。
搜索关键词: 一种 基于 异体 分组 软件 变异 测试数据 进化 生成 方法
【主权项】:
一种基于变异体分组的软件变异测试数据进化生成方法,其特征在于如下步骤:步骤1:提出基于可达性的变异体分组方法,将全体变异体分为若干小组;步骤1.1:变异体相似性的度量方法;根据变异体被杀死的可达性条件对两个变异体之间的相似性进行描述;分两种情况讨论任意两个变异体Mi和Mj之间的相似性;情况一:D(G)中不存在任何从si到sj或者从sj到si的路径;在这种情况下,规定Mi和Mj的相似度为0;在进行分组时,这样的变异体分在不同的小组;情况二:D(G)中存在从si到sj或者从sj到si的路径;用Γ表示D(G)中所有有向路构成的集合;设:Υ1={P|si∈P且sj∈P,P∈Γ}Υ2={P|si∈P或sj∈P,P∈Γ}Υ1是既能覆盖si,又能覆盖sj的路径构成的集合;而Υ2是能够覆盖si或者覆盖sj的路径构成的集合;定义Mi和Mj的相似度为:其中,|Υ1|和|Υ2|分别表示集合Υ1和Υ2包含的路径条数;由于故r(Mi,Mj)的值位于0和1之间;r(Mi,Mj)的值越大,能够同时穿越变异语句si和sj的路径所占的比重就越大;记所有变异体构成的集合为则所有变异体之间的相似度可以用矩阵的形式进行表示;设r(Mi,Mj)=rij,定义:R=r11...r1n.........rn1...rnn]]>R称为的相似度矩阵;步骤1.2:变异体的分组方法;r(Mi,Mj)∈[0,1];给定一个阈值r0∈(0,1],如果r(Mi,Mj)的值大于阈值r0,就把Mj与Mi1分到同一个小组;具体的步骤如图1所示;步骤1:令i=1;步骤2:从中随机选择一个变异体步骤3:将以及和的相似度大于给定阈值r0的变异体分到同一个小组,记为步骤5:令步骤6:如果算法终止;否则,令i=i+1,转步骤2。图1 基于相似度的变异体异体分组方法最终,可以将中的变异体分成若干个小组,设为其中l为小组的个数;步骤2.测试数据生成问题的数学模型;考虑第i组变异体设该小组共包含ni个变异体,记为其中,i=1,2,...,l,且n1+n2+…+nl=n;对中的每个变异体构造相应的变异条件语句并插入原程序G,插装后的程序记为Gi;杀死变异体的测试数据生成问题,可以转化为覆盖变异条件语句真分支的问题;设以变量X为输入运行程序时,可以执行到变异条件语句并设其对真分支的分支距离为则当且仅当X能够覆盖的真分支,即能够杀死变异体对其进行归一化处理;令:fji(X)=1-1.001-distji(X)]]>则且当且仅当如果以变量X为输入运行程序时,不能执行到变异条件语句规定综上所述,目标函数:设测试数据X可以覆盖小组中个变异体,则的值越大,能够被穿越的变异语句就越大,从而越有可能杀死更多的变异体;把作为X要满足的约束条件,其中,α是给定的阈值;综上所述,杀死小组中所有变异体的测试数据生成问题可以建模为如下优化子问题:因为共有l小组变异体,杀死所有变异体的测试数据生成问题,可以建模为l个多目标子优化问题,具体形式如下:该模型共包含l个优化子问题,每个子优化问题又是一个多目标优化问题;这样一来,就可以把一个包含很多目标函数的优化问题,分解为若干个子优化问题,每个子问题包含的目标函数都大大减少,从而降低了问题求解的难度;步骤3.基于多种群遗传算法的测试数据生成;步骤3.1:种群设置;建立的模型包含l个子优化问题,共需要l个子种群来对这l个子问题进行优化;设对第i个子问题,建立的子种群为Popi;子种群的规模统一设为Pop_size;对每个子优化问题,随机产生Pop_size个初始解,构成初始子种群;第i个子种群Popi包含的个体记为即步骤3.2:进化个体编码;一个进化个体就是程序的的一个输入;如果程序的输入为整数,就采用二进制编码;如果程序的输入为实数,就采用实数编码;对个体进行编码后,仍然将其记为步骤3.3:进化个体适应值;对第i个子种群的第j个进化个体为给出该个体的适应值;按照式(3),第i个子优化问题一共包含ni个目标函数,可以得到这ni个目标函数在处的值采用来对个体的性能进行评价;令惩罚函数:取作为惩罚项,惩罚函数的值落在0和1之间;进化个体的适应值,记为表示为:fitnessi(Xji)=min{f1i(Xji),f2i(Xji),...,fnii(Xji)}+ρg(Xji)---(5)]]>其中,ρ为权重系数;对于第i个子种群,采用式(5)评价进化个体的性能时,的值越小,那么,就越有可能杀死中的某个变异体,其性能就越好;步骤3.4:子优化问题的约简;假设在测试数据生成过程中,中已经有k个变异体被杀死,不失一般性,假设前k个变异体被杀死,则可以把前面的k个目标函数删除;这样,第i个子优化问题的模型可以约简为:由式(6)容易看出,通过子优化问题的约简,该问题包含的目标函数不断减少,从而使得问题的求解难度不断降低;如果某个子优化问题的目标函数缩减为0,则把子优化问题从整个优化问题中删除,并终止该子优化问题对应子种群的进化;步骤3.5:算法终止条件;对于每个子优化子问题,相应子种群的进化,有如下两个终止条件:一是该子问题包含的目标函数个数变为0;此时,该子优化问题对应的变异体全部被杀死,生成了所有期望的测试数据;二是子种群进化到设定的最大进化代数;此时,即使没有找到杀死全部变异体的测试数据,算法也将终止运行;这是因为,一方面,如果无限制运行算法,需要的计算量是无法估计的;另外,有些变异体可能是等价变异体,任何测试数据都无法将这些变异体杀死;如果算法无限运行,将永远无法终止;所以,我们会在种群进化到一定代数后,强行终止算法运行;步骤3.6:算法步骤;综上所述,基于多种群优化的测试数据生成方法步骤如下:步骤1:设定算法包含的控制参数值;步骤2:子种群初始化,子种群个数与变异体组数相同;步骤3:以个体为输入运行插装后的被测程序,根据式(5),计算该个体的适应值;步骤4:判断算法的终止条件是否满足,若是,转步骤7;步骤5:判断是否满足子问题约简条件,若是,保存相应的测试数据,将相应的目标函数在目标函数集中删除;步骤6:根据进化个体适应值,比较不同进化个体的性能,进行选择、交叉,以及变异等遗传操作,产生新的种群,转步骤3;步骤7:停止进化,对期望测试数据解码,输出。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201710945540.0/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top