Page 115 - 《软件学报》2021年第9期
P. 115
陈立哲 等:基于日志挖掘的微服务测试集缩减技术 2739
Table 8 Statistical data of T 1 in the experiment 1
表 8 实验 1 中 T 1 相关数据
迭代 服务测试 端到端测试
轮次 测试用例数 缺陷数 P e(%) P i(%) 执行时间(时) 测试用例数 缺陷数 P e(%) P i(%) 执行时间(时)
2 385 199 36.78 7.00 32.26 115 93 46.51 5.10 21.60
3 373 89 42.79 3.26 32.75 80 49 64.91 5.76 16.23
4 418 63 38.79 0.00 34.09 79 23 65.94 0.00 15.87
5 439 31 38.25 0.00 35.52 78 11 66.37 0.00 15.12
6 726 114 35.86 0.86 56.79 65 27 76.01 0.00 12.75
7 632 47 45.75 0.00 51.03 63 13 77.09 0.00 12.13
Table 9 Statistical data of T 2 in the experiment 1
表 9 实验 1 中 T 2 相关数据
迭代 服务测试 端到端测试
轮次 测试用例数 缺陷数 P e(%) P i(%) 执行时间(时) 测试用例数 缺陷数 P e(%) P i(%) 执行时间(时)
2 341 151 44.00 29.44 29.31 132 66 38.60 32.65 24.32
3 294 59 54.91 35.87 26.93 94 34 58.77 34.61 19.78
4 336 37 50.80 41.26 28.72 92 11 60.34 52.17 19.13
5 312 14 56.12 54.84 27.97 94 3 59.48 72.72 20.12
6 765 76 32.42 33.91 58.46 103 19 61.99 29.63 22.33
7 683 29 41.37 38.29 53.25 86 6 68.73 53.85 16.43
Table 10 Time expenses in T 1 generation and the time saved using test suite minimization
表 10 T 1 生成过程的时间开销和测试用例缩减后节省的时间
T 1 生成过程的时间开销 测试用例缩减后节省的时间
迭代 日志挖掘 服务测试缩 端到端测试缩减 端到端
轮次 服务测试(时) 百分比(%) 百分比(%)
环节(时) 减环节(时) 环节(时) 测试(时)
2 0.011 2 0.001 1 0.000 9 17.86 35.63 15.80 39.38
3 0.033 5 0.001 6 0.001 3 23.64 41.92 22.42 53.12
4 0.092 7 0.001 6 0.001 3 23.63 40.93 23.72 55.35
5 0.176 1 0.001 6 0.001 3 23.29 39.60 22.61 52.91
6 0.385 4 0.002 1 0.001 3 31.90 35.96 25.92 53.72
7 0.919 6 0.002 1 0.001 3 42.18 45.25 32.48 66.40
从表 8 和表 9 中的数据可以看出:两种测试用例缩减技术在满足覆盖准则的条件下,都能缩减测试用例集
的规模,对其缺陷发现能力的影响各有差异.为了直观比较两种方法缩减测试用例的效果,分别将 P e 和 P i 绘制成
折线图,其中,P e 对比折线图如图 3 所示,P i 对比折线图如图 4 所示.
从图 3 中可以看出:本文提出的测试用例缩减技术与基于随机搜索的测试用例缩减技术都能大幅减少测
试用例的规模,进而减少测试执行所需的工作量,并且缩减能力大致相当,约 40%左右.同时也表明了在微服务系
统实际使用过程中,各个服务调用频率确实存在差异.从图 4 可知:基于随机搜索技术缩减的测试用例集合 T 2 的
缺陷发现能力同样产生了明显下降,降幅达到至少 30%以上;特别是在新增测试用例较少时,其缺陷发现能力受
影响越大.这说明:由于服务之间关联的动态性,微服务架构的服务测试不能简单参照单块架构的测试覆盖准
则,否则会造成不少缺陷被遗漏的情况.与之相对的,基于本文提出技术缩减的测试用例集合 T 1 的缺陷发现能力
并未受到太大影响,降幅不超过 10%;尤其是在新增测试用例较少时,基本能维持原有测试用例集的缺陷发现能
力.这主要是因为 T 1 在满足测试覆盖准则的同时,一并考虑了系统实际运行过程的用户使用信息,从而保留了频
次高的服务调用路径对应的测试用例,这些路径类似于高速公路中“枢纽”,请求频次多、用户使用场景覆盖较为
全面,相应地,测试用例对整体测试用例集缺陷发现能力的贡献更为突出.
通过表 10 数据可知:本次实验中 T 1 生成过程的时间开销不超过 1 小时,远远小于测试用例缩减后节省的时
间,说明本文所提技术在实验中确实起到了节省测试时间的作用.同时,本文所提技术的时间开销主要集中在日
志挖掘环节,对于近百万级规模的日志挖掘时间相对较长,这是由于未做增量式挖掘而造成每次迭代都要完整
扫描整个日志数据的缘故,是下一步需要改进的地方.