Page 194 - 《软件学报》2021年第7期
P. 194
2112 Journal of Software 软件学报 Vol.32, No.7, July 2021
11: 将t加入备选集T;
12: end if
13: end for
14: //为备选集中的每一个用例计算其评估变量AC meas
15: for each tT do
16: (S,t,T)= AC (, ,s t T //表示AC dec (s,t,T)的和;
);
sS dec
AC (, ,s t T AC
)
17: (S,t,T)= sS dec avg ; //表示AC dec (s,t,T)的标准差;
||S
18: 定义评估变量AC meas (s,t,T)=(s,t,T)(s,t,T);
19: end for
20: //从T中优先删除备选集中AC meas 最小的用例
21: for each tT do
22: 选择AC meas (s,t,T)最小的测试用例t,并将其从T中删除;
23: //更新备选集T;
24: 从T中选出被删除后仍使得T满足充分度标准的用例加入T;
25: end for
算法 3.2 展示了第 1 种删除方法的算法描述,其输入是覆盖修改的测试集合 T、被修改的语句集合 S、被
修改程序上的偶然正确性概率以及需要满足的偶然正确性概率的下限 K 2 .该算法选择出的回归测试集满足代
码覆盖和基于偶然正确性概率的充分度标准,并且在此前提下尽可能地不包含发生偶然正确性概率较高的用
例.这里设定了一个可调节参数 K 2 ,其取值在 0~1 之间,在满足覆盖率要求及基于偶然正确性概率的充分度的前
提下,将那些对大多数被修改语句的偶然正确性概率都高于 K 2 的用例从测试集中删除.如果测试用例对于所有
被修改语句的偶然正确性都非常高,表明它发现错误的概率很低,这个用例不应该被选为回归测试用例.K 2 设定
得越高,对偶然正确性概率的要求就越宽松,其选出的测试用例数目也越多.
算法 3.3 中给出了另一种删除用例的方法,这种方法优先删除对各语句的基于偶然正确性概率的测试充分
度的综合影响程度较小,并且使得各语句的测试充分度较均匀地下降的用例,目标是使得测试资源更平均地分
配到各个被修改语句.对于每个测试用例,首先计算出该用例被删除后各语句的基于偶然正确性的充分度,然后
根据其总体的降低程度和对各语句的具体降低情况定义一个评估标准,在保障测试集充分度的前提下优先删
除那些综合影响程度较低并且对各语句的影响较为平均的用例.算法 3.3 的输入和输出与算法 3.2 一致,其中,K 2
是控制充分度变化幅度上限的一个可调节参数.首先,对每个测试用例计算出该用例被删除后基于偶然正确性
概率的测试充分度的降低程度.然后,将对测试充分度的影响程度的平均值低于 K 2 ,并且被删除后仍能够使得测
试集满足代码覆盖和基于偶然正确性概率的充分度标准的用例作为备选集 T.最后,在 T中选出使得充分度
的综合下降程度较低并且使得各语句的充分度比较平均地下降的测试用例,并将其从 T中删除.在算法中,用
(S,t,T)之和来表示 t 使得充分度下降的总体程度,用(S,t,T)来衡量各语句的充分度下降的具体情况,然后基
于(S,t,T)和(S,t,T)定义了对用例进行评估的变量 AC meas .该算法在保证测试集充分度的前提下,优先删除
AC meas 较低的用例.
4 实验设计和评估
4.1 回归测试技术的评估方法
Rothermel 和 Harrold [23,24] 提出了评估回归测试选择技术的统一框架,采用了包括安全性、精度、执行效率
和可扩展性等评估标准.本文从中选择几个比较重要的指标对测试选择的结果进行评估,其中包括测试集合规
模的缩减、安全性、精度变化以及一种衡量安全性和精度的综合指标 PR.