[发明专利]一种基于变异体分组的软件变异测试数据进化生成方法有效
申请号: | 201710945540.0 | 申请日: | 2017-10-12 |
公开(公告)号: | CN107729241B | 公开(公告)日: | 2020-11-03 |
发明(设计)人: | 姚香娟;巩敦卫;王佩佩;党向盈;杨焱;施智敏;张功杰 | 申请(专利权)人: | 中国矿业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/12 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 221116 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 异体 分组 软件 变异 测试数据 进化 生成 方法 | ||
1.一种基于变异体分组的软件变异测试数据进化生成方法,其特征包括如下步骤:
步骤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称为的相似度矩阵;
步骤1.2:变异体的分组方法:
r(Mi,Mj)∈[0,1];给定一个阈值r0∈(0,1],如果r(Mi,Mj)的值大于阈值r0,就把Mj与Mi分到同一个小组;具体的步骤如下所示:
步骤1.2.l:令i=1;
步骤1.2.2:从中随机选择一个变异体
步骤1.2.3:将以及和的相似度大于给定闷值r0的变异体分到同一个小组,记为
步骤1.2.4:令
步骤1.2.5:如果算法终止;否则,令i=i+1,转步骤2;
最终,可以将中的变异体分成若干个小组,设为其中l为小组的个数;
步骤2:测试数据生成问题的数学模型:
考虑第i组变异体设该小组共包含ni个变异体,记为其中,i=1,2,...,l,且n1+n2+…+nl=n;
对中的每个变异体构造相应的变异条件语句并插入原程序G,插装后的程序记为Gi;杀死变异体的测试数据生成问题,可以转化为覆盖变异条件语句真分支的问题;
设以变量X为输入运行程序时,可以执行到变异条件语句并设其对真分支的分支距离为则当且仅当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之间;进化个体的适应值,记为表示为:
其中,ρ为权重系数;对于第i个子种群,采用式(5)评价进化个体的性能时,的值越小,那么,就越有可能杀死中的某个变异体,其性能就越好;
步骤3.4:子优化问题的约简:
假设在测试数据生成过程中,中已经有k个变异体被杀死,不失一般性,假设前k个变异体被杀死,则可以把前面的k个目标函数删除;这样,第i个子优化问题的模型可以约简为:
由式(6)容易看出,通过子优化问题的约简,该问题包含的目标函数不断减少,从而使得问题的求解难度不断降低;
如果某个子优化问题的目标函数缩减为0,则把子优化问题从整个优化问题中删除,并终止该子优化问题对应子种群的进化;
步骤3.5:算法终止条件:
对于每个子优化子问题,相应子种群的进化,有如下两个终止条件:一是该子问题包含的目标函数个数变为0;此时,该子优化问题对应的变异体全部被杀死,生成了所有期望的测试数据;二是子种群进化到设定的最大进化代数;此时,即使没有找到杀死全部变异体的测试数据,算法也将终止运行;
步骤3.6:算法步骤:
综上所述,基于多种群优化的测试数据生成方法步骤如下:
步骤3.6.1:设定算法包含的控制参数值;
步骤3.6.2:子种群初始化,子种群个数与变异体组数相同;
步骤3.6.3:以个体为输入运行插装后的被测程序,根据式(5),计算该个体的适应值;
步骤3.6.4:判断算法的终止条件是否满足,若是,转步骤7;
步骤3.6.5:判断是否满足子问题约简条件,若是,保存相应的测试数据,将相应的目标函数在目标函数集中删除;
步骤3.6.6:根据进化个体适应值,比较不同进化个体的性能,进行选择、交叉,以及变异三种遗传操作,产生新的种群,转步骤3;
步骤3.6.7:停止进化,对期望测试数据解码,输出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710945540.0/1.html,转载请声明来源钻瓜专利网。