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

陈立哲  等:基于日志挖掘的微服务测试集缩减技术                                                         2737


         中移除当前节点及其边,并将新找到的节点作为当前节点继续遍历过程(第 13 行~第 15 行).该算法的终止条件
         主要有两个:一个是图为空,另一个则是已经搜索到的测试用例集满足覆盖性判定要求(第 4 行).
         2.3.2    覆盖性判定
             为了确保启发式搜索获得的测试用例集是“覆盖安全”                   [12,28] 的,需要判定其是否满足特定的覆盖准则,例如
         服务覆盖、调用关系覆盖、特定调用路径覆盖和功能覆盖等等.实现过程中,需将选定的覆盖准则定义为函数,
         并将该函数的指针传入搜索图生成算法中作为搜索过程终止的条件.本文在实验中使用调用关系覆盖进行覆
         盖性判定,即,搜索获得的测试用例集所包含服务调用关系必须覆盖原测试用例集所包含的服务调用关系.设
          R 表示测试用例缩减集中的服务调用关系集合,R T 表示原测试用例集中的服务调用关系集合,则该覆盖准则
           r T
         可定义为 ()f T =  r  R ⊆  T  R .
                            r T
         3    实验验证

             为验证技术的有效性,使用某集成办公系统开发过程的数据进行了实验.
         3.1   系统介绍
             该集成办公系统基于微服务架构设计开发,为多部门、多密级和跨地域的机构人员提供服务.系统提供的
         功能包括综合信息展示、公文流转、流程审批、计划管理、机构人员管理、合同管理、经费管理和物资管理
         等.由于业务类型和数据安全等问题,该系统由多个团队联合开发,开发周期经历了 7 个轮次的迭代,根据测试过
         程数据统计了每个迭代轮次的服务数量(个)、API 网关日志数量(条)以及服务测试和端到端测试的测试用例数
         量(个)、发现的缺陷数量(个)和执行时间(时)情况(测试执行方式为手工测试与自动化测试工具相结合的方式),
         见表 6.
                               Table 6    Statistical data of an integrated business system
                                    表 6   某综合业务系统开发过程统计数据
               迭代    服务   API 网关日志             服务测试                       端到端测试
               轮次    数量     记录数量     测试用例数     缺陷数    执行时间(时)    测试用例数     缺陷数    执行时间(时)
                 1    34    46 394      437     225      40.41      143      65      16.52
                 2    53    91 219      609     214      50.12      215      98      40.12
                 3    62    148 851     652      92      56.39      228      52      42.20
                 4    69    234 317     683      63      57.72      232      23      42.85
                 5    72    419 351     711      31      58.81      232      11      42.73
                 6   101    912 653    1 132     115     88.69      271      27      48.25
                 7   105   1 035 519   1 165     47      93.21      275      13      48.91
             从表 6 可以看出:在早期的 3 次迭代中,服务和测试用例的数量增长较快,属于系统构建阶段;在后两次迭代
         中,服务和测试用例的数量增长较慢,属于改进阶段.随着测试用例数量的增加,执行测试所需的人天数也随之
         增加,发现的缺陷数却在减少,第 4 轮、第 5 轮的缺陷数远低于前 3 轮.一方面,这是系统不断改进的结果;另一方
         面,系统本身增量不大,但要执行的测试用例比以前的迭代轮要多,这就造成了一定程度的浪费.到第 6 轮时,由
         于增加了多密级、跨地域等特性的支撑性服务,测试用例数量又进一步增加,第 7 轮服务基本稳定,但测试执行
         过程依然花费了比之前所有轮次更多的资源,类似于前 5 轮的变化.与此同时,API 网关层日志的数量迅速增加,
         记录了系统在各种业务场景下的大量用户操作信息,具备实施本文提出方法的输入条件.
         3.2   实验设计
             为了验证本文提出的技术是否能够有效缩减测试用例集,并且分析 API 网关层日志规模对缩减效果的影
         响,基于项目数据采用后验方式进行实验验证,即:在已知测试用例执行结果的情况下,统计缩减后测试用例集
         数量、发现缺陷数量和执行时间,计算评价指标,进而与原始数据进行对比分析.设计如下两个实验.
             (1)  实验 1:测试用例缩减效果实验.
             依据文献[6],实验采用测试用例集缩减率 P e (公式(3))和缺陷发现能力影响率 P i (公式(4))这两个指标分析
   108   109   110   111   112   113   114   115   116   117   118