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

文档序号:9288377阅读:来源:国知局
步骤Stepll ;
St印8、将Gc[i]和Gp[i]取交集,并将交集个数设为count ;
Step9、判断Sum/n是否等于count:如果是,则执行步骤SteplO ;否则,执行步骤Stepl3 ;
SteplO、将Ge [i]与Gp[i]的交集放入Gn [i]中,继续步骤Stepl4 ;
Stepll、判断i是否等于η:如果是,则执行步骤Stepl2 ;否则,执行步骤Stepl5 ; Stepl2、将剩下所有未被选择的测试用例放入Gn [i]中,继续步骤Stepl4 ;
Stepl3、判断count是否等于O:如果等于0,则从Gc[i]和Gc[i+1]中未被选择过的部分随机选取Sum/n个测试用例放入Gn[i]中,继续步骤Stepl4 ;否则,将Gc[i]和Gp[i]交集中的测试用例放入Gn[i]中,Gn[i]剩余部分测试用例从Ge [i+1]中选取,继续步骤Stepl4 ;
Stepl4、i 加 1,返回步骤 Step7 ;
Stepl5、将 Fe [i] (i=l, 2,…,η)中的值依次放入 Fp [i] (i=l, 2,…,η),分组 Ge [i](i=l, 2,..., η)中的测试用例依次放入Gp[i] (i=l, 2,…,η),将Gn[i] (i=l, 2,…,η)中的测试用例依次放入Gc[i] (i=l, 2,...,η)中,返回步骤Step2。
[0023]实施例3:如图1所示,一种基于查错率的测试用例选择方法,所述方法的具体步骤如下:
选择由欧洲航天局(European space agency)研发的Space作为待测试程序。Space中被植入了 38个独立的缺陷,即有38个错误版本的Space程序,相对应的生成了 13466个测试用例,每个测试用例都是数组定义语言的文件,并且都有相应的编号,未植入缺陷的Space版本作为参照体,即一个测试用例同时导入到植入和未植入缺陷的Space版本中,如果测试得到的输出结果不一样,就认为发现了一个缺陷。
[0024]如图1所示,为本发明所述基于查错率的测试用例选择算法的主要流程,该方法包括:
步骤(I):首先打开一个含有200个测试用例编号的文件,读入全部测试用例的信息;
步骤(2):设置η等于分组数,数组Fp[i]和Fc[i]分别表示上一次选择的查错率和本次选择的查错率,数组Gp [i]、Ge [i]、Gn [i]分别表示上一次选择分组,本次选择分组,和下一次选择分组;对步骤(I)中的测试用例进行分组,输入分组数为4和每个分组的测试用例数为50,程序此时开始对程序中的各个变量进行初始化:n=4,i=l, Fp[i]=0,Fc[i]=0,Gp[i]=null,Gn[i]=null (i=l, 2,3,4),并依据分组数以及每组的测试用例个数来对步骤Cl)中的测试用例分为4组,而后将每个分组的测试用例依次放入Ge[i]中(i=l,2,3,4);
步骤(3):将i的值重新置为1,依次执行4个分组,记录每个分组发现的缺陷数,并计算每个分组的查错率,并将第i个分组的查错率放入Fe [i]中(i=l,2,3,4)。查错率的计算过程是:
设error [i]、Fe [i],error [i]为第i个分组发现的缺陷数,Fe [i]为第i个分组的查错率,则:Fc[i]=erro;r[i]/ Σ error [i] (i=l, 2, 3, 4);
步骤(4):将数组Fe中的查错率按照从大到小的顺序进行排序,此时Fe [I]为最高查错率,并将Gc[i]中的测试用例也按照其所对应的查错率按照从大到小的顺序排序,即此时Ge [I]为查错率最高的分组;
步骤(5):判断Fe [I],即本次选择最高查错率,是否大于Fp [I],如果是的话则继续后续步骤,否则执行步骤(16),以本次选择的最高查错率Fc[l]是否低于上一次选择的最高查错率Fp [I]作为选择是否结束的标准,因为随着选择的不断进行,查错率会不断提高,如果本次选择的查错率低于上一次选择的查错率,那就证明本次选择是失败的或是查错率已经达到最高,因而应该终止选择;
步骤(6):将i重新置为I ;
步骤(7):判断i是否小于4,如果i小于4则继续执行,否则执行步骤(11);
步骤(8):将Gc[i]和Gp[i]取交集,并用count来记录该交集中的测试用例个数;
步骤(9):判断count是否等于50,是则继续步骤(10),否则执行步骤(13);
步骤(10):将Ge [i]与Gp[i]的交集放入Gn[i]中,继续步骤(14);
步骤(11):判断i是否等于4,是的话执行步骤(12),否则执行步骤(15);
步骤(12):1等于4表明已经是对最后一个分组进行测试用例的选择,因而将剩下所有未被选择的测试用例放入最后一个分组Gn [i]中,继续步骤(14);
步骤(13):判断count是否等于0,如果等于0,则从Ge [i]和Ge [i+1]中未被选择过的部分随机选取Sum/n个测试用例放入Gn[i]中,否则将Gc[i]和Gp[i]交集中的测试用例放入Gn[i]中,Gn[i]剩余部分测试用例从Ge [i+1]中选取,继续步骤(14); 步骤(14):i自加1,返回步骤(7);
步骤(15):将 Fc[i] (i=l,2,...,n)中的值依次放入 Fp [i] (i=l,2,…,η),分组 Ge [i](i=l, 2,..., η)中的测试用例依次放入Gp[i] (i=l, 2,…,η),将Gn[i] (i=l, 2,…,η)中的测试用例依次放入Gc[i] (i=l, 2,..., η)中,返回步骤(3)。
[0025]步骤(16):选择上一次选择查错率最高的分组作为最终的选择结果。
[0026]依据上述步骤,进行实验如下:
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、I1638、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、I1721、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、I1394、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=l,2, 3,4)如下:
第Ge [I]组测试用例编号:
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
第Ge [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
第Ge [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 第Ge [4]组测试用例编号:
I1536、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置为I,执行每个分组,并得到查错率分别为:
Fc[l]=0.54
Fc[2]=0.66Fc[3]=0.59Fc[4]=0.65
4)将分组Ge[i]按照分组的查错率Fe [i]按照从大到小的顺序进行排序,即Ge [I]为查错率最高的分组,Fe [I]为最高查错率,按查错率排序后结
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1