一种上位多目标测试用例优先级排序方法技术

技术编号:20221603 阅读:37 留言:0更新日期:2019-01-28 20:10
针对回归测试中的多目标测试用例优先级排序问题,本发明专利技术公开了一种上位多目标测试用例优先级排序方法。该方法首先以测试用例编号有序序列作为粒子编码,测试用例编号序列的集合作为粒子群,随机生成初始种群;以测试用例序列对待测程序的平均分支覆盖率和有效执行时间作为适应度评价函数;然后采用上位交叉的方法产生新个体,使用非支配解集中的粒子作为全局最优粒子;最后,当迭代次数达到最大迭代次数时,非支配解集中的个体就是最优多目标排序结果。与已有的方法相比,本发明专利技术提供一种非支配解集分布范围广、适应值更高的多目标测试用例优先级排序方法,本方法有助于在回归测试过程中尽早发现软件缺陷,降低测试成本。

【技术实现步骤摘要】
一种上位多目标测试用例优先级排序方法
本专利技术属于软件测试
,尤其是软件回归测试
,具体涉及一种上位多目标测试用例优先级排序方法。
技术介绍
在软件演化过程中,测试用例优先级(TestCasePrioritization,TCP)技术作为一种高效实用的回归测试技术,通过将测试用例按照某种测试目标进行排序来获得更高的测试效率,对于提高缺陷的早期检测速率和降低测试成本有重要的意义。随着工业测试要求的不断提高,只针对单一测试目标对测试用例序列进行优化已不能够满足工业测试需求,因为实际测试过程中需考虑多种因素对软件质量的影响,例如测试成本、时间和代码修改等因素,多目标测试用例优先排序问题(Multi-ObjectiveTestCasesPrioritization,MOTCP)是目前回归测试中急需解决的一个重要问题。多目标测试用例优先级排序问题是目前软件回归测试领域中的一个研究热点,由于在多目标测试用例优先排序中多个目标一般存在冲突关系,为了搜索到多个目标的最优解集,普遍采用的工程方法是将多目标测试用例优先排序问题转化为组合优化问题采用启发式方法解决。DebKalyanmoy等提出带精英策略的快速非支配排序遗传算法(Non-dominatedSortingGeneticAlgorithmII,NSGA-II)解决多目标优化问题,虽然NSGA-II运行速度快,解集的收敛性较好,但是遗传算法中选择、交叉、变异等操作相对复杂,算法性能不理想。TyagiManika等用于求解多目标优化问题的粒子群算法(Multi-ObjectiveParticleSwarmOptimization,MOPSO)解决测试用例优先排序,但MOPSO收敛性不好。陈云飞等为提高粒子在迭代过程中的多样性,参照遗传算法中的交叉操作提出了一种基于PSO的测试用例预优化方法,采用顺序交叉和单点交叉的方法对粒子进行更新。由于测试用例序列中存在上位基因段,上位基因段能表达解的原本性状,对适应值的影响起到决定性作用,本专利技术针对多目标的测试用例优先排序问题,利用上位交叉方法对粒子群优化算法中速度及位置的更新方式进行重新定义,提出了一种基于上位性的多目标测试用例优先排序方法,提高回归测试效率,有助于尽早发现软件缺陷。
技术实现思路
在进行软件回归测试时,由于测试成本、时间等多因素的影响,通常有多个测试目标需要被满足,因此一个测试用例排序结果的优劣需要从多个指标来进行评价。在多目标测试用例优先排序中,普遍情况下求得使多个评价指标均达到单目标时的最优化是难以做到的,需要求解问题的非支配解集,但传统的方法得到的非支配解集分布不够广泛,适应值欠佳,因此需要发掘测试用例序列的特性寻找新的高效的多目标测试用例优先级方法。本专利技术的技术方案为:一种上位多目标测试用例优先级排序方法,具体包括以下几个步骤:步骤一:记录回归测试中的各个测试用例的分支覆盖情况和有效执行时间得到测试用例分支覆盖矩阵A和有效执行时间向量V;假设某待测程序有m个分支,用n个测试用例进行测试,若测试用例集用Φ表示,Φ={T1,T2,…,Ti,…,Tn},其中Ti(1≤i≤n)为测试用例集中的第i个测试用例,构造的分支覆盖矩阵A的大小为n×m,有效执行时间向量V的大小为n,待测程序中分支编号的范围是1到m,测试用例编号的范围是1到n,第i个测试用例的有效执行时间为ETi,若第i个测试用例执行中覆盖了第j个分支,则Aij=1,否则Aij=0;步骤二:编码;针对给定的待测程序和测试用例集,给每一个测试用例一个1到n的编号,测试用例执行优先排序序列就是测试用例编号的一个全排列,个体被编码为一个测试用例编号全排列串,编码的长度为测试用例的个数n;步骤三:构造适应度函数;选择用平均分支覆盖率(AveragePercentageofBranchCoverage,APBC)和有效执行时间(EffectiveExecutionTime,EET)两个目标作为适应度函数来衡量一个测试用例优先排序序列的优劣;针对任一个体,TBi表示首个覆盖程序中第i个分支的测试用例在该测试用例优先排序序列中所处的位置。执行完序列上的前m'个测试用例时,能够覆盖被测程序中的所有分支,ETi表示执行测试用例优先排序序列中第i个测试用例花费的时间。由此可以构造适应度函数APBC和EET,其中TBi可以用分支覆盖矩阵A进行计算,针对被覆盖的第i个分支,在A中查找第一个覆盖到该语句的测试用例在该测试用例序列中所处的次序,那么这个次序就是TBi的数值;步骤四:随机初始化种群;设定种群规模为N,即种群中包含N个个体,随机初始化各个粒子为测试用例编号的全排列,并作为该粒子的历史最优,随机初始各个粒子的初始速度为一个测试用例编号的全排列,计算各个个体的适应值,根据种群中所有个体之间帕托累关系计算初始种群的非支配解集ARCHIVE,从种群的ARCHIVE中随机取一个粒子作为全局最优粒子,设置最大迭代次数MAX;令迭代次数W=1,开始迭代:步骤五:采用上位交叉的方法产生新的子个体,选择两个本次没有更新的个体作为父代个体,针对父代个体1和父代个体2,其子代个体1和子代个体2的具体产生过程如下:1)随机产生两个整数k1、k2作为交叉点,k1,k2∈[0,n-1],其中n为测试用例集中测试用例的数目;2)将父代个体1上两个交叉点之间的基因直接复制到其对应的子代个体1中,作为该子代个体对应位置上的基因;3)遍历父代个体2,剔除与父代个体1上两个交叉点之间相同的基因,记剩余基因形成的序列为s1;4)以子代个体1上第一个没有基因的位置作为起始位置,用s1中的基因依次填充子代个体1上没有基因的位置,形成完整的子代个体1;5)将父代个体2上两个交叉点之间的基因直接复制到其对应的子代个体2中,作为该子代个体对应位置上的基因;6)遍历父代个体1,剔除与父代个体2上两个交叉点之间的基因相同的基因,记剩余基因形成的序列为s2;7)以子代个体2上第一个没有基因的位置作为起始位置,用s2中的基因依次填充子代个体2上没有基因的位置,形成完整的子代个体2;步骤六:使用步骤五的上位交叉方法对粒子进行更新,针对上位交叉后产生的两个子代个体,如果两个子个体是帕累托支配关系,则选择支配的子个体作为交叉结果,如果是帕累托非支配关系,则任选一个子个体作为交叉结果。针对第i个粒子,首先对迭代完成后的个体历史最优解pi(k)与全局最优解pg(k)进行上位交叉得到一个表示粒子速度的增量vi'(k+1);然后vi'(k+1)与粒子当前的速度vi(k)进行上位交叉得到粒子更新后的速度vi(k+1);最后,对粒子当前位置xi(k)和更新后的速度vi(k+1)进行上位交叉得到粒子更新后的位置xi(k+1);步骤七:对于第i个粒子,若当前粒子能支配比该粒子局部最优位置,则将粒子的当前位置作为该粒子的历史最优解;步骤八:更新当前种群的非支配解集ARCHIVE,将当前粒子和非支配解集ARCHIVE中各个个体进行帕累托支配关系计算,如果当前粒子支配ARCHIVE中某些个体,则用当前粒子替换其支配的ARCHIVE集中支配的个体,如果和当前ARCHIVE中所有个体是非支配关系,则加入ARCHIVE集;步骤九:全局最本文档来自技高网
...

【技术保护点】
1.一种上位多目标测试用例优先级排序方法,其特征在于包括以下步骤:步骤一:记录回归测试中的各个测试用例的分支覆盖情况和有效执行时间得到测试用例分支覆盖矩阵A和有效执行时间向量V;假设某待测程序有m个分支,用n个测试用例进行测试,若测试用例集用Φ表示,Φ={T1,T2,…,Ti,…,Tn},其中Ti(1≤i≤n)为测试用例集中的第i个测试用例,构造的分支覆盖矩阵A的大小为n×m,有效执行时间向量V的大小为n,待测程序中分支编号的范围是1到m,测试用例编号的范围是1到n,第i个测试用例的有效执行时间为ETi,若第i个测试用例执行中覆盖了第j个分支,则Aij=1,否则Aij=0;步骤二:编码;针对给定的待测程序和测试用例集,给每一个测试用例一个1到n的编号,测试用例执行优先排序序列就是测试用例编号的一个全排列,个体被编码为一个测试用例编号全排列串,编码的长度为测试用例的个数n;步骤三:构造适应度函数;选择用平均分支覆盖率(Average Percentageof Branch Coverage,APBC)和有效执行时间(Effective Execution Time,EET)两个目标作为适应度函数来衡量一个测试用例优先排序序列的优劣;针对任一个体,TBi表示首个覆盖程序中第i个分支的测试用例在该测试用例优先排序序列中所处的位置。执行完序列上的前m'个测试用例时,能够覆盖被测程序中的所有分支,ETi表示执行测试用例优先排序序列中第i个测试用例花费的时间。由此可以构造适应度函数APBC和EET,...

【技术特征摘要】
2017.11.07 CN 20171108626431.一种上位多目标测试用例优先级排序方法,其特征在于包括以下步骤:步骤一:记录回归测试中的各个测试用例的分支覆盖情况和有效执行时间得到测试用例分支覆盖矩阵A和有效执行时间向量V;假设某待测程序有m个分支,用n个测试用例进行测试,若测试用例集用Φ表示,Φ={T1,T2,…,Ti,…,Tn},其中Ti(1≤i≤n)为测试用例集中的第i个测试用例,构造的分支覆盖矩阵A的大小为n×m,有效执行时间向量V的大小为n,待测程序中分支编号的范围是1到m,测试用例编号的范围是1到n,第i个测试用例的有效执行时间为ETi,若第i个测试用例执行中覆盖了第j个分支,则Aij=1,否则Aij=0;步骤二:编码;针对给定的待测程序和测试用例集,给每一个测试用例一个1到n的编号,测试用例执行优先排序序列就是测试用例编号的一个全排列,个体被编码为一个测试用例编号全排列串,编码的长度为测试用例的个数n;步骤三:构造适应度函数;选择用平均分支覆盖率(AveragePercentageofBranchCoverage,APBC)和有效执行时间(EffectiveExecutionTime,EET)两个目标作为适应度函数来衡量一个测试用例优先排序序列的优劣;针对任一个体,TBi表示首个覆盖程序中第i个分支的测试用例在该测试用例优先排序序列中所处的位置。执行完序列上的前m'个测试用例时,能够覆盖被测程序中的所有分支,ETi表示执行测试用例优先排序序列中第i个测试用例花费的时间。由此可以构造适应度函数APBC和EET,其中TBi可以用分支覆盖矩阵A进行计算,针对被覆盖的第i个分支,在A中查找第一个覆盖到该语句的测试用例在该测试用例序列中所处的次序,那么这个次序就是TBi的数值;步骤四:随机初始化种群;设定种群规模为N,即种群中包含N个个体,随机初始化各个粒子为测试用例编号的全排列,并作为该粒子的历史最优,随机初始各个粒子的初始速度为一个测试用例编号的全排列,计算各个个体的适应值,根据种群中所有个体之间帕托累关系计算初始种群的非支配解集ARCHIVE,从种群的ARCHIVE中随机取一个粒子作为全局最优粒子,设置最大迭代次数MAX;令迭代次数W=1,开始迭代:步骤五:采用上位交叉的方法产生新的子个体,选择两个本次没有...

【专利技术属性】
技术研发人员:孙家泽王刚王曙燕
申请(专利权)人:西安邮电大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1