CN105005531B - 一种基于查错率的测试用例选择方法 - Google Patents

一种基于查错率的测试用例选择方法 Download PDF

Info

Publication number
CN105005531B
CN105005531B CN201510448023.3A CN201510448023A CN105005531B CN 105005531 B CN105005531 B CN 105005531B CN 201510448023 A CN201510448023 A CN 201510448023A CN 105005531 B CN105005531 B CN 105005531B
Authority
CN
China
Prior art keywords
test case
packet
selection
debugging
debugging rate
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.)
Active
Application number
CN201510448023.3A
Other languages
English (en)
Other versions
CN105005531A (zh
Inventor
姜瑛
李翘婕
刘英莉
汪海涛
丁家满
李凌宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kunming University of Science and Technology
Original Assignee
Kunming University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kunming University of Science and Technology filed Critical Kunming University of Science and Technology
Priority to CN201510448023.3A priority Critical patent/CN105005531B/zh
Publication of CN105005531A publication Critical patent/CN105005531A/zh
Application granted granted Critical
Publication of CN105005531B publication Critical patent/CN105005531B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种基于查错率的测试用例选择方法,属于测试用例选择领域。本发明将所有测试用例按照所选策略循环分组并执行,分析每个分组测试用例的执行结果,得到每个分组测试用例的查错率,当本次查错率小于上一次查错率时,循环终止。本发明以查错率作为标准来对测试用例进行选择与判断;通过将每次选择与上一次选择查错率最高的分组的公共部分放入一个临时变量中,并从该临时变量和上一次选择查错率次高的分组中来选择测试用例,最终选择出高质量的一组测试用例;依据策略对测试用例不断的选择与重新分组,最终能够以较小的代价选择出查错率最高的分组。

Description

一种基于查错率的测试用例选择方法
技术领域
本发明涉及一种基于查错率的测试用例选择方法,属于测试用例选择领域。
背景技术
测试用例是对软件运行过程中所有可能存在的目标、运动、行动、环境和结果的描述,是对客观世界的一种抽象。测试用例体现了一定的测试方案、方法、技术和策略。由于运行和维护这些测试用例以及回归测试将耗费大量的时间、人力和物力,所以测试用例数量越大,所需要花费的代价就越大。因此人们一直在研究如何设计出一组有效、数量少又能充分满足所有测试需求的测试用例集,从而在保证和提高软件测试质量的同时,降低软件测试的成本。
随着软件开发过程的不断迭代,测试用例集规模越来越大,导致存在大量冗余测试用例。冗余测试用例的执行、管理和高维护成本将浪费大量资源,但测试资源往往有限,因此需要进行测试用例选择,测试用例选择是过去20年面向演化软件测试的研究热点之一,其目的是使用尽可能少的测试用例,从而提高测试效率、降低测试成本。
根据不同的选择目标,测试用例选择分为3类:回归测试选择、测试用例集约简和测试用例优先排序。回归测试选择通过分析软件修改影响选择较小规模的测试用例集,以达到较好的性价比。测试用例集约简根据测试目标中的每个测试需求确定出相应的测试用例,然后采用贪心算法、一些启发式算法或整数规划等方法来进行精简,去掉一些冗余的测试用例。测试用例优先排序通过设定特定排序准则,对测试用例进行排序以优化其执行次序,旨在最大化排序目标。
本发明提出的策略根据查错率进行了测试用例选择,经过多次选择和判断,可以从现有的测试用例集中筛选出查错能力较强的测试用例。
发明内容
针对上述问题,本发明提供了一种基于查错率的测试用例选择方法,以用于选出查错率高的测试用例。
本发明的技术方案是:一种基于查错率的测试用例选择方法,所述方法的具体步骤如下:
Step1、将Sum个测试用例均分成n组,得到Gc[i](i=1,2,…,n);其中,Gp[i]、Gc[i]、Gn[i]分别为上一次选择的分组、本次选择的分组、下一次选择分组,i为分组号,每个分组的测试用例个数为Sum/n个,Fp[i]和Fc[i]分别表示上一次选择分组的查错率和本次选择分组的查错率,Fp[i]=0,Fc[i]=0,Gp[i]=null,Gn[i]=null;i=1,2,…,n;
Step2、设置i=1;
Step3、依次执行本次选择的每个分组,并分别计算每个分组的查错率;
Step4、将每个分组的查错率Fc[i]按照从大到小的顺序进行排序,同时将分组Gc[i]按照查错率从大到小的顺序进行排序;
Step5、判断Fp[1]是否小于Fc[1]:如果是,则执行步骤Step6,否则,选择上一次选择查错率最高的分组作为最终的选择结果;
Step6、将i重新置为1;
Step7、判断i是否小于n:如果是,则执行步骤Step8;否则,执行步骤Step11;
Step8、将Gc[i]和Gp[i]取交集,并将交集个数设为count;
Step9、判断Sum/n是否等于count:如果是,则执行步骤Step10;否则,执行步骤Step13;
Step10、将Gc[i]与Gp[i]的交集放入Gn[i]中,继续步骤Step14;
Step11、判断i是否等于n:如果是,则执行步骤Step12;否则,执行步骤Step15;
Step12、将剩下所有未被选择的测试用例放入Gn[i]中,继续步骤Step14;
Step13、判断count是否等于0:如果等于0,则从Gc[i]和Gc[i+1]中未被选择过的部分随机选取Sum/n个测试用例放入Gn[i]中,继续步骤Step14;否则,将Gc[i]和Gp[i]交集中的测试用例放入Gn[i]中,Gn[i]剩余部分测试用例从Gc[i+1]中选取,继续步骤Step14;
Step14、i加1,返回步骤Step7;
Step15、将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,返回步骤Step2。
所述查错率= error[i]/∑error[i](i=1,2,…,n);其中,error[i]为第i个分组发现的缺陷数。
其中,
步骤Step4中,将查错率按照从大到小的顺序放入Fc[i]中,并将每个分组的测试用例按照它们的查错率从大到小依次放入Gc[i]中,这样使得最高查错率及其分组固定为第一组。
步骤Step5中,以本次选择的最高查错率Fc[1]是否低于上一次选择的最高查错率Fp[1]作为选择是否结束的标准,因为随着选择的不断进行,查错率会不断提高,如果本次选择的查错率低于上一次选择的查错率,那就证明本次选择是失败的或是查错率已经达到最高,因而应该终止选择,并以上一次选择的结果作为最终结果。
步骤Step7,通过判断i是否小于n,使得本次选择中每个分组的测试用例都按照策略进行选择。
步骤Step9中,以sum/n即每个分组测试用例个数和count中个数做比较,count中测试用例的个数的不同则影响了如何来进行其余测试用例的选择。
从Gc[i]和Gp[i]的交集中选取测试用例,由于每次选择第一个分组的测试用例取自于上一次选择查错率最高的分组和本次选择查错率最高的分组的交集,因此第一个分组的测试用例具有较强的发现缺陷的能力的可能性较大。
本发明的工作原理是:
本发明首先说明了以查错率作为标准来对测试用例进行选择,查错率定义为检测出的错误与全部错误的百分比。一般情况下,当一组测试用例发现的缺陷越多,则该组测试用例含有较多查错能力强的测试用例的可能性较大。即一组测试用例发现缺陷越多,则该组测试用例查错率也就越高,也表明该组测试用例发现缺陷的能力越强,因此我们需要选择出查错率较高的一组测试用例。
为了选出查错率高的测试用例,通常需要经过多次选择。如果能将每次选择查错率最高的分组与上一次选择查错率最高的分组的测试用例取交集,将这些交集放入一个集合中,则查错能力强的测试用例在集合中的可能性相对较大,如果从该集合中选取测试用例,则有可能取到查错能力较强的测试用例。随着选择的不断进行,选出的测试用例的查错率也在不断提高。
本发明的有益效果是:
1)以查错率作为标准来对测试用例进行选择与判断。
2)通过将每次选择与上一次选择查错率最高的分组的公共部分放入一个临时变量中,并从该临时变量和上一次选择查错率次高的分组中来选择测试用例,最终选择出高质量的一组测试用例。
3)依据策略对测试用例不断的选择与重新分组,最终能够以较小的代价选择出查错率最高的分组。
附图说明
图1是本发明的流程图。
具体实施方式
实施例1:如图1所示,一种基于查错率的测试用例选择方法,所述方法的具体步骤如下:
Step1、将Sum个测试用例均分成n组,得到Gc[i](i=1,2,…,n);其中,Gp[i]、Gc[i]、Gn[i]分别为上一次选择的分组、本次选择的分组、下一次选择分组,i为分组号,每个分组的测试用例个数为Sum/n个,Fp[i]和Fc[i]分别表示上一次选择分组的查错率和本次选择分组的查错率,Fp[i]=0,Fc[i]=0,Gp[i]=null,Gn[i]=null;i=1,2,…,n;
Step2、设置i=1;
Step3、依次执行本次选择的每个分组,并分别计算每个分组的查错率;
Step4、将每个分组的查错率Fc[i]按照从大到小的顺序进行排序,同时将分组Gc[i]按照查错率从大到小的顺序进行排序;
Step5、判断Fp[1]是否小于Fc[1]:如果是,则执行步骤Step6,否则,选择上一次选择查错率最高的分组作为最终的选择结果;
Step6、将i重新置为1;
Step7、判断i是否小于n:如果是,则执行步骤Step8;否则,执行步骤Step11;
Step8、将Gc[i]和Gp[i]取交集,并将交集个数设为count;
Step9、判断Sum/n是否等于count:如果是,则执行步骤Step10;否则,执行步骤Step13;
Step10、将Gc[i]与Gp[i]的交集放入Gn[i]中,继续步骤Step14;
Step11、判断i是否等于n:如果是,则执行步骤Step12;否则,执行步骤Step15;
Step12、将剩下所有未被选择的测试用例放入Gn[i]中,继续步骤Step14;
Step13、判断count是否等于0:如果等于0,则从Gc[i]和Gc[i+1]中未被选择过的部分随机选取Sum/n个测试用例放入Gn[i]中,继续步骤Step14;否则,将Gc[i]和Gp[i]交集中的测试用例放入Gn[i]中,Gn[i]剩余部分测试用例从Gc[i+1]中选取,继续步骤Step14;
Step14、i加1,返回步骤Step7;
Step15、将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,返回步骤Step2。
所述查错率= error[i]/∑error[i](i=1,2,…,n);其中,error[i]为第i个分组发现的缺陷数。
实施例2:如图1所示,一种基于查错率的测试用例选择方法,所述方法的具体步骤如下:
Step1、将Sum个测试用例均分成n组,得到Gc[i](i=1,2,…,n);其中,Gp[i]、Gc[i]、Gn[i]分别为上一次选择的分组、本次选择的分组、下一次选择分组,i为分组号,每个分组的测试用例个数为Sum/n个,Fp[i]和Fc[i]分别表示上一次选择分组的查错率和本次选择分组的查错率,Fp[i]=0,Fc[i]=0,Gp[i]=null,Gn[i]=null;i=1,2,…,n;
Step2、设置i=1;
Step3、依次执行本次选择的每个分组,并分别计算每个分组的查错率;
Step4、将每个分组的查错率Fc[i]按照从大到小的顺序进行排序,同时将分组Gc[i]按照查错率从大到小的顺序进行排序;
Step5、判断Fp[1]是否小于Fc[1]:如果是,则执行步骤Step6,否则,选择上一次选择查错率最高的分组作为最终的选择结果;
Step6、将i重新置为1;
Step7、判断i是否小于n:如果是,则执行步骤Step8;否则,执行步骤Step11;
Step8、将Gc[i]和Gp[i]取交集,并将交集个数设为count;
Step9、判断Sum/n是否等于count:如果是,则执行步骤Step10;否则,执行步骤Step13;
Step10、将Gc[i]与Gp[i]的交集放入Gn[i]中,继续步骤Step14;
Step11、判断i是否等于n:如果是,则执行步骤Step12;否则,执行步骤Step15;
Step12、将剩下所有未被选择的测试用例放入Gn[i]中,继续步骤Step14;
Step13、判断count是否等于0:如果等于0,则从Gc[i]和Gc[i+1]中未被选择过的部分随机选取Sum/n个测试用例放入Gn[i]中,继续步骤Step14;否则,将Gc[i]和Gp[i]交集中的测试用例放入Gn[i]中,Gn[i]剩余部分测试用例从Gc[i+1]中选取,继续步骤Step14;
Step14、i加1,返回步骤Step7;
Step15、将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,返回步骤Step2。
实施例3:如图1所示,一种基于查错率的测试用例选择方法,所述方法的具体步骤如下:
选择由欧洲航天局(European space agency)研发的Space作为待测试程序。Space中被植入了38个独立的缺陷,即有38个错误版本的Space程序,相对应的生成了13466个测试用例,每个测试用例都是数组定义语言的文件,并且都有相应的编号,未植入缺陷的Space版本作为参照体,即一个测试用例同时导入到植入和未植入缺陷的Space版本中,如果测试得到的输出结果不一样,就认为发现了一个缺陷。
如图1所示,为本发明所述基于查错率的测试用例选择算法的主要流程,该方法包括:
步骤(1):首先打开一个含有200个测试用例编号的文件,读入全部测试用例的信息;
步骤(2):设置n等于分组数,数组Fp[i]和Fc[i]分别表示上一次选择的查错率和本次选择的查错率,数组Gp[i]、Gc[i]、Gn[i]分别表示上一次选择分组,本次选择分组,和下一次选择分组;对步骤(1)中的测试用例进行分组,输入分组数为4和每个分组的测试用例数为50,程序此时开始对程序中的各个变量进行初始化:n=4,i=1,Fp[i]=0,Fc[i]=0,Gp[i]=null,Gn[i]=null(i=1,2,3,4),并依据分组数以及每组的测试用例个数来对步骤(1)中的测试用例分为4组,而后将每个分组的测试用例依次放入Gc[i]中(i=1,2,3,4);
步骤(3):将i的值重新置为1,依次执行4个分组,记录每个分组发现的缺陷数,并计算每个分组的查错率,并将第i个分组的查错率放入Fc[i]中(i=1,2,3,4)。查错率的计算过程是:
设error[i]、Fc[i],error[i]为第i个分组发现的缺陷数,Fc[i]为第i个分组的查错率,则:Fc[i]=error[i]/∑error[i] (i=1,2,3,4);
步骤(4):将数组Fc中的查错率按照从大到小的顺序进行排序,此时Fc[1]为最高查错率,并将Gc[i]中的测试用例也按照其所对应的查错率按照从大到小的顺序排序,即此时Gc[1]为查错率最高的分组;
步骤(5):判断Fc[1],即本次选择最高查错率,是否大于Fp[1],如果是的话则继续后续步骤,否则执行步骤(16),以本次选择的最高查错率Fc[1]是否低于上一次选择的最高查错率Fp[1]作为选择是否结束的标准,因为随着选择的不断进行,查错率会不断提高,如果本次选择的查错率低于上一次选择的查错率,那就证明本次选择是失败的或是查错率已经达到最高,因而应该终止选择;
步骤(6):将i重新置为1;
步骤(7):判断i是否小于4,如果i小于4则继续执行,否则执行步骤(11);
步骤(8):将Gc[i]和Gp[i]取交集,并用count来记录该交集中的测试用例个数;
步骤(9):判断count是否等于50,是则继续步骤(10),否则执行步骤(13);
步骤(10):将Gc[i]与Gp[i]的交集放入Gn[i]中,继续步骤(14);
步骤(11):判断i是否等于4,是的话执行步骤(12),否则执行步骤(15);
步骤(12):i等于4表明已经是对最后一个分组进行测试用例的选择,因而将剩下所有未被选择的测试用例放入最后一个分组Gn[i]中,继续步骤(14);
步骤(13):判断count是否等于0,如果等于0,则从Gc[i]和Gc[i+1]中未被选择过的部分随机选取Sum/n个测试用例放入Gn[i]中,否则将Gc[i]和Gp[i]交集中的测试用例放入Gn[i]中,Gn[i]剩余部分测试用例从Gc[i+1]中选取,继续步骤(14);
步骤(14):i自加1,返回步骤(7);
步骤(15):将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,返回步骤(3)。
步骤(16):选择上一次选择查错率最高的分组作为最终的选择结果。
依据上述步骤,进行实验如下:
1)打开全部测试用例编号为:10494、11740、8989、2974、12094、2977、6601、4798、1978、5857、12354、6088、286、3705、9609、11891、653、4123、11908、11506、6180、3079、3431、12142、10276、7053、6083、6735、4913、6754、5213、3880、7437、2192、2088、4609、8540、13332、7091、12237、8823、8066、3332、2615、10108、13305、9761、5081、11638、5228、12415、13032、9522、11621、8357、11523、9815、11582、12168、7298、11130、5017、6672、8910、10723、9831、1806、832、10720、1403、12979、4085、6930、12691、6534、9422、4459、5256、11721、5707、8157、9827、3343、10081、8960、2430、10225、12536、8166、1987、3498、4049、5589、11728、5722、5848、2384、762、1774、3272、7883、12527、1102、12222、10800、632、6658、11138、2890、5991、8160、269、2812、8107、10206、5224、7136、1473、3111、656、9964、10412、420、9995、5469、5170、6702、4113、8896、3337、4272、9997、921、7867、2956、11394、13250、7047、10210、10021、1480、8197、10304、3221、2320、7184、8002、8252、1293、8725、11536、4677、1305、8325、1916、6408、746、9673、2389、12404、7450、3156、10648、7241、9789、9970、3494、9923、10517、1862、9743、2976、7427、9425、13109、8736、8564、8277、5576、9928、483、7904、1519、8966、7930、12489、3754、8517、2072、10542、9593、9255、9840、461、8143、3799、6894、1605、6269、12344、
当前测试用例个数为:200个
2)按照上述步骤(2)中依次初始化各个变量,并将测试用例进行平均分组,得到Gc[i](i=1,2,3,4)如下:
第Gc[1]组测试用例编号:
10494、11740、8989、2974、12094、2977、6601、4798、1978、5857、12354、6088、286、3705、9609、11891、653、4123、11908、11506、6180、3079、3431、12142、10276、7053、6083、6735、4913、6754、5213、3880、7437、2192、2088、4609、8540、13332、7091、12237、8823、8066、3332、2615、10108、13305、9761、5081、11638、5228
第Gc[2]组测试用例编号:
12415、13032、9522、11621、8357、11523、9815、11582、12168、7298、11130、5017、6672、8910、10723、9831、1806、832、10720、1403、12979、4085、6930、12691、6534、9422、4459、5256、11721、5707、8157、9827、3343、10081、8960、2430、10225、12536、8166、1987、3498、4049、5589、11728、5722、5848、2384、762、1774、3272
第Gc[3]组测试用例编号:
7883、12527、1102、12222、10800、632、6658、11138、2890、5991、8160、269、2812、8107、10206、5224、7136、1473、3111、656、9964、10412、420、9995、5469、5170、6702、4113、8896、3337、4272、9997、921、7867、2956、11394、13250、7047、10210、10021、1480、8197、10304、3221、2320、7184、8002、8252、1293、8725
第Gc[4]组测试用例编号:
11536、4677、1305、8325、1916、6408、746、9673、2389、12404、7450、3156、10648、7241、9789、9970、3494、9923、10517、1862、9743、2976、7427、9425、13109、8736、8564、8277、5576、9928、483、7904、1519、8966、7930、12489、3754、8517、2072、10542、9593、9255、9840、461、8143、3799、6894、1605、6269、12344
3)将i置为1,执行每个分组,并得到查错率分别为:
Fc[1]=0.54
Fc[2]=0.66
Fc[3]=0.59
Fc[4]=0.65
4)将分组Gc[i]按照分组的查错率Fc[i]按照从大到小的顺序进行排序,即Gc[1]为查错率最高的分组,Fc[1]为最高查错率,按查错率排序后结果如下:
第Gc[1]组测试用例编号:
12415、13032、9522、11621、8357、11523、9815、11582、12168、7298、11130、5017、6672、8910、10723、9831、1806、832、10720、1403、12979、4085、6930、12691、6534、9422、4459、5256、11721、5707、8157、9827、3343、10081、8960、2430、10225、12536、8166、1987、3498、4049、5589、11728、5722、5848、2384、762、1774、3272、
第Gc[2]组测试用例编号:
11536、4677、1305、8325、1916、6408、746、9673、2389、12404、7450、3156、10648、7241、9789、9970、3494、9923、10517、1862、9743、2976、7427、9425、13109、8736、8564、8277、5576、9928、483、7904、1519、8966、7930、12489、3754、8517、2072、10542、9593、9255、9840、461、8143、3799、6894、1605、6269、12344
第Gc[3]组测试用例编号:
7883、12527、1102、12222、10800、632、6658、11138、2890、5991、8160、269、2812、8107、10206、5224、7136、1473、3111、656、9964、10412、420、9995、5469、5170、6702、4113、8896、3337、4272、9997、921、7867、2956、11394、13250、7047、10210、10021、1480、8197、10304、3221、2320、7184、8002、8252、1293、8725
第Gc[4]组测试用例编号:
10494、11740、8989、2974、12094、2977、6601、4798、1978、5857、12354、6088、286、3705、9609、11891、653、4123、11908、11506、6180、3079、3431、12142、10276、7053、6083、6735、4913、6754、5213、3880、7437、2192、2088、4609、8540、13332、7091、12237、8823、8066、3332、2615、10108、13305、9761、5081、11638、5228
查错率从大到小排序依次为:
Fc[1]=0.66
Fc[2]=0.65
Fc[3]=0.59
Fc[4]=0.54
5)比较Fp[1]和Fc[1],因为Fp[1]初始值为0,因而Fp[1]<Fc[1],程序继续执行。
6)将i置为1。
7)为了对每个分组的测试用例都按照策略来进行选择,因而用i来对每个分组选择测试用例进行控制,因为n=4,表明总共有4个分组,因而判断i是否小于4,因为此时i=1,i<4成立。
8)i=1,将Gc[1]和Gp[1]取交集,由于初始化Gp[i](i=1,2,3,4)是空集,此时count为0,则从Gc[1]和Gc[2]中未被选择过的测试用例中随机选出50个测试用例,得到Gn[1]测试用例编号如下:
5722、8960、1806、8157、12536、3498、7298、2384、11728、9522、4049、6672、1774、5017、10081、6534、11721、8357、8166、8910、12168、5848、5707、13032、1403、9840、6894、2389、7450、11536、1305、8277、13109、1862、12489、8966、5576、9970、1916、9789、4677、10542、8736、8517、8564、3156、9425、9673、7904、3799、
9)i自加1,从Gc[2]和Gc[3]中未被选择过的测试用例中随机选出50个测试用例,得到Gn[2]测试用例编号如下:
746、483、7241、10648、9255、3754、9923、7427、12404、10517、8143、8325、2976、1519、6269、3494、461、6408、12344、1605、2072、9928、9593、9743、7930、2890、3111、8252、5991、8725、656、5469、2320、8160、8002、1102、2956、5224、10304、4272、10210、9964、10800、3337、8107、8197、5170、10021、1473、7184、
i自加1,从Gc[3]和Gc[4]中未被选择过的测试用例中随机选出50个测试用例,得到Gn[3]测试用例编号如下:
7047、13250、10206、2812、420、1480、7867、6702、269、10412、7883、12527、1293、4113、8896、3221、9997、6658、921、9995、7136、632、11394、12222、11138、7053、12142、8989、12354、4798、2977、7091、6083、12094、4123、286、2192、10276、2974、11891、13332、11740、9609、6088、8066、7437、11638、3431、3079、2088、
10)i自加1,此时i=4,将剩下的测试用例放入第Gn[4]中,得到如下结果:
10494、6601、1978、5857、3705、653、11908、11506、6180、6735、4913、6754、5213、3880、4609、8540、12237、8823、3332、2615、10108、13305、9761、5081、5228、12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272
11)将i自加1,i=5,此时i=5,此时i>n,将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,得到Gc[i]如下所示(i=1,2,3,4):
第Gc[1]组测试用例编号如下:
5722、8960、1806、8157、12536、3498、7298、2384、11728、9522、4049、6672、1774、5017、10081、6534、11721、8357、8166、8910、12168、5848、5707、13032、1403、9840、6894、2389、7450、11536、1305、8277、13109、1862、12489、8966、5576、9970、1916、9789、4677、10542、8736、8517、8564、3156、9425、9673、7904、3799、
第Gc[2]组测试用例编号:
746、483、7241、10648、9255、3754、9923、7427、12404、10517、8143、8325、2976、1519、6269、3494、461、6408、12344、1605、2072、9928、9593、9743、7930、2890、3111、8252、5991、8725、656、5469、2320、8160、8002、1102、2956、5224、10304、4272、10210、9964、10800、3337、8107、8197、5170、10021、1473、7184、
第Gc[3]组测试用例编号:
7047、13250、10206、2812、420、1480、7867、6702、269、10412、7883、12527、1293、4113、8896、3221、9997、6658、921、9995、7136、632、11394、12222、11138、7053、12142、8989、12354、4798、2977、7091、6083、12094、4123、286、2192、10276、2974、11891、13332、11740、9609、6088、8066、7437、11638、3431、3079、2088、
第Gc[4]组测试用例编号:
10494、6601、1978、5857、3705、653、11908、11506、6180、6735、4913、6754、5213、3880、4609、8540、12237、8823、3332、2615、10108、13305、9761、5081、5228、12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272
12)将i重新置为1,执行Gc[i],并将得到的每个分组的查错率放入数组Fc[i] (i=1,2,3,4)分别为:
Fc[1]=0.65
Fc[2]=0.46
Fc[3]=0.70
Fc[4]=0.76
13)将分组Gc[i]按照分组的查错率Fc[i]按照从大到小的顺序进行排序,即Gc[1]为查错率最高的分组,Fc[1]为最高查错率,按查错率排序后结果如下(i=1,2,3,4):
第Gc[1]组测试用例编号:
10494、6601、1978、5857、3705、653、11908、11506、6180、6735、4913、6754、5213、3880、4609、8540、12237、8823、3332、2615、10108、13305、9761、5081、5228、12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272
第Gc[2]组测试用例编号:
7047、13250、10206、2812、420、1480、7867、6702、269、10412、7883、12527、1293、4113、8896、3221、9997、6658、921、9995、7136、632、11394、12222、11138、7053、12142、8989、12354、4798、2977、7091、6083、12094、4123、286、2192、10276、2974、11891、13332、11740、9609、6088、8066、7437、11638、3431、3079、2088
第Gc[3]组测试用例编号:
5722、8960、1806、8157、12536、3498、7298、2384、11728、9522、4049、6672、1774、5017、10081、6534、11721、8357、8166、8910、12168、5848、5707、13032、1403、9840、6894、2389、7450、11536、1305、8277、13109、1862、12489、8966、5576、9970、1916、9789、4677、10542、8736、8517、8564、3156、9425、9673、7904、3799
第Gc[4]组测试用例编号:
746、483、7241、10648、9255、3754、9923、7427、12404、10517、8143、8325、2976、1519、6269、3494、461、6408、12344、1605、2072、9928、9593、9743、7930、2890、3111、8252、5991、8725、656、5469、2320、8160、8002、1102、2956、5224、10304、4272、10210、9964、10800、3337、8107、8197、5170、10021、1473、7184
查错率从大到小排序依次为:
Fc[1]=0.76
Fc[2]=0.70
Fc[3]=0.65
Fc[4]=0.46
14)Fc[1]=0.76,Fp[1]=0.66,此时Fc[1]<Fp[1],因而继续执行程序。
15)将i重新置为1。
16)此时i=1,满足i<4的条件。
17)将Gp[1]与Gc[1]中的测试用例取交集,此时count不等于50且不等于0,因此将Gp[1]和Gc[1]的交集放入Gn[1]中,Gn[1]剩余部分的测试用例从Gc[2]中随机选取,得到Gn[1]如下所示:
第Gn[1]组测试用例编号为:
12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272、9609、9997、2088、6083、3221、12354、10276、10206、13332、8896、7883、7437、8989、2974、286、1293、13250、6088、7091、4113、420、11638、12222、3079、11740、
i自加1,将Gp[2]与Gc[2]中的测试用例取交集,此时count不等于50且不等于0,因此将Gp[2]和Gc[2]的交集放入Gn[2]中,Gn[2]剩余部分的测试用例从Gc[3]中随机选取,得到Gn[2]如下所示:
632、269、3431、8066、4123、12094、9995、7867、2192、2812、6702、4798、1480、2977、7053、11138、11891、7136、7047、10412、12142、11394、6658、12527、921、10081、8517、6894、10542、8357、11721、6672、6534、9425、11728、13032、4049、1862、5722、9789、5017、8564、3799、9970、1916、8277、1305、2384、8166、8960、
i自加1,将Gp[3]与Gc[3]中的测试用例取交集,此时count不等于50且不等于0,因此将Gp[3]和Gc[3]的交集放入Gn[3]中,Gn[3]剩余部分的测试用例从Gc[4]中随机选取,得到Gn[3]组测试用例编号为:
9673、5707、8157、4677、12489、1806、3498、7450、12168、7298、1774、3156、9522、9840、8736、11536、13109、8966、2389、7904、12536、5576、1403、8910、5848、9255、3494、5224、8725、2320、6269、2072、12404、8002、8143、461、7930、5991、7184、746、3111、8107、3337、3754、10517、8325、2890、10210、8160、2956、
18)i自加1,此时i=4,将剩下的测试用例放入第Gn[4]中,得到如下结果:
10494、6601、1978、5857、3705、653、11908、11506、6180、6735、4913、6754、5213、3880、4609、8540、12237、8823、3332、2615、10108、13305、9761、5081、5228、1102、10800、1473、656、9964、5469、5170、4272、10021、8197、10304、8252、6408、10648、7241、9923、9743、2976、7427、9928、483、1519、9593、1605、12344
19)将i自加1,i=5,此时i>n,将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,得到Gc[i]如下所示(i=1,2,3,4):
第Gc[1]组测试用例编号如下:
12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272、9609、9997、2088、6083、3221、12354、10276、10206、13332、8896、7883、7437、8989、2974、286、1293、13250、6088、7091、4113、420、11638、12222、3079、11740
第Gc[2]组测试用例编号:
632、269、3431、8066、4123、12094、9995、7867、2192、2812、6702、4798、1480、2977、7053、11138、11891、7136、7047、10412、12142、11394、6658、12527、921、10081、8517、6894、10542、8357、11721、6672、6534、9425、11728、13032、4049、1862、5722、9789、5017、8564、3799、9970、1916、8277、1305、2384、8166、8960
第Gc[3]组测试用例编号:
9673、5707、8157、4677、12489、1806、3498、7450、12168、7298、1774、3156、9522、9840、8736、11536、13109、8966、2389、7904、12536、5576、1403、8910、5848、9255、3494、5224、8725、2320、6269、2072、12404、8002、8143、461、7930、5991、7184、746、3111、8107、3337、3754、10517、8325、2890、10210、8160、2956
第Gc[4]组测试用例编号:
10494、6601、1978、5857、3705、653、11908、11506、6180、6735、4913、6754、5213、3880、4609、8540、12237、8823、3332、2615、10108、13305、9761、5081、5228、1102、10800、1473、656、9964、5469、5170、4272、10021、8197、10304、8252、6408、10648、7241、9923、9743、2976、7427、9928、483、1519、9593、1605、12344
20)将i重新置为1,并执行Gc[i],得到每个分组的查错率Fc[i],由于查错率已经是从大到小的顺序,所以无需排序,查错率结果如下:
Fc[1]=0.79
Fc[2]=0.73
Fc[3]=0.59
Fc[4]=0.54
21)Fc[1]=0.79,Fp[1]=0.76,此时Fc[1]<Fp[1],因而继续执行程序。
22)将i重新置为1。
23)此时i=1,满足i<4的条件。
24)将Gp[1]与Gc[1]中的测试用例取交集,此时count不等于50且不等于0,因此将Gp[1]和Gc[1]的交集放入Gn[1]中,Gn[1]剩余部分的测试用例从Gc[2]中随机选取,得到Gn[1]如下所示:
第Gn[1]组测试用例编号为:
12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272、7053、1862、3799、5017、12094、4049、11721、2192、8357、4123、921、1480、7867、8066、12527、6672、1305、269、9425、8166、7136、6658、11394、13032、2812、
25)i自加1,将Gp[2]与Gc[2]中的测试用例取交集,此时count不等于50且不等于0,因此将Gp[2]和Gc[2]的交集放入Gn[2]中,Gn[2]剩余部分的测试用例从Gc[3]中随机选取,得到Gn[2]如下所示:
7047、6702、10412、9995、632、11138、12142、4798、2977、11891、3431、7298、3156、8107、3498、10517、2956、3494、6269、9255、12536、8325、7904、1774、9673、5576、10210、4677、9522、5848、2320、8725、461、13109、8002、12168、2072、8966、8143、5707、3754、3337、8157、5991、3111、7184、9840、2389、12489、5224、
i自加1,将Gp[3]与Gc[3]中的测试用例取交集,此时count不等于50且不等于0,因此将Gp[3]和Gc[3]的交集放入Gn[3]中,Gn[3]剩余部分的测试用例从Gc[4]中随机选取,得到Gn[3]如下所示:
1806、8910、1403、7450、11536、8736、7241、2615、9593、13305、656、6601、8197、4913、10800、6735、1473、10494、5170、3332、12237、6408、11908、6180、9743、5469、3705、2976、8823、5228、8252、8540、9928、10021、4609、1519、5213、6754、11506、1978、653、12344、3880、1102、4272、10648、10108、1605、5081、9761、
26)i自加1,此时i=4,将剩下的测试用例放入第Gn[4]中,得到如下结果:
11740、8989、2974、5857、12354、6088、286、9609、3079、10276、6083、7437、2088、13332、7091、11638、6534、10081、8960、11728、5722、2384、7883、12222、2890、8160、10206、9964、420、4113、8896、9997、13250、10304、3221、1293、1916、746、12404、9789、9970、9923、7427、8564、8277、483、7930、8517、10542、6894
27)将i自加1,i=5,此时i>n,将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,得到Gc[i]如下所示(i=1,2,3,4):
第Gc[1]组测试用例编号:
12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272、7053、1862、3799、5017、12094、4049、11721、2192、8357、4123、921、1480、7867、8066、12527、6672、1305、269、9425、8166、7136、6658、11394、13032、2812、
第Gc[2]组测试用例编号:
7047、6702、10412、9995、632、11138、12142、4798、2977、11891、3431、7298、3156、8107、3498、10517、2956、3494、6269、9255、12536、8325、7904、1774、9673、5576、10210、4677、9522、5848、2320、8725、461、13109、8002、12168、2072、8966、8143、5707、3754、3337、8157、5991、3111、7184、9840、2389、12489、5224、
第Gc[3]组测试用例编号:
1806、8910、1403、7450、11536、8736、7241、2615、9593、13305、656、6601、8197、4913、10800、6735、1473、10494、5170、3332、12237、6408、11908、6180、9743、5469、3705、2976、8823、5228、8252、8540、9928、10021、4609、1519、5213、6754、11506、1978、653、12344、3880、1102、4272、10648、10108、1605、5081、9761、
第Gc[4]组测试用例编号:
11740、8989、2974、5857、12354、6088、286、9609、3079、10276、6083、7437、2088、13332、7091、11638、6534、10081、8960、11728、5722、2384、7883、12222、2890、8160、10206、9964、420、4113、8896、9997、13250、10304、3221、1293、1916、746、12404、9789、9970、9923、7427、8564、8277、483、7930、8517、10542、6894
28)分别执行每个分组,得到查错率如下:
Fc[1]=0.76
Fc[2]=0.54
Fc[3]=0.62
Fc[4]=0.57
29)将分组Gc[i]按照分组的查错率Fc[i]按照从大到小的顺序进行排序,即Gc[1]为查错率最高的分组,Fc[1]为最高查错率,按查错率排序后结果如下(i=1,2,3,4):第Gc[1]组测试用例编号:
12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272、7053、1862、3799、5017、12094、4049、11721、2192、8357、4123、921、1480、7867、8066、12527、6672、1305、269、9425、8166、7136、6658、11394、13032、2812、
第Gc[2]组测试用例编号:
1806、8910、1403、7450、11536、8736、7241、2615、9593、13305、656、6601、8197、4913、10800、6735、1473、10494、5170、3332、12237、6408、11908、6180、9743、5469、3705、2976、8823、5228、8252、8540、9928、10021、4609、1519、5213、6754、11506、1978、653、12344、3880、1102、4272、10648、10108、1605、5081、9761、
第Gc[3]组测试用例编号:
11740、8989、2974、5857、12354、6088、286、9609、3079、10276、6083、7437、2088、13332、7091、11638、6534、10081、8960、11728、5722、2384、7883、12222、2890、8160、10206、9964、420、4113、8896、9997、13250、10304、3221、1293、1916、746、12404、9789、9970、9923、7427、8564、8277、483、7930、8517、10542、6894
第Gc[4]组测试用例编号:
7047、6702、10412、9995、632、11138、12142、4798、2977、11891、3431、7298、3156、8107、3498、10517、2956、3494、6269、9255、12536、8325、7904、1774、9673、5576、10210、4677、9522、5848、2320、8725、461、13109、8002、12168、2072、8966、8143、5707、3754、3337、8157、5991、3111、7184、9840、2389、12489、5224、
查错率从大到小排序依次为:
Fc[1]=0.76
Fc[2]=0.62
Fc[3]=0.57
Fc[4]=0.54
30)比较Fp[1]和Fc[1],由于第四次选择中第一组的查错率,即第四次分组最高查错率0.76,低于第三次选择的最高查错率0.79,因此循环终止,最终得出的实验结果显示如下:
程序总共执行了:4次
第3次获取最高查错率分组
本次实验最终获取查错率最高的测试用例编号分组为:
12415、11621、11523、9815、11582、11130、10723、9831、832、10720、12979、4085、6930、12691、9422、4459、5256、9827、3343、2430、10225、1987、5589、762、3272、9609、9997、2088、6083、3221、12354、10276、10206、13332、8896、7883、7437、8989、2974、286、1293、13250、6088、7091、4113、420、11638、12222、3079、11740
上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

Claims (1)

1.一种基于查错率的测试用例选择方法,其特征在于:所述方法的具体步骤如下:
Step1、将Sum个测试用例均分成n组,得到Gc[i](i=1,2,…,n);其中,Gp[i]、Gc[i]、Gn[i]分别为上一次选择的分组、本次选择的分组、下一次选择分组,i为分组号,每个分组的测试用例个数为Sum/n个,Fp[i]和Fc[i]分别表示上一次选择分组的查错率和本次选择分组的查错率,Fp[i]=0,Fc[i]=0,Gp[i]=null,Gn[i]=null;i=1,2,…,n;
Step2、设置i=1;
Step3、依次执行本次选择的每个分组,并分别计算每个分组的查错率;
Step4、将每个分组的查错率Fc[i]按照从大到小的顺序进行排序,同时将分组Gc[i]按照查错率从大到小的顺序进行排序;
Step5、判断Fp[1]是否小于Fc[1]:如果是,则执行步骤Step6,否则,选择上一次选择查错率最高的分组作为最终的选择结果;
Step6、将i重新置为1;
Step7、判断i是否小于n:如果是,则执行步骤Step8;否则,执行步骤Step11;
Step8、将Gc[i]和Gp[i]取交集,并将交集个数设为count;
Step9、判断Sum/n是否等于count:如果是,则执行步骤Step10;否则,执行步骤Step13;
Step10、将Gc[i]与Gp[i]的交集放入Gn[i]中,继续步骤Step14;
Step11、判断i是否等于n:如果是,则执行步骤Step12;否则,执行步骤Step15;
Step12、将剩下所有未被选择的测试用例放入Gn[i]中,继续步骤Step14;
Step13、判断count是否等于0:如果等于0,则从Gc[i]和Gc[i+1]中未被选择过的部分随机选取Sum/n个测试用例放入Gn[i]中,继续步骤Step14;否则,将Gc[i]和Gp[i]交集中的测试用例放入Gn[i]中,Gn[i]剩余部分测试用例从Gc[i+1]中选取,继续步骤Step14;
Step14、i加1,返回步骤Step7;
Step15、将Fc[i](i=1,2,…,n)中的值依次放入Fp[i](i=1,2,…,n),分组Gc[i](i=1,2,…,n)中的测试用例依次放入Gp[i](i=1,2,…,n),将Gn[i](i=1,2,…,n)中的测试用例依次放入Gc[i](i=1,2,…,n)中,返回步骤Step2;
所述查错率= error[i]/∑error[i](i=1,2,…,n);其中,error[i]为第i个分组发现的缺陷数。
CN201510448023.3A 2015-07-27 2015-07-27 一种基于查错率的测试用例选择方法 Active CN105005531B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510448023.3A CN105005531B (zh) 2015-07-27 2015-07-27 一种基于查错率的测试用例选择方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510448023.3A CN105005531B (zh) 2015-07-27 2015-07-27 一种基于查错率的测试用例选择方法

Publications (2)

Publication Number Publication Date
CN105005531A CN105005531A (zh) 2015-10-28
CN105005531B true CN105005531B (zh) 2017-09-12

Family

ID=54378210

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510448023.3A Active CN105005531B (zh) 2015-07-27 2015-07-27 一种基于查错率的测试用例选择方法

Country Status (1)

Country Link
CN (1) CN105005531B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726124B (zh) * 2018-12-20 2023-06-02 北京爱奇艺科技有限公司 测试系统、测试方法、管理装置、测试装置及计算设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8402317B1 (en) * 2005-12-22 2013-03-19 The Math Works, Inc. Viewing multi-dimensional metric data from multiple test cases
CN102073483A (zh) * 2009-11-23 2011-05-25 中兴通讯股份有限公司 一种生成正交测试用例的方法及装置
CN103593287B (zh) * 2013-10-30 2016-08-17 北京信息控制研究所 一种基于遗传算法的数据流测试用例自动生成方法
CN104317719B (zh) * 2014-11-11 2017-03-29 浪潮电子信息产业股份有限公司 一种控制软件测试质量的方法

Also Published As

Publication number Publication date
CN105005531A (zh) 2015-10-28

Similar Documents

Publication Publication Date Title
CN105528289B (zh) 一种基于分支覆盖与相似性的回归测试用例优先排序方法
KR20160130252A (ko) 복합 결함 분류기
Pellegrini et al. A critical analysis of parameter adaptation in ant colony optimization
CN106980571A (zh) 一种测试用例集的构建方法和设备
CN109894383B (zh) 一种物品分拣方法、装置、存储介质及电子设备
CN112204580A (zh) 使用深度q网络促进资源配对的方法和装置
CN105005531B (zh) 一种基于查错率的测试用例选择方法
CN105426341B (zh) 复杂对象的参数辨识方法和装置
CN110599068A (zh) 一种基于粒子群优化算法的云资源调度方法
CN109145981A (zh) 深度学习自动化模型训练方法及设备
CN106373112A (zh) 图像处理方法、装置和电子设备
Zhang et al. A memetic particle swarm optimization algorithm for community detection in complex networks
CN110389822A (zh) 执行任务的节点调度方法、装置和服务器
JP6925655B2 (ja) 物質の分析装置
CN113743661A (zh) 锂离子电池在线容量预测的方法、系统、设备及存储介质
Gebruers et al. Using CBR to select solution strategies in constraint programming
CN111368991B (zh) 深度学习模型的训练方法、装置及电子设备
CN109784207A (zh) 一种人脸识别方法及装置
Grobler et al. Investigating the impact of alternative evolutionary selection strategies on multi-method global optimization
CN104008056A (zh) 软件测试方法及装置
CN110912783A (zh) 流量回放方法、装置、电子设备及存储介质
Reynoldson Food overlap of lake-dwelling triclads in the field
CN106294146B (zh) 参数替换测试方法及装置
CN111897735B (zh) 基于粒子群和多标准的模糊测试用例选择方法和装置
Katoen Model checking: one can do much more than you think!

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant