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.