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 程序基本