基于混沌遗传算法的测试用例集约简算法
【专利摘要】本发明公开了基于混沌遗传算法的测试用例集约简算法,初始化父体编码,对父体进行适应度计算,定义遗传算子;遗传算子包括选择、交叉、变异三步,主要对父体进行遗传变异,对其进行优化最终得到新的父体的一个过程,新父体的生产可能会增加向最优解变异的机会,因此在遗传算子结束后需再对新的父体进行适应值评价,判断是否满足输出条件,满足则输出最优子代,否则,添加混沌扰动,不断迭代直到前后两次计算出的适应度平均值之差小于预先给定的最小正数ε1为止。本发明的测试用例集约简算法简单,能提高测试效率、降低测试成本。
【专利说明】基于混沌遗传算法的测试用例集约简算法
【技术领域】
[0001] 本发明属于软件测试用例最小化生成【技术领域】,涉及基于混沌遗传算法的测试用 例集约简算法。
【背景技术】
[0002] 软件测试是软件质量保重中必不可少的一部分,为满足一定测试需求覆盖率,生 成的测试用例数目往往异常庞大,软件系统开发过程的迭代需要频繁的进行回归测试,测 试冗余严重。为提高测试效率、降低测试成本,减少测试用例的执行、管理与维护的开销,测 试用例集的约简是极为必要的。现有的测试用例约简方法主要有贪心算法、启发式算法、整 数规划算法、扩张集算法、遗传算法等。针对遗传算法用于软件测试用例集约简时,在适应 度函数选择不当的情况下极有可能陷入局部最优的问题,本发明运用混沌遗传算法来进行 测试用例集的约简,形成了基于遗传算法扩展算法测试用例约简模型(GEETR模型),在GEE 算法的基础上继续将混沌理论引入其中,形成CGTR模型。把遍历范围"放大",然后对所得 混沌变量进行编码,对其进行选择、复制、交叉、变异操作,然后对各个混沌变量附加一混沌 小扰动,通过不断进化收敛到一个最适合的个体上,混沌系统的遍历性能够在全局范围内 进行无重复的搜索,减少了搜索的随机性,从而提高搜索的效率。
【发明内容】
[0003] 本发明的目的在于提供基于混沌遗传算法的测试用例集约简算法,解决了现有的 测试用例集的约简的方法复杂,效率低的问题。
[0004] 本发明所采用的技术方案是按照以下步骤进行:
[0005] 步骤1 :编码、初始化种群;初始化父体编码时满足当父体Wi与子体g[i]下标相等 时,gm = 1,其余 gm = 〇 ;
[0006] 步骤2 :当父体编码改变时需重新计算其适应度,适应度值主要用于轮盘赌选择 算法和混沌遗传算法,使用传统适应度函数计算公式,将适应度计算的对象变为对父体A 按公式F(Wi) = CovWVCosUWi)进行适应度计算,其中,CotW)指父体的测试覆盖度, C〇V(Wi)是父体的测试运行代价,覆盖程度CrnKWi)为计算父体编码1中覆盖测试需求rk的 的个数;
[0007] 步骤3 :定义遗传算子;遗传算子包括选择、交叉、变异三步,主要对父体进行遗传 变异,对其进行优化最终得到新的父体的一个过程,新父体的生产可能会增加向最优解变 异的机会,因此在遗传算子结束后需再对新的父体进行适应值评价,判断是否满足输出条 件,满足则输出最优子代,否则,则进行步骤4 ;
[0008] 步骤4 :添加混沌扰动;对当前种群中适应度后90%的父体,利用混沌系统,对其 进行一定程度的微小扰动,从而提高其适应度,将选中的父体1 = [gm, g[2], . . .,g[n]]所指 代的二进制的每一位都加一混沛扰动,按式g' [k] = (1- ε ) g% ε · g[k], 1 < k < η进行添 力口,然后按式g" [k] = Ci+di · g' [k]映射为优化变量,进行迭代计算;其中g' [k]为经过 添加随机扰动后形成的一个混沌变量,g#为当前最优父体所指代的二进制编码,g[k]为迭代 k次之后的编码,通过g' η可得到一组新父体G' [k] = (g' [1]g' [2],...,g' [η]),〇< ε <1,对于ε的取值采用自适应进行选取,随着搜索逐 渐接近最优点,需将ε逐渐缩小,以保证在小范围内搜索最优解:
[0009]
【权利要求】
1. 基于混沌遗传算法的测试用例集约简算法,其特征在于按照以下步骤进行: 步骤1 :编码、初始化种群;初始化父体编码时满足当父体Wi与子体g[i]下标相等时,g[i] = 1,其余g[i] =O; 步骤2 :当父体编码改变时需重新计算其适应度,适应度值主要用于轮盘赌选择算法 和混沌遗传算法,使用传统适应度函数计算公式,将适应度计算的对象变为对父体Wi按公 式F(Wi) =Cov(Wi)/Cost(Wi)进行适应度计算,其中,Cov(Wi)指父体的测试覆盖度,Cov(Wi) 是父体的测试运行代价,覆盖程度Cov(Wi)为计算父体编码Wi中覆盖测试需求rk的的个 数; 步骤3 :定义遗传算子;遗传算子包括选择、交叉、变异三步,主要对父体进行遗传变 异,对其进行优化最终得到新的父体的一个过程,新父体的生产可能会增加向最优解变异 的机会,因此在遗传算子结束后需再对新的父体进行适应值评价,判断是否满足输出条件, 满足则输出最优子代,否则,则进行步骤4 ; 步骤4 :添加混沌扰动;对当前种群中适应度后90 %的父体,利用混沌系统,对其进行 一定程度的微小扰动,从而提高其适应度,将选中的父体Wi = [gm,g[2],. . .,g[n]]所指代的 二进制的每一位都加一混沛扰动,按式g' [k] = (I-ek""+eMw,I<k<n进行添加,然 后按式g" = [k]映射为优化变量,进行迭代计算;其中g' [k]为经过添加随 机扰动后形成的一个混沌变量,g#为当前最优父体所指代的二进制编码,g[k]为迭代k次之 后的编码,通过g' 彡ks^n可得到一组新父体G'w=(g'⑴ g' [2],...,g' [n]),〇<e<1,对于e的取值采用自适应进行选取,随着搜索逐渐接近 最优点,需将e逐渐缩小,以保证在小范围内搜索最优解:
m为初始解群数,k为迭代次数,在式F(Wi) =Cov(Wi)/Cost(Wi)中Ci,Cli为变换常数, 通过式g" [k] =Cjdi ?g'w后得到父体的新编码G" [k] = (g"[邱〃 [2],? ? ?,g" w), 由于定义的编码g" [k]e{〇, 1},因此将g" [k]通过式
变换到相应的取值, 不断迭代直到前后两次计算出的适应度平均值之差小于预先给定的最小正数ei为 止。
2. 按照权利要求1所述基于混沌遗传算法的测试用例集约简算法,其特征在于:所述 步骤3中选择、交叉、变异三步的具体过程为: 选择,采用轮盘赌选择算法,利用比例于各个父体适应度的概率决定其后代的遗留可 能性,若某父代Wi,其适应度为F(Wi),则其被选择的概率为
为了选择父体进行 交配,则需进行多次选择,每次需利用随机函数产生一个[〇,1]之间的随机数,该随机数将 作为选择指针来确定被选父体; 交叉:采用单点交叉,当2个父体W1J2进行交叉操作时,设W1 = [X1,X2, ...,xn] ,W2 = [yp y2,...,yn],首先确认父体交叉点的有效区域,然后在该区域内随机选择交叉点,确保 交叉点操作能生成不同的新父体,交叉点的有效区域确定如下:
变异:根据种群的大小动态的进行变化,采用自适应遗传算法策略,在保证了种群的多 样性的同时,也确保了优化的收敛性:
3.按照权利要求1所述基于混沌遗传算法的测试用例集约简算法,其特征在于:所述 步骤4中最小正数e i为〇. 〇〇1。
【文档编号】G06F11/36GK104268077SQ201410490197
【公开日】2015年1月7日 申请日期:2014年9月23日 优先权日:2014年9月23日
【发明者】蒋云良, 楼俊钢 申请人:湖州师范学院