Page 192 - 《软件学报》2021年第7期
P. 192

2110                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                    算法 3.1.  采用最小化策略的基于偶然正确性概率的测试选择算法.
                    Input:
                       覆盖修改代码的测试集合T;
                       程序中被修改的语句集合S;
                       针对S中每一条语句,T中每个测试用例的偶然正确性概率;
                       偶然正确性概率的上限K 1 ;
                    Output:
                      回归测试用例集合T.
                      1:   初始情况下,T=;
                      2:   //第1步:为满足基于代码覆盖标准进行测试选择
                      3:   while T没有达到和T同样的覆盖度并且T不为空do
                      4:     从T中选择可以得到最大覆盖度增量的测试用例t;
                      5:     将这个测试用例t加入到T中并将其从T′中删除;
                      6:   end while
                      7:   //第2步:为满足基于CCP的充分度标准进行测试选择
                      8:   定义一个语句集合S;//不满足CCP充分度的被修改语句的集合;
                      9:   for each sS do
                      10:   if AC(s,T) then
                      11:      将s加入到S中;
                      12:   end if
                      13: end for
                      14: while S不为空并且T不为空do
                      15:   定义AdeqIncrement(t)=将t加入T后使得S中的满足基于CCP的充分度的语句数目;
                      16:   从T′中选择AdeqIncrement(t)最大的测试用例:
                          如果得到最大AdeqIncrement值的测试用例不止一个或所有用例的AdeqIncrement都为0(即所有用
                          例都无法增加满足CCP充分度的语句),则选择偶然正确性概率乘积Π sS CCP(s,t)最大的测试用例t;
                      17:   将t加入T,并将t从T中删除;
                      18:   在S中删除在测试集合T上满足充分度标准的语句;
                      19: end while
                      20: //第3步:根据偶然正确性概率标准K 1 选择较低概率发生偶然正确性概率的用例
                      21: for each tT do
                      22:   if S中至少一条语句s满足CCP(s,t)≤K 1  then
                      23:      将t加入T,并将t从T中删除;
                      24:   end if
                      25: end for
                 3.2.2  基于安全技术的策略
                    基于安全技术的策略是在安全选择技术的基础上,根据偶然正确性概率进一步进行选择.安全的选择技术
                 将所有覆盖修改的用例作为回归测试用例.然而,这种技术所选择出的测试集合中包含因偶然正确性现象的发
                 生而无法检测故障的测试用例.因此,安全的选择策略无法进一步有效地缩减测试用例集合的大小.当全部运行
                 这些测试用例所需要的资源超过了资源限制时,就需要按照一定的准则有效地缩减测试用例集合.本文采用了
                 两种根据偶然正确性概率进行删减的方法,其具体的算法分别展示在算法 3.2 和算法 3.3 中.
                    第 1 种算法采取了一个较为简单的测试用例删减标准,它在不降低代码覆盖并满足基于偶然正确性概率
   187   188   189   190   191   192   193   194   195   196   197