1.一种基于双混沌鲸鱼优化算法的测试用例自动生成方法,其特征在于,具体包括以下步骤:步骤1:获取被测程序,对其进行分析得到输入参数个数k,并将被测程序转化成控制流图;
步骤2:对被测程序进行插桩;
步骤3:计算被测程序的测试路径集PATH={path1,path2,...,pathn};其中,n表示测试路径总数;
步骤4:初始化种群数量NP、最大迭代次数Maxgen和最优值Spath;使用Logistic映射产生混沌序列来对粒子进行初始化,得到鲸鱼个体集合S={Si|i=1,2,...NP},其中每个鲸鱼个体Si能够表示为k维的位置向量(x1,x2,...,xk);
步骤5:使用层接近法和分支距离法得到适应度函数;
步骤6:从测试路径集PATH中选择一条路径pathj作为目标测试路径;其中,j表示第j条测试路径,j的取值从1到n;
步骤7:运行插桩后的代码,得到标识变量和分支距离信息;
步骤8:根据适应度函数计算个体的适应度值,并找出当前迭代最优个体Siter;
步骤9:若当前迭代最优个体Siter优于目标测试路径的最优值Spath,则更新最优值Spath,否则直接执行步骤10;
步骤10:若最优值Spath已覆盖目标路径pathj,或者迭代次数已经达到最大迭代次数Maxgen,则跳转到步骤12,否则跳转到步骤11;
步骤11:对最优值Spath进行混沌扰动操作,从混沌序列中获得最优个体S*;分别以Spath和S*为中心,以NP/2为种群数目,组成一个新的种群,并将其作为新的输入,跳转到步骤7;
步骤12:终止种群进化,将最优值Spath保存到测试用例集A中;将j加1,若j大于n,则跳转到步骤13,否则,将最优值设为空,将步骤4中的初始化个体作为新的初始化种群,将测试路径集PATH中的路径pathj作为新的目标测试路径并跳转到步骤7;
步骤13:终止循环并输出测试用例集A。
2.根据权利要求1所述的基于双混沌鲸鱼优化算法的测试用例自动生成方法,其特征在于,在步骤5中:层接近法指的是实际测试路径与目标测试路径pathj的接近程度,层接近法的适应度值计算公式如(1)所示:其中,layer_method(Si)表示鲸鱼个体Si层接近法的适应度值,u表示测试路径的分支总数,v表示实际测试路径与目标测试路径不相同的分支数;
分支距离法指的是实际测试路径分支与目标测试路径分支之间的距离,当距离为0时,表示该分支已被覆盖;分支距离法的适应度值计算公式如(2)所示:其中,layer_method(Si)表示鲸鱼个体Si分支距离法的适应度值,dism表示当前鲸鱼个体Si与第m条分支的距离;
适应度函数的表示形式如公式(3)所示:
fitness(Si)=layer_method(Si)+branch_method(Si) (3);
其中,layer_method(Si)表示鲸鱼个体Si层接近法的适应度值,layer_method(Si)表示鲸鱼个体Si分支距离法的适应度值。