Page 114 - 《软件学报》2021年第9期
P. 114

2738                                 Journal of Software  软件学报 Vol.32, No.9,  September 2021

         基于本文技术缩减后测试用例集的有效性:
                                       ⎛   缩减后测试用例集数量 ⎞
                                     e  = P  ⎜  1−           ⎟  ×  100%                       (3)
                                       ⎝     原测试用例集数量        ⎠
                                    ⎛  缩减后测试用例集发现缺陷数量 ⎞
                                 i  = P  ⎜  1−                   ⎟  ×  100%                   (4)
                                    ⎝    原测试用例集发现缺陷数量            ⎠
             从公式(3)可知:P e 越大,测试用例缩减得越多,节省测试资源越多;从公式(4)可知:P i 越小,缩减后测试用例集
         的缺陷发现能力越接近原测试用例集.
             为了验证用户使用信息能否在测试用例集缩减中起到积极作用,实验中将本文所提技术与一种经典的随
               [6]
         机搜索 进行对比,即随机地从原测试用例集中构造测试用例缩减集,并保证满足测试覆盖准则.伪代码见表 7,
         其搜索过程结束条件就是测试覆盖准则满足(第 1 行),当不满足覆盖准则时,从原测试用例集中随机选择一个测
         试用例并添加到测试用例缩减集中(第 2 行、第 3 行).在本实验中,随机搜索采用的覆盖准则与本文所提技术保
         持一致,即要求缩减后测试用例集覆盖原测试用例集的服务调用关系.

                                      Table 7   Random searching algorithm
                                             表 7   随机搜索算法
                          算法. RandomSearch(T,f,T r).
                          参数:T,原测试用例集(输入);f,测试准则判定函数(输入);T r,测试用例缩减集(输出).
                          1   while not f(T r) do
                          2     t←T.random_select(⋅)
                          3     T r.append(t)
                          4   end while

             实验步骤如下.
             S1.  挖掘第 k(1≤k≤6)轮的 API 网关层日志记录,获得频繁路径集,标记为 FP k ;
             S2.  将第 k+1 轮的测试用例分为沿用测试用例集和新增测试用例集,即完全沿用自第 k 轮的测试用例,在
                 该系统中与第 k 轮测试用例完全相同,新增测试用例则为第 k+1 轮根据系统增量新生成的测试用例;
             S3.  基于 S1 中获得的频繁路径集对 S2 中的沿用测试用例集进行缩减,并将缩减后的测试用例集与 S2 中
                 的新增测试用例集合并,作为第 k+1 轮缩减后的测试用例集 T 1 ;
             S4.  采用随机搜索技术对 S2 中的沿用测试用例集进行缩减,并将缩减后的测试用例集与 S2 中的新增测
                 试用例集合并,作为第 k+1 轮用于对比的测试用例集 T 2 ;
             S5.  对照测试记录统计 T 1 和 T 2 的缺陷发现数量,计算各自的 P e 和 P i ,然后进行对比分析;
             S6.  统计缩减后测试用例执行时间,计算测试用例缩减后节省的时间.同时,统计每轮迭代生成 T 1 过程的
                 时间开销,进而验证测试用例缩减带来的时间收益;
             (2)  实验 2:API 网关层日志规模对缩减效果的影响实验.
             S7.  挖掘第 7 轮的 API 网关层日志记录,获得频繁路径集,标记为 FP 7 ;
             S8.  基于 FP k (1≤k≤7)对第 7 轮测试用例集进行缩减,分别得到 7 个缩减后的测试用例集;
             S9.  计算对比缩减后测试用例集的 P e 和 P i ,分析 API 网关层日志规模对缩减效果的影响.
         3.3   实验结果与分析
             (1)  实验 1 结果与分析
             根据实验 1 的过程,挖掘出第 1 轮~第 6 轮的 API 网关层日志,并将结果分别用于第 2 轮~第 7 轮测试用例
         集的缩减,然后统计缩减后的测试用例数、发现的缺陷数以及工作量,并计算 P e 和 P i .其中,测试用例集 T 1 相关
         数据见表 8,测试用例集 T 2 相关数据见表 9.同时,统计每轮迭代生成 T 1 过程的时间开销,计算环境为英特尔酷睿
         i7 处理器、32GB 内存和 CentOS7.6 操作系统,相关数据见表 10.
   109   110   111   112   113   114   115   116   117   118   119