[发明专利]种群进化多目标测试用例优先级排序方法有效
申请号: | 201910347791.8 | 申请日: | 2019-04-28 |
公开(公告)号: | CN110059015B | 公开(公告)日: | 2022-09-30 |
发明(设计)人: | 孙家泽;陈静敏;王小银 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 710121 陕西*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明针对回归软件测试中多目标测试用例优先级排序问题,公开了种群进化多目标测试用例优先级排序方法,属于软件测试技术领域。该方法首先对个体进行编码,随机初始化种群并计算非支配解集,以平均分支覆盖率和测试用例序列执行总时间为适应度函数;然后通过变异、交叉和选择生成新一代种群,使用适应度函数作为个体评价准则,实时更新迭代过程中非支配解集;最后,当迭代次数达到最大迭代次数时,非支配解集中个体为最优解集。本发明提供了一种收敛速度快的测试用例优先级排序方法,在回归测试中可尽早发现软件缺陷,降低测试成本。 | ||
搜索关键词: | 种群 进化 多目标 测试 优先级 排序 方法 | ||
【主权项】:
1.种群进化多目标测试用例优先级排序方法,其特征在于包括以下几个步骤:步骤一:使用二维矩阵A记录测试用例集对待测程序的覆盖情况,假设待测程序有m个分支,用n个测试用例进行测试,若测试用例集用T表示,T={T1,T2,…,Ti,…Tn},其中Ti(1≤i≤n)为测试用例集中的第i个测试用例,用ET来表示测试用例集中测试用例的执行时间,T={ET1,ET2,…,ETi,…ETn},ETi表示执行第i个测试用例花费的时间,对分支由1到m进行编号,对测试用例用1到n进行编号,则A有n行m列,若第i个测试用例覆盖了第j个分支,则Aij=1,否则Aij=0;步骤二:编码;每一个个体被编码为一个有序测试用例编号串,串长度为测试用例总个数n;步骤三:构造适应度函数:平均分支覆盖率(Average Percentage of Branch Coverage,APBC)和有效执行时间(Effective Execution Time,EET);针对任一个个体,TBv为首个可以覆盖到待测程序中第v个分支Bv的测试用例在该测试用例执行序列中所处的次序,假设执行完测试后待测程序中被覆盖的分支的数量为M,那么M个分支对应M个这样的次序,所有次序之和为
由此可以构造适应度函数,APBC表示平均分支覆盖率,
即
其中TBv(1≤v≤M)可以用分支覆盖信息矩阵A进行计算:针对被覆盖的分支Bv,在A中查找第一个覆盖到该分支的测试用例在该测试用例序列中所处的次序,那么这个次序就是TBv的数值;EET表示测试用例优先排序序列首次达到分支全覆盖时执行测试用例的时间总和;
执行完该测试用例优先排序序列中的前m′个测试用例时,能够覆盖被测程序中的所有分支;步骤四:随机初始化种群;设定种群规模为N,即种群中包含N个个体,若用D表示种群,则D={<r11,r12,…,r1n>,…,<r21,r22,…,r2n>,…,<rw1,rw2,…,rwn>,…,<rN1,rN2,…,rNn},其中<rw1,rw2,…,rwn>代表种群中的第w个个体;设置变异概率F和交叉概率CR和以及最大迭代次数MAX;步骤五:计算初始种群非支配解集Collection;求解所有初始种群个体{R1,R2,…,RN}的平均分支覆盖率和有效执行时间;得到两个由N个适应值组成的数组,表示为{APBC1,APBC2,…,APBCN}和{EET1,EET2,…,EETN};比较个体间非支配关系确定初始非支配解集;对于两个排序目标APBC和EET,测试用例优先排序序列在排序目标函数APBC上的值均越大越好,在目标EET上的值越小越好,那么对于任意个体Rk和Rr那么当APBCk<APBCr并且EETk<EETr时,或APBCk>APBCr并且EETk>EETr时,Rk和Rr互为非支配解,加入外部非支配解集Collection,Collection中解两两互为非支配解;令迭代次数g=1,开始迭代;步骤六:执行变异操作;对于种群中每个个体,假设为A1,A1=(a11,a21,a31,a41,a51,…,an1)随机生成一个0到1的实数,当变异概率F大于这个实数时,对A1执行变异操作,变异操作的过程为:从A1上随机选择两个位置p1和p2,0≤p1≤p2≤n,设p1为2,p2为5,截取该位串,然后随机在剩下的位串中选择一个位置p3,假设p3为n,插入该子位串;此时,变异后的A1为A1′=(a11,a61,a71,a81,…,an1,a21,a31,a41,a51);步骤七:执行交叉操作;针对种群中每个个体,将变异后的实验个体A1′和在外部非支配解集中任意一个体Ax作为两个父个体,x为在外部Collection解集中个体下标,设A1′=(a11,a61,a71,a81,…,an1,a21,a31,a41,a51),Ax=(a1x,a2x,a3x,a4x,a5x,…,anx),假设交叉操作后产生的子代个体为Ac1和Ac2;随机生成一个0到1的实数,当交叉概率CR大于这个实数时,执行交叉操作,没有进行交叉的个体被直接复制进新种群;交叉操作的具体过程如下:(1)随机产生两个整数k1,k2作为交叉点,k1,k2∈[1,n],其中n为测试用例集中测试用例的数目;(2)将父代个体A1′上两个交叉点之间的基因和父代个体Ax上两个交叉点之间的基因进行交叉;(3)从第二个交叉点开始,将原来相应的父代按照顺序进行填充,如果选择的元素已经存在在该子代中,跳过该元素,选择下一个元素,直到所有的测试用例都被选择一次仅且一次;生成子代Ac1个体和子代Ac2个体;(4)分别计算Ac1和Ac2的APBC值,取APBC大的子代个体作为最终交叉个体A1″;步骤八:执行选择操作;(1)记所有交叉后个体为{R1′,R2′,…,RN′},其适应值表示为{APBC1′,APBC2′,…,APBCN′}和{EET1′,EET2′,…,EETN′},其中APBCx′(1≤x≤N)表示交叉后种群第x个个体的平均分支覆盖率;EETx′(1≤x≤N)表示交叉后种群第x个个体的有效执行时间;(2)比较所有原始个体与交叉后个体的支配关系得到最终选择结果个体,如果交叉后个体和原始个体互相非支配,则交叉后个体与原始个体互为非支配解,将交叉后个体作为选择结果个体;如果不为非支配关系,即APBC1>APBC1′并且EET1<EET1′则将原始个体作为最终选择结果个体;(3)更新当前个体,将每个个体选择结果作为当前种群个体值;步骤九:计算当前种群非支配解集Collection;计算当前种群个体{R1″,R2″,…,RN″}的平均分支覆盖率和有效执行时间;比较个体间非支配关系确定非支配解集,加入外部非支配解集Collection中;步骤十:更新当前Collection解集;两两比较Collection中个体,不为非剔除被支配的解,保证Collection中个体两两互为非支配解;步骤十一:判断迭代终止条件,如果当前迭代次数大于最大迭代次数MAX,则此时Collection解集为多目标测试用例优先级排序序列最优解集,输出该解集中序列并停止迭代;否则,令迭代次数g=g+1,返回步骤六,继续迭代。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910347791.8/,转载请声明来源钻瓜专利网。