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

周小莉  等:基于偶然正确性概率的回归测试选择方法                                                       2109


                 3.2   回归测试选择策略
                    基于偶然正确性概率进行测试选择的过程分为下面 3 个步骤.
                    (1)  获取测试选择的备选测试用例集合 T.本文将 T 中所有覆盖被修改代码的测试用例加入 T.
                    (2)  估算 T在 P上执行时发生偶然正确性现象的概率.根据第 3.1 节给出的估算方法,根据 T在 P 上的执行
                 信息估算 T 在 P上执行时发生偶然正确性现象的概率.
                    (3)  从备选测试集 T中,根据代码覆盖和偶然正确性概率进行测试选择.
                    在第 3 步的测试选择过程中,本文给出两种具体的选择策略,分别采用了前文第 2.2 节中描述的最小化策略
                 和安全策略的思想.
                 3.2.1  基于最小化的策略
                    本文的第 1 种选择策略是基于 Beena 等人         [22] 提出的基于代码覆盖的最小化方法,该方法以最小化测试集为
                 目标,选择出满足基本的代码覆盖的最小测试集合.
                    在最小化方法的基础上,本文加入了基于偶然正确性概率的选择过程.首先基于代码覆盖的最小化技术,将
                 满足代码覆盖的最小集合作为回归测试用例集.仅仅满足代码覆盖的充分度准则无法保障测试集合的错误发
                 现能力,因此,本文从中再选择出满足基于偶然正确性概率的充分度准则的最小测试集,以提高故障检测用例的
                 数目.在进行两次选择之后,回归测试集合满足代码覆盖和基于偶然正确性概率的充分度准则,并保障了测试集
                 合发现错误的能力,同时,测试用例集合的规模也得到了控制.
                    为了提高回归测试集合中故障检测用例的数目,本文将偶然正确性概率低于一定标准 K 1 的测试用例加入
                 被选集.这种策略更着重于用例的缩减,在测试资源有限的情况下,首先保证代码覆盖率和基于偶然正确性的充
                 分度,从而保障测试集的错误发现能力.然后在资源允许的情况下,选择更可能检测出故障的测试用例,增加被
                 选集合中故障检测用例的数目.测试人员可以通过调整 K 1 的值在测试集合大小与故障用例数目之间作不同程
                 度上的折中.
                    算法 3.1 中展示了基于最小化策略的选择算法.算法的输入是覆盖修改的测试集合 T、被修改的语句集
                 合 S、被修改程序上的偶然正确性概率以及需要满足的偶然正确性概率的上限 K 1 .该算法的目标是输出一个
                 回归测试用例集合 T,尽可能地使得各个被修改语句的综合偶然正确性概率小于等于 K 1 .该算法选择出的回
                 归测试用例集满足代码覆盖和基于偶然正确性概率充分度标准,并将偶然正确性概率低于标准 K 1 的用例加
                 入被选集.
                                              [5]
                    算法 3.1 中使用了我们以往工作 所提出的基于偶然正确性概率的充分度准则.一个测试集合 T 在语句 s
                 上满足基于偶然正确性的充分度为 AC(s,T),当 AC(s,T)≥时,称 s 满足基于偶然正确性概率的充分度标准.第
                 1 种选择策略包括了 3 个选择过程.
                    (1)  选择出满足代码覆盖的最小的测试集.
                    不断地将能够覆盖最多被修改代码的测试用例加入到被选集中,得到一个覆盖所有被修改代码的最小测
                 试集.算法 3.1 中第 2 行~第 6 行描述了基于代码覆盖信息选择测试用例的过程.这里使用贪心算法从测试用例
                 集合中优先选择那些可以覆盖更多未被覆盖的被修改语句的测试用例,当被选择的测试集合可以覆盖所有的
                 被修改语句时停止选择.
                    (2)  选择满足基于偶然正确性概率的充分度的最小集.
                    此次选择的目的是得到一个较小的集合,使得被选集合对于被修改的每一条语句都满足基于偶然正确性
                 概率的充分度标准.算法 3.1 中第 7 行~第 19 行描述了具体的选择方法.
                    (3)  选择偶然正确性概率低的用例加入被选集合.
                    这里设定了一个可调节的参数 K 1 ,将至少对于一条被修改语句的偶然正确性概率低于 K 1 的用例加入被选
                 集合.因为只要测试用例可以发现 S 中任意一条语句中的错误,这个测试用例即为故障检测用例,应被选为回归
                 测试用例.K 1 的设定值越高,对偶然正确性概率的要求越低,这种策略选出的回归测试集合也越大.算法 3.1 中第
                 20 行~第 25 行描述了这一步骤的具体操作.
   186   187   188   189   190   191   192   193   194   195   196