Page 139 - 《软件学报》2025年第5期
P. 139

孙百才 等: 代理辅助多任务进化优化引导的             MPI 程序路径覆盖测试用例生成                              2039


                    根据表   3  中第  7  和第  8  行, 我们能够获得如下推论: (1) 针对   IMB-MPI1、DepSolver、Kfray、SUSY-HMC  和
                 ClustalW  的路径覆盖测试, 使用提出方法和          Approach-NoMod  的路径覆盖率没有显著差异; (2) 面向         HPL  和
                 mpiBLAST  的路径覆盖测试, 使用提出方法和          Approach-NoMod  的路径覆盖率具有显著差异; (3) 针对所有被测
                 MPI 程序的路径覆盖测试, 使用提出方法和            Approach-NoMod  的时间消耗具有显著差异.
                    结合表    3  中第  1–6  行的数据, 我们可以得出结论使用所提方法生成测试用例的有效性和效率明显优于
                 Approach-NoMod. 因此, 验证了本文中基于代理模型能够降低            MPI 程序路径覆盖测试成本.
                    (3) 验证  RQ3
                    为了验证    RQ3, 我们分别使用所提方法和         Approach-EvoGen  来生成测试用例, 用于覆盖每一被测        MPI 程序的
                 基本目标路径集. 表      4  列出了相关的实验结果, 表      4  中各行数据的含义可参考表        2.

                                        表 4 所提方法和     Approach-EvoGen  的实验结果对比

                               指标               IMB-MPI1 DepSolver Kfray  HPL  SUSY-HMC ClustalW mpiBLAST 平均值
                                    所提方法          90.7    95.8  92.7  84.5   89.7    86.4   75.3    87.9
                 平均路径覆盖率 (%)     Approach-EvoGen  78.2    87.5  82.9  67.0   75.5    71.4   55.6    74.0
                                   百分比差异          12.5    8.3    9.8  17.5   14.2    15.0   19.7    13.9
                                  所提方法 (min)     6 093.5  2 739.7  7 596.4 51 494.1  97 686.3  142 756.8 259 793.7 81 165.8
                   平均时间消耗      Approach-EvoGen (min)  8 921.7  3 672.5 10 521.3 81 221.0 143 445.4 215 644.7 427 292.3 127 245.6
                                    约减率 (%)       31.7    25.4  27.8  36.6   31.9    33.8   39.2    32.3
                                   路径覆盖率          0.030  0.071  0.065  <0.001  0.026  0.005  <0.001  -
                       P值
                                    时间消耗          0.032  0.074  0.067  <0.001  0.028  0.007  <0.001  -

                    由表  4  的第  1–3  行可知: (1) 对于所有被测   MPI 程序, 所提方法和     Approach-EvoGen  的平均路径覆盖率的平
                 均值分别为    87.9%  和  74.0%; (2) 对于所有被测程序, 提出方法和     Approach-EvoGen  的平均路径覆盖率的平均百分
                 比差为   13.9%. 以上数据表明, 所提方法能够显著提高路径覆盖率.
                    从表  4  的第  4–6  行可以看出: (1) 对于  7  个被测  MPI 程序, 所提方法和   Approach-EvoGen  的平均时间消耗的
                 平均值分别为     81 165.8 min  和  127 245.6 min; (2) 面向所有被测  MPI 程序, 使用所提方法和  Approach-EvoGen, 平均
                 时间消耗的约减率为       32.3%. 由此可以得出结论, 所提方法可以显著减少生成测试用例所需的时间消耗.
                    根据表   4  中第  7  和第  8  行, 我们能够获得如下推论: (1) 针对   DepSolver 和  Kfray  的路径覆盖测试, 运用所提方
                 法和  Approach-EvoGen  的路径覆盖率和时间消耗没有显著差异; (2) 对于其他测试程序, 使用提出方法和
                 Approach-EvoGen  的路径覆盖率和时间消耗具有显著差异.
                    结合表   4  中第  1–6  行的数据, 我们可以得出结论: 使用所提方法生成测试用例的有效性和效率明显优于
                 Approach-EvoGen. 因此, 验证了所提方法能够高效生成覆盖          MPI 程序目标路径的测试用例.
                    (4) 实验总结
                    为了确定基于多任务进化优化能否高效生成                MPI 程序目标路径的测试用例, 本文设计了研究问题               RQ1, 该研
                 究问题的验证需要分别利用多任务和单任务进化优化生成覆盖                      MPI 程序目标路径的测试用例. 通过验证           RQ1, 可
                 以发现基于多任务进化优化的测试用例生成耗时更少, 且路径覆盖率更高, 这表明本文提出的多任务进化优化框
                 架更有利于高效生成期望的测试用例.
                    为了判断基于代理模型能否降低            MPI 程序路径覆盖测试成本, 本文设计了研究问题              RQ2, 该研究问题的验证
                 需要使用代理模型来降低被测           MPI 程序的实际执行成本, 以及不采用代理模型. 通过验证                RQ2, 能够发现使用代
                 理模型的所提方法更快地生成了期望的测试用例, 这表明本文训练的代理模型在降低                             MPI 程序路径覆盖测试成
                 本方面具有显著优势.
                    为了判定所提方法能否提高测试用例生成的有效性与效率, 本文设计了研究问题                            RQ3, 该研究问题的验证需
                 要分别对比本文所提方法和当前应用于              MPI 程序路径覆盖测试的最新研究工作. 通过验证              RQ3, 可以发现本文所
                 提方法在测试用例生成速度和覆盖能力方面具有优越性. 鉴于此, 可证明本文所提方法有助于推进                               MPI 程序基本
   134   135   136   137   138   139   140   141   142   143   144