1.一种基于改进蚁群算法的回归测试用例优先级排序方法,其特征在于,根据测试用例集、回归测试历史结果和软件的故障级别,建立测试用例故障矩阵,根据测试用例故障分布信息对测试用例故障矩阵进行二进制编码,在此基础上,计算测试用例距离矩阵,建立一个无向图,使用改进后的蚁群算法对测试用例集进行排序,最终输出测试用例排序集合。
2.根据权利要求1所述的基于改进蚁群算法的回归测试用例优先级排序方法,其特征在于,具体包括如下步骤:步骤1:针对软件编写相应的测试用例集T={t1,t2…tn},n是测试用例集T包含的用例个数;获取回归测试历史结果检测出的故障集合Bug={b1,b2,...,bm},m是检测出的故障总数;建立用例故障矩阵Anm,n是测试用例的数量,m是故障总数,若用例ti在历史测试中检测出故障 则 否则 根据测试用例故障分布信息对测试用例故障矩阵进行二进制编码;
步骤2:根据测试用例的二进制编码计算测试用例距离矩阵 dij为
用例ti与tj之间的距离,若i=j则令dij=1000,表示用例ti到自身的距离为1000;
步骤3:获取软件的故障级别,建立故障级别数组f[n]=[f1,f2…fn],其中n为测试用例数量,fi=x,x为用例ti所检测出的软件故障最高等级;
步骤4:生成一个无向图G=(V,E),V是无向图的顶点,表示每个测试用例,E是无向图的边,由顶点和其它顶点连接而成,标注与更改代码相关的测试用例所在的顶点,初始化每条边的信息素;
步骤5:初始化蚁群数量λ、初始信息素量τ、每只蚂蚁携带的信息素量Q、信息素残留系数ρ、信息启发因子α、期望值启发因子β、迭代次数z和每只蚂蚁的禁忌表tabu(k);
步骤6:根据测试用例距离矩阵D和故障级别数组f[n]计算外启发信息ηij;
步骤7:执行改进后的蚁群算法,进行一轮迭代,获取一条路径;
步骤8:判断是否达到迭代次数,若是,终止迭代,输出最优路径Path,得到排序后的测试用例集合;否则挥发部分信息素,返回步骤7,迭代次数加一。
3.根据权利要求2所述的基于改进蚁群算法的回归测试用例优先级排序方法,其特征在于,所述步骤2中:取用例ti、tj,假设ti=(0,0,0,1,1,0,1),tj=(1,1,0,0,0,0,1),则用例ti、tj距离当两个用例的故障分布越相似,则距离越远,蚂蚁会优先选择距离近的用例,以尽快检测出程序中的更多故障。
4.根据权利要求2所述的基于改进蚁群算法的回归测试用例优先级排序方法,其特征在于,所述步骤4中:对基本蚁群算法中初始信息素的值进行调整,对每条边信息素的初始值做不均匀处理:其中,ε和ε0是大于0的常数,取值介于0‑1之间;在t=0时刻,根据该用例是否与代码更改相关进行信息素的分布,若下一用例与代码更改相关,那么该边的初始信息素值较大,反之就较小,加快算法的收敛速度。
5.根据权利要求2所述的基于改进蚁群算法的回归测试用例优先级排序方法,其特征在于,所述步骤5中:对每只蚂蚁携带的信息素量Q根据待排序用例规模做动态处理,如公式(2)所示:其中,n是测试用例的数量,Q与测试用例数量成正比,固定Q,若待排序用例集规模较小,路径上信息素积累较快,算法容易陷入局部最优,若待排序用例集规模较大,则收敛速度缓慢,所以蚂蚁携带的信息素量不能过多或过少,根据问题规模动态对Q赋值。
6.根据权利要求2所述的基于改进蚁群算法的回归测试用例优先级排序方法,其特征在于,所述步骤6中:ηij是根据测试用例距离和故障级别数组计算的启发式信息,如公式(3)所示:其中,dij为测试用例ti、tj的距离;f[j]表示用例tj在历史测试中所检测出的软件故障最高等级;外启发信息ηij与距离dij成反比,表示蚂蚁更有可能先选择距离自己近的用例,从而更快检测出程序故障;此外,在启发式信息ηij的计算中引入了软件故障等级f[j],用例tj覆盖故障的等级越高,蚂蚁会越早的选择tj。
7.根据权利要求2所述的基于改进蚁群算法的回归测试用例优先级排序方法,其特征在于,所述步骤7中:蚁群算法的转移概率不是随机概率,是根据信息素和启发式信息来决定,假定在t时刻,蚂蚁k在目前所在的用例ti要选择转移去的下一个用例tj,概率大小为 如公式(4)所示:其中,allowedk表示允许蚂蚁k下一步可以去的用例的集合,τij是用例ti和用例tj之间边eij上的信息素量;α,β分别表示两类启发式信息的影响程度,α=1,β=5;S表示蚂蚁下一次转移可选的用例; 表示边eij上的信息素量; 表示边eij上的启发信息;
τij更新规则如公式(5)所示:
τij(t+1)=ρ·τij(t)+Δτij(t,t+1) (5)其中, 表示t时刻,蚂蚁k在边eij上释放的信息素量,ρ(0<
ρ<1)是信息素残留系数,ρ=0.8699,λ是一轮迭代中蚂蚁的数量,λ=50;
采用蚁周模型对Δτij(t,t+1)进行调整,如公式(6)所示:蚁周模型对边eij信息素增量是在本次迭代结束时才进行调整;Q为常数,表示蚂蚁循环一次所释放的信息素总量,一只蚂蚁在经过用例ti、tj时对边eij信息素的增量为每单位长k k度Q/L,L为蚂蚁在本次迭代走出的路径长度。