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 sS 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充分度的语句),则选择偶然正确性概率乘积Π sS CCP(s,t)最大的测试用例t;
17: 将t加入T,并将t从T中删除;
18: 在S中删除在测试集合T上满足充分度标准的语句;
19: end while
20: //第3步:根据偶然正确性概率标准K 1 选择较低概率发生偶然正确性概率的用例
21: for each tT 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 种算法采取了一个较为简单的测试用例删减标准,它在不降低代码覆盖并满足基于偶然正确性概率