CN110059015A - 种群进化多目标测试用例优先级排序方法 - Google Patents
种群进化多目标测试用例优先级排序方法 Download PDFInfo
- Publication number
- CN110059015A CN110059015A CN201910347791.8A CN201910347791A CN110059015A CN 110059015 A CN110059015 A CN 110059015A CN 201910347791 A CN201910347791 A CN 201910347791A CN 110059015 A CN110059015 A CN 110059015A
- Authority
- CN
- China
- Prior art keywords
- individual
- apbc
- population
- test case
- eet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
本发明针对回归软件测试中多目标测试用例优先级排序问题,公开了种群进化多目标测试用例优先级排序方法,属于软件测试技术领域。该方法首先对个体进行编码,随机初始化种群并计算非支配解集,以平均分支覆盖率和测试用例序列执行总时间为适应度函数;然后通过变异、交叉和选择生成新一代种群,使用适应度函数作为个体评价准则,实时更新迭代过程中非支配解集;最后,当迭代次数达到最大迭代次数时,非支配解集中个体为最优解集。本发明提供了一种收敛速度快的测试用例优先级排序方法,在回归测试中可尽早发现软件缺陷,降低测试成本。
Description
技术领域
本发明属于软件测试技术领域,尤其是回归测试领域,具体涉及一种用于回归测试的多目标测试用例优先级排序方法。
背景技术
回归测试是软件生命周期中不可或缺的过程,是一种重要的保证软件正确性的手段。但随着软件的更新换代和软件规模的增大,回归测试时重新执行所有测试用例不现实,所以对测试用例进行预处理尤为重要。测试用例优先级排序(Test Case Prioritization,TCP)是一种根据给定的优化目标来寻找最优测试用例执行次序的软件回归测试技术。为了同时满足多个优化目标,出现了多目标测试用例优先级排序(Multi-Objective Test CasePrioriti-zation,MOTCP),例如分支和时间,从而加快测试用例的缺陷检测速率。
MOTCP技术与传统的TCP技术相比主要区别在于两方面的改变,一是在优化目标的个数选取上采用两个及以上,二是在排序方法上采用加权法或者帕累托最优。Kim等人将历史上各阶段测试历史信息赋予不同的权值,然后把各权值加权求和,综合考虑测试用例的各项因素。王子元等综合考虑测试用例的组合权重和执行开销从而对测试用例集进行排序。Srikanth等在对测试用例排序时同时考虑了缺陷检测率、配置开销和环境搭建时间。牟永敏等分别对函数调用路径覆盖能力和覆盖路径检错指标定义权值后,通过求和对测试用例进行排序。但这种加权法不够智能,权值分配受人的主观影响大,错误检测率不稳定。
陈云飞等提出了一种基于粒子群优化算法的MOTCP方法,设计了粒子的表示和状态更新方式,选取了两个优化目标:有效执行时间、平均语句覆盖率,实验结果证实在MOTCP问题上效果很好。但该方法的交叉操作作为群间交互手段,计算量大,效率有待进一步提高。本发明基于种群进化的思想,结合多目标测试用例优先级排序问题,采用变异、交叉、选择等操作,提出了一种新的种群进化多目标测试用例优先级排序方法,尽早发现软件缺陷,降低测试成本,提高测试效率。
发明内容
在回归测试过程,由于测试成本、时间等多因素的影响,通常需要使用多个目标来评价一个测试用例排序结果的好坏。本发明目的在于在更短的时间内使软件测试的分支覆盖率更高。因此以测试用例执行时间和代码的分支覆盖率为目标,从而提高回归测试测试效率。
本发明技术方案为:种群进化多目标测试用例优先级排序方法,具体分为以下几个步骤:
步骤一:使用二维矩阵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 BranchCoverage,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=(a1 1,a2 1,a3 1,a4 1,a5 1,…,an 1)随机生成一个0到1的实数,当变异概率F大于这个实数时,对A1执行变异操作,变异操作的过程为:从A1上随机选择两个位置p1和p2,0≤p1≤p2≤n,设p1为2,p2为5,截取该位串,然后随机在剩下的位串中选择一个位置p3,假设p3为n,插入该子位串;此时,变异后的A1为A1′=(a1 1,a6 1,a7 1,a8 1,…,an 1,a2 1,a3 1,a4 1,a5 1);
步骤七:执行交叉操作;针对种群中每个个体,将变异后的实验个体A1′和在外部非支配解集中任意一个体Ax作为两个父个体,x为在外部Collection解集中个体下标,设A1′=(a1 1,a6 1,a7 1,a8 1,…,an 1,a2 1,a3 1,a4 1,a5 1),Ax=(a1 x,a2 x,a3 x,a4 x,a5 x,…,an x),假设交叉操作后产生的子代个体为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,返回步骤六,继续迭代。
附图说明
图1为本发明的流程图。
图2为本发明方法在不同迭代次数下,测试用例有效执行时间和平均分支覆盖率分布散点图。
图3为本发明方法在不同种群规模下,测试用例有效执行时间和平均分支覆盖率分布散点图。
图4为三种不同方法测试用例优先级排序结果的对比散点图。
具体实施方式
以用于解析命令行选项的Java库Jopt-simple的源程序的测试用例优先级排序为例,程序来源为:https://github.com/searls/jasmine-maven-plugin,参照图1,本发明的具体实施过程如下:
步骤一:针对一个待测程序,使用已经设计好的测试用例集进行测试,将测试用例对待测程序的分支覆盖情况进行记录,得到测试用例对待测程序的分支覆盖信息矩阵A;Jopt-simple的源程序一共有431条分支,30用个测试用例进行测试,若测试用例集用T表示,T={T1,T2,…,Ti,…Tn},其中Ti(1≤i≤n)为测试用例集中的第i个测试用例,构造的分支覆盖信息矩阵A的大小为30×431,待测程序中语句编号的范围是1到431,测试用例编号的范围是1到30,若第i个测试用例执行中覆盖了第j个分支,则Aij=1,否则Aij=0;记录30个测试用例的各自执行时间;
步骤二:编码;测试用例优先级排序问题针对给定的待测程序和测试用例集,个体表示一个测试用例优先级排序序列,测试用例优先级排序序列就是由测试用例编号所组成的有序序列,即每一个个体被编码为一个有序测试用例编号串,本例中个体编码的长度为测试用例的个数30;
步骤三:构造适应度函数;平均分支覆盖率(Average Percentage of BranchCoverage,APBC)和有效执行时间(Effective Execution Time,EET);针对任一个体,TBv为首个可以覆盖到待测程序中第v个分支Bv的测试用例在该测试用例执行序列中所处的次序,执行完测试后Jopt-simple程序中被覆盖的分支的数量为431,那么431个分支对应431个这样的次序,所有次序之和为由此可以构造适应度函数APBC,APBC表示平均分支覆盖率,即其中TBv(1≤v≤431)可以用分支覆盖信息矩阵A进行计算,针对被覆盖的分支Bv,在中查找第一个覆盖到该分支的测试用例在该测试用例序列中所处的次序,那么这个次序就是TBv的数值;EET表示测试用例优先排序序列首次达到分支全覆盖时执行测试用例的时间总和。执行完该测试用例优先排序序列中的前m′个测试用例时,能够覆盖被测程序中的所有分支,ETi表示执行测试用例优先排序序列中第i个测试用例花费的时间。
步骤四:随机初始化种群;设定种群规模为100,即种群中包含100个个体,若用D表示种群,则D={<r11,r12,…,r130>,<r21,r22,…,r230>,…,<r1001,r1002,…,r10030>},其中<r21,r22,…,r230>代表种群中的第2个个体;设置变异概率F=0.55和交叉概率CR=0.9以及最大迭代次数MAX=100;
步骤五:计算初始种群非支配解集Collection;求解初始种群个体{R1,R2,…,R100}的平均分支覆盖率和有效执行时间;得到两个由N个适应值组成的数组,表示为{APBC1,APBC2,…,APBC100}和{EET1,EET2,…,EET100};初始种群中所有个体适应值为(0.681902,0.744541,0.7219932,0.6942783,0.7508544506,…,0.69230084,0.726937195,0.734942186,0.6948815492,0.705386979,0.7487420253)和(4977ms,4950ms,4937ms,4741ms,4804ms,…,4580ms,4814ms,4859ms,4669ms,4743ms,4931ms);比较个体间非支配关系确定初始非支配解集;对于两个排序目标APBC和EET,测试用例优先排序序列在排序目标函数APBC上的值均越大越好,在目标EET上的值越小越好,那么对于任意个体Rk和Rr,那么当APBCk<APBCr并且EETk<EETr时,或APBCk>APBCr并且EETk>EETr时,Rk和Rr互为非支配解,加入外部非支配解集Collection,Collection中解两两互为非支配解,初始Collection解集为(<4950,0.6832199835>,<4987,0.703680382>,<4827,0.6592027752>,…,<4838,0.664307438>,<4986,0.755167599>);令迭代次数g=1,开始迭代;
步骤六:执行变异操作;对于种群中每个个体,假设为A1,随机生成一个0到1的实数,当F=0.55大于这个实数时,对A1执行变异操作,变异操作的过程为:从A1上随机选择两个位置p1和p2,截取该位串,然后再随机在剩下的位串中选择一个位置p3,在p3位置插入该子位串;此时,产生变异后个体A1′;例如,对于种群中某个体B,
B=(1,16,2,12,3,19,4,11,5,6,28,7,8,9,30,10,25,14,20,13,17,18,22,21,15,23,27,24,26,29),随机生成一个0到1的实数0.45243876432,满足0.45243876432<0.55,执行变异操作:从B上任意选择两个位置3和9,截取位置3和位置9之间的位串(2,12,3,19,4,11,5),在剩下的位串(1,16,6,28,7,8,9,30,10,25,14,20,13,17,18,22,21,15,23,27,24,26,29)中随机生成位置p3为7,则将3到9之间位串插入位置为7的位置,生成新个体B′,B′=(1,166,28,7,8,9,2,12,3,19,4,11,5,30,10,25,14,20,13,17,18,22,21,15,23,27,24,26,29);
步骤七:执行交叉操作;针对种群中每个个体,将变异后实验个体A1′和外部非支配解集中任意一个体Ax作为两个父个体,x为在外部Collection解集中个体下标,设,
A1′=(a1 1,a6 1,a7 1,a8 1,…,an 1,a2 1,a3 1,a4 1,a5 1),Ax=(a1 x,a2 x,a3 x,a4 x,a5 x,…,an x),假设交叉操作后产生的子代个体为Ac1和Ac2;取APBC值大的作为最终交叉结果个体A1″;随机生成一个0到1的实数,此处生成的值为0.785454,由于CR大于这个实数,因此执行交叉操作,没有进行交叉的个体被直接复制进新种群;交叉操作的具体过程如下:
(1)本例中选择的两个交叉个体为:
A1′=(23,1,20,16,14,6,28,7,8,9,30,10,13,17,18,22,21,25,12,15,27,24,26,29,2,3,19,4,11,5)
Ax=(23,30,1,20,14,6,26,28,7,8,16,9,17,12,10,13,18,22,29,21,25,15,27,5,24,2,3,19,4,11)随机产生两个整数k1,k2作为交叉点,k1=5,k2=15,k1,k2∈[0,30];
(2)将父代个体A1′上两个交叉点之间的基因和父代个体Ax上两个交叉点之间的基因进行交叉,A1′上5到15之间基因段为(14,6,28,7,8,9,30,10,13,17,18),Ax上5到15之间基因段为(14,6,26,28,7,8,16,9,17,12,10),将A1′上该基因段作为子代个体Ac2的该基因段值,将Ax上该基因段作为子代个体Ac1的该基因段值。
(3)从子代和父代的第二个交叉点15开始,将父代个体A1′中不包含Ac1中的元素,按顺序进行填充,生成完整的子代个体为:
Ac1=(11,2,23,1,20,30,13,18,14,6,26,28,7,8,16,9,17,12,10,22,21,25,15,27,24,29,2,3,19,4),子代个体Ac2生成方法与Ac1一样;
(4)分别计算Ac1和Ac2的APBC值,此处得到APBCc1=0.7285834,APBCc2=0.74265684,取APBC大的子代个体Ac2作为最终交叉个体A1″;
步骤八:执行选择操作;
(1)记所有交叉后个体为{R1′,R2′,…,R100′},其适应值为一个由100个适应值组成的数组,表示为{APBC1′,APBC2′,…,APBC100′},其中APBCi′(1≤i≤100)表示交叉后种群第i个个体的平均分支覆盖率;
(2)计算所有交叉后个体执行完该测试用例优先排序序列分支全覆盖时执行时间,得到一个由100个适应值组成的数组{ETT1′,ETT2′,…,ETT100′},其中ETTi′(1≤i≤100)表示交叉后种群第i个个体达到分支全覆盖时的执行时间;
(3)比较所有原始个体与交叉后个体的支配关系得到最终选择结果个体,如果交叉后个体和原始个体互相非支配,将交叉后个体作为选择结果个体;否则,将原始个体作为选择结果个体R1′;即假设对第一个原始个体R1,其两个目标值分别为APBC1和EET1;第一个交叉后个体,两个目标值分别为APBC1′和EET1′;如果APBC1<APBC1′并且EET1<EET1′,或者APBC1>APBC1′并且EET1>EET1′;则交叉后个体与原始个体互为非支配解,如果APBC1>APBC1′并且EET1<EET1′则将原始个体作为最终选择结果个体;
例如,对于个体R1,交叉后的R1为R1′,此时,则交叉后个体分支覆盖率大于原个体,但测试用例执行时间大于原个体,因此,与原始个体互为非支配关系,将交叉后个体作为最终选择结果个体,则对于该种群得到选择结果个体集为{R1″,R2″,…,R100″};
步骤九:求解当前种群非支配解集Collection;求解当前种群个体{R1″,R2″,…,RN″}的平均分支覆盖率和测试用例优先排序序列执行时间;得到两个由100个适应值组成的数组,表示为{APBC1″,APBC2″,…,APBC100″}和{EET1″,EET2″,…,EET100″};比较个体间非支配关系确定非支配解集;加入外部非支配解集Collection中;
步骤十:更新当前Collection解集;两两比较Collection中个体,不为非支配的解剔除掉,保证Collection中个体两两互为非支配解;
步骤十一:判断迭代终止条件,本方法中的迭代终止条件是当前迭代次数大于最大迭代次数MAX,如果终止条件成立,那么此时Collection解集为多目标测试用例优先级排序序列最优解集,输出该解集并停止迭代;否则,令迭代次数g=g+1,返回步骤六,继续迭代。例如,第100次迭代后,Collection解集输出结果为(<3896,0.8673549245700316>,<4438,0.9292961571726288>,<3842,0.825824208440114>,…,<4010,0.8756004557393477>,<3947,0.8638994118153936>);Collection解集中为迭代100次之后互为非支配解。
为了验证本发明专利方法的在工程运用中的实际效果,选取经典四个开源测试程序进行实验。四个开源测试程序为:Jasmine-maven、Jopt-simple、La4j、Scribe-java,分支数量分别为:381、431、145、115,其中Jasmine-maven是JavaScript单元测试框架Jasmine的Maven插件;Jopt-simple是用于解析命令行选项的Java库,La4j是提供线性代数原语和算法Java程序,Scribe-java是一个用Java开发的OAuth开源库;实验配置信息为:CPU:2GHz以上,内存:6GB,操作系统:Windows 10,开发语言和环境:Java,编程环境和工具:JDK1.8.0_131、Eclipse。
实验将本专利提出方法的收敛速度和种群规模对方法的影响作为出发点,将种群进化多目标测试用例优先排序方法(Swarm Optimization Test Case Prioritization,SOTCP)方法与基于单点交叉交叉的粒子群方法(Single-point Crossover ParticleSwarm Optimization,SPSO)和基于顺序交叉的粒子群方法(Order-Crossover ParticleSwarm Optimization,OPSO)进行实验比较,观察本发明方法的性能和与现有其他方法的比较优劣。
图2为本发明方法在不同迭代次数下,测试用例有效执行时间和平均分支覆盖率分布散点图。以迭代次数为自变量,在种群规模为100的情况下,迭代次数分别为50,100,150,200,横坐标和纵坐标分别为测试用例有效执行时间和平均分支覆盖速率;可以看出随着迭代次数渐渐增大,本发明方法SOTCP的最优解集渐渐向时间更短,覆盖率更高的方向发展,对于Scribe-java和La4j中小规模程序来说,在迭代150次时,本专利方法SOTCP方法已经达到最优,继续迭代时,最优解已经不发生明显变化。
图3为本发明方法在不同种群规模下,测试用例有效执行时间和平均分支覆盖率分布散点图。以种群规模为自变量,在迭代次数为100的情况下,种群规模分别为30,50,80,100,150,横坐标和纵坐标分别为测试用例有效执行时间和平均分支覆盖速率。随着种群规模的增大,解集逐渐向坐标系内左上方的方向迁移,非支配解集逐渐变优,这是由于随着种群规模的增大使得群体多样性增加,使得个体在更新时更易进化成更优异的新个体;可以看出随着种群规模增大,个体渐渐向更优发展,靠近左上角,因为每个点表示一个测试用例执行序列,保证有效执行时间短的条件下,覆盖率更大。
图4为本发明方法SOTCP和现有方法SPSO和OPSO测试用例优先级排序结果的对比散点图。在种群规模和迭代次数均为100的情况下,运行30次SOTCP、SPSO、OPSO方法,在有效执行时间相同的前提下,SOTCP能够普遍得到更高APBC值的解,具有更高的覆盖能力。在APBC相同的前提下,SOTCP方法的解有效执行时间更短;SOTCP方法随着迭代次数变大,其解集满足执行时间更短的情况下,平均分支覆盖速率更高,有利于尽早发现软件缺陷,降低测试成本。
因此,由上述实验可得,SOTCP方法较SPSO方法和SPSO方法所得的解集更优,解的质量更高;SOTCP在求解多目标测试用例排序问题时,是一个高效可行的方法。
Claims (1)
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 BranchCoverage,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=(a1 1,a2 1,a3 1,a4 1,a5 1,…,an 1)随机生成一个0到1的实数,当变异概率F大于这个实数时,对A1执行变异操作,变异操作的过程为:从A1上随机选择两个位置p1和p2,0≤p1≤p2≤n,设p1为2,p2为5,截取该位串,然后随机在剩下的位串中选择一个位置p3,假设p3为n,插入该子位串;此时,变异后的A1为A1′=(a1 1,a6 1,a7 1,a8 1,…,an 1,a2 1,a3 1,a4 1,a5 1);
步骤七:执行交叉操作;针对种群中每个个体,将变异后的实验个体A1′和在外部非支配解集中任意一个体Ax作为两个父个体,x为在外部Collection解集中个体下标,设A1′=(a1 1,a6 1,a7 1,a8 1,…,an 1,a2 1,a3 1,a4 1,a5 1),Ax=(a1 x,a2 x,a3 x,a4 x,a5 x,…,an x),假设交叉操作后产生的子代个体为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,返回步骤六,继续迭代。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910347791.8A CN110059015B (zh) | 2019-04-28 | 2019-04-28 | 种群进化多目标测试用例优先级排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910347791.8A CN110059015B (zh) | 2019-04-28 | 2019-04-28 | 种群进化多目标测试用例优先级排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110059015A true CN110059015A (zh) | 2019-07-26 |
CN110059015B CN110059015B (zh) | 2022-09-30 |
Family
ID=67321306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910347791.8A Active CN110059015B (zh) | 2019-04-28 | 2019-04-28 | 种群进化多目标测试用例优先级排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110059015B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362960A (zh) * | 2019-08-09 | 2019-10-22 | 哈尔滨工业大学 | 基于多胞折合平衡流形展开模型的航空发动机系统辨识方法 |
CN111563043A (zh) * | 2020-05-11 | 2020-08-21 | 西安邮电大学 | 一种并发程序测试噪声注入优化方法 |
CN111666209A (zh) * | 2020-05-20 | 2020-09-15 | 牡丹江师范学院 | 一种基于多目标优化的测试用例优先级排序方法 |
CN111813669A (zh) * | 2020-07-04 | 2020-10-23 | 毛澄映 | 基于多目标群体智能的适应性随机测试用例生成方法 |
CN112269736A (zh) * | 2020-10-26 | 2021-01-26 | 西安邮电大学 | 多目标并发程序噪声注入群体优化方法 |
CN112270353A (zh) * | 2020-10-26 | 2021-01-26 | 西安邮电大学 | 多目标群体进化软件模块聚类方法 |
CN113742206A (zh) * | 2020-05-27 | 2021-12-03 | 南京大学 | 一种基于项目特征的测试用例优先级算法的选择方法 |
WO2022134581A1 (zh) * | 2020-12-24 | 2022-06-30 | 深圳壹账通智能科技有限公司 | 测试用例排序方法及相关设备 |
CN114978974A (zh) * | 2022-05-20 | 2022-08-30 | 国网重庆市电力公司电力科学研究院 | 无线通信模组测试方法、装置、设备及存储介质 |
CN117234957A (zh) * | 2023-11-16 | 2023-12-15 | 山东科技大学 | 一种基于改进萤火虫算法的测试用例优先级排序方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130159774A1 (en) * | 2011-12-19 | 2013-06-20 | Siemens Corporation | Dynamic reprioritization of test cases during test execution |
CN103500142A (zh) * | 2013-10-12 | 2014-01-08 | 南京大学 | 面向动态Web应用的多目标测试用例优先级测试方法 |
CN106528433A (zh) * | 2016-12-12 | 2017-03-22 | 西安邮电大学 | 一种用于白盒测试的测试用例优先级排序方法 |
CN107544905A (zh) * | 2017-08-22 | 2018-01-05 | 中国农业银行股份有限公司 | 回归测试用例集的优化方法和系统 |
CN108508745A (zh) * | 2018-01-22 | 2018-09-07 | 中国铁道科学研究院通信信号研究所 | 一种多目标测试序列集优化生成方法 |
CN109271320A (zh) * | 2017-11-07 | 2019-01-25 | 西安邮电大学 | 一种上位多目标测试用例优先级排序方法 |
-
2019
- 2019-04-28 CN CN201910347791.8A patent/CN110059015B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130159774A1 (en) * | 2011-12-19 | 2013-06-20 | Siemens Corporation | Dynamic reprioritization of test cases during test execution |
CN103500142A (zh) * | 2013-10-12 | 2014-01-08 | 南京大学 | 面向动态Web应用的多目标测试用例优先级测试方法 |
CN106528433A (zh) * | 2016-12-12 | 2017-03-22 | 西安邮电大学 | 一种用于白盒测试的测试用例优先级排序方法 |
CN107544905A (zh) * | 2017-08-22 | 2018-01-05 | 中国农业银行股份有限公司 | 回归测试用例集的优化方法和系统 |
CN109271320A (zh) * | 2017-11-07 | 2019-01-25 | 西安邮电大学 | 一种上位多目标测试用例优先级排序方法 |
CN108508745A (zh) * | 2018-01-22 | 2018-09-07 | 中国铁道科学研究院通信信号研究所 | 一种多目标测试序列集优化生成方法 |
Non-Patent Citations (6)
Title |
---|
DUSICA MARIJAN: "Test Case Prioritization for Continuous Regression Testing: An Industrial Case Study", 《 2013 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE》 * |
孙家泽等: "利用佳点集遗传算法的白盒测试用例优先排序", 《计算机工程与科学》 * |
张娜等: "基于多种群进化算法的测试用例优先级排序研究", 《浙江理工大学学报(自然科学版)》 * |
杨芳等: "多目标测试用例优先级排序研究进展", 《重庆工商大学学报(自然科学版)》 * |
王曙燕等: "基于变异分析的测试用例约简方法", 《计算机应用》 * |
郑炜等: "基于变异分析和覆盖准则的回归测试用例集缩减", 《西北工业大学学报》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362960A (zh) * | 2019-08-09 | 2019-10-22 | 哈尔滨工业大学 | 基于多胞折合平衡流形展开模型的航空发动机系统辨识方法 |
CN110362960B (zh) * | 2019-08-09 | 2022-11-11 | 哈尔滨工业大学 | 基于多胞折合平衡流形展开模型的航空发动机系统辨识方法 |
CN111563043B (zh) * | 2020-05-11 | 2022-11-01 | 西安邮电大学 | 一种并发程序测试噪声注入优化方法 |
CN111563043A (zh) * | 2020-05-11 | 2020-08-21 | 西安邮电大学 | 一种并发程序测试噪声注入优化方法 |
CN111666209A (zh) * | 2020-05-20 | 2020-09-15 | 牡丹江师范学院 | 一种基于多目标优化的测试用例优先级排序方法 |
CN113742206A (zh) * | 2020-05-27 | 2021-12-03 | 南京大学 | 一种基于项目特征的测试用例优先级算法的选择方法 |
CN111813669A (zh) * | 2020-07-04 | 2020-10-23 | 毛澄映 | 基于多目标群体智能的适应性随机测试用例生成方法 |
CN111813669B (zh) * | 2020-07-04 | 2023-10-13 | 毛澄映 | 基于多目标群体智能的适应性随机测试用例生成方法 |
CN112269736A (zh) * | 2020-10-26 | 2021-01-26 | 西安邮电大学 | 多目标并发程序噪声注入群体优化方法 |
CN112270353B (zh) * | 2020-10-26 | 2022-11-01 | 西安邮电大学 | 多目标群体进化软件模块聚类方法 |
CN112269736B (zh) * | 2020-10-26 | 2022-11-01 | 西安邮电大学 | 多目标并发程序噪声注入群体优化方法 |
CN112270353A (zh) * | 2020-10-26 | 2021-01-26 | 西安邮电大学 | 多目标群体进化软件模块聚类方法 |
WO2022134581A1 (zh) * | 2020-12-24 | 2022-06-30 | 深圳壹账通智能科技有限公司 | 测试用例排序方法及相关设备 |
CN114978974A (zh) * | 2022-05-20 | 2022-08-30 | 国网重庆市电力公司电力科学研究院 | 无线通信模组测试方法、装置、设备及存储介质 |
CN114978974B (zh) * | 2022-05-20 | 2023-09-19 | 国网重庆市电力公司电力科学研究院 | 无线通信模组测试方法、装置、设备及存储介质 |
CN117234957A (zh) * | 2023-11-16 | 2023-12-15 | 山东科技大学 | 一种基于改进萤火虫算法的测试用例优先级排序方法 |
CN117234957B (zh) * | 2023-11-16 | 2024-02-06 | 山东科技大学 | 一种基于改进萤火虫算法的测试用例优先级排序方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110059015B (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110059015A (zh) | 种群进化多目标测试用例优先级排序方法 | |
Got et al. | A guided population archive whale optimization algorithm for solving multiobjective optimization problems | |
Zhang et al. | Differential evolution-assisted salp swarm algorithm with chaotic structure for real-world problems | |
Pan et al. | Effective metaheuristics for scheduling a hybrid flowshop with sequence-dependent setup times | |
Huang et al. | Multi-objective flexible job-shop scheduling problem using modified discrete particle swarm optimization | |
Campos et al. | Context-independent scatter and tabu search for permutation problems | |
Dong et al. | A hybrid PSO/SA algorithm for bi-criteria stochastic line balancing with flexible task times and zoning constraints | |
Zhang et al. | Solution to the time-cost-quality trade-off problem in construction projects based on immune genetic particle swarm optimization | |
Wu et al. | An Improved Teaching‐Learning‐Based Optimization Algorithm with Reinforcement Learning Strategy for Solving Optimization Problems | |
Trojanowski et al. | Immune-based algorithms for dynamic optimization | |
CN109271320B (zh) | 一种上位多目标测试用例优先级排序方法 | |
Zhang et al. | An effective hybrid evolutionary algorithm for stochastic multiobjective assembly line balancing problem | |
Shao et al. | A multi-objective discrete invasive weed optimization for multi-objective blocking flow-shop scheduling problem | |
Zhao et al. | A differential-based harmony search algorithm with variable neighborhood search for job shop scheduling problem and its runtime analysis | |
Sadiq et al. | Solving multi-objective master production schedule problem using memetic algorithm | |
Mou et al. | Multi-objective inverse scheduling optimization of single-machine shop system with uncertain due-dates and processing times | |
Cao et al. | An enhanced whale optimization algorithm with improved dynamic opposite learning and adaptive inertia weight strategy | |
JP7137074B2 (ja) | 最適化計算方法、最適化計算装置及び最適化計算プログラム | |
Wang et al. | Harris hawk optimization algorithm based on Cauchy distribution inverse cumulative function and tangent flight operator | |
CN101853202B (zh) | 一种基于遗传算法和带权匹配算法的测试案例自动生成方法 | |
Ullah et al. | An agent-based memetic algorithm (AMA) for solving constrained optimazation problems | |
CN109767034A (zh) | 继电保护的定值优化方法、装置、计算机设备和存储介质 | |
Rezapoor Mirsaleh et al. | A learning automata-based memetic algorithm | |
Esfandyari et al. | GALP: a hybrid artificial intelligence algorithm for generating covering array | |
CN112016801A (zh) | 带传输和切换时间的柔性作业车间调度方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |