Page 140 - 《软件学报》2025年第5期
P. 140
2040 软件学报 2025 年第 36 卷第 5 期
路径覆盖测试的发展.
此外, 基于表 2–表 4 中的平均时间消耗和相应的约减率可知, 被测 MPI 程序规模越大, 约减率越大. 因此, 所提
方法对于大型 MPI 程序具有更有利的效率优势. 除效率之外, 相较于对比方法, 基于所提方法的测试用例生成也拥有
更高的平均路径覆盖率. 由此可见, 所提方法也适用于更多和更大的 MPI 程序, 从而支持所提方法的可扩展性.
4 对实验有效性的威胁
针对拉丁超立方体采样的采样尺寸 InSize, 如果 InSize 的值过大, 那么将需要大量执行被测 MPI 程序, 这将需
要高昂的计算成本; 反之, 采样的测试输入不能够满足 MPI 程序输入域的均匀分布特性, 进而导致不利于精准分
组目标子路径. 为了减轻该威胁, 我们继续引用文献 [17] 中设置的 SamSize 值.
差分进化算法 DE 的参数设置也会影响实验结果. 鉴于此, DE 的参数引用文献 [38]. 从实验结果可以看出, 上
述参数的设值是合理的. 需注意的是, 使用除 DE 之外的其他类型进化优化算法, 如爬山算法、粒子群优化、萤火
虫算法, 以及布谷鸟搜索算法等, 会面临不同的实验结果. 然而, 本文的创新之处并不在于使用何种进化优化算法,
而是在于通过使用某种进化优化算法验证所提测试用例生成框架的优越性.
所选的被测 MPI 程序影响实验结论. 如果所选程序不具有代表性, 那么, 实验结论就很难直接推广到其他程
序中. 为了尽可能减轻这类威胁, 我们在实验中选择具有不同进程数、原语数, 以及代码行数的程序, 表明它们具
有良好的代表性.
如果目标路径存在不可达或逻辑错误等缺陷, 那么基本路径覆盖测试将面临不可行测试问题. 为避免该问题,
本文运用已有的路径形成方法 [4] , 为每一被测 MPI 程序生成了一个基本目标路径集. 实验结果表明, 本文的 MPI
程序基本路径覆盖测试很好地规避了不可行测试问题.
此外, 时间消耗是反映测试用例生成效率的重要指标. 实验中, 以分钟的形式描述时间消耗, 该值与实现环境
的配置, 如处理器数量与类型等密切相关. 显然, 在完成相同任务时, 具有不同配置的环境将具有不同的时间消耗.
为了缓解该威胁, 在相同环境中, 运行 20 次相同的任务, 并记录时间消耗, 基于此计算平均时间消耗.
5 总 结
为高效生成测试用例, 本文提出一种代理辅助多任务进化优化引导的 MPI 程序路径覆盖测试用例生成方法.
所提方法中, 首先面向目标路径内每条目标子路径, 训练相应的代理模型; 然后, 将每条目标子路径的测试用例生
成优化模型置于一个优化任务中, 基于相应的代理模型, 估计进化个体的适应值, 并选择最优进化个体, 用于形成
候选测试用例集; 最后, 在每条目标子路径对应的优化任务中, 基于候选测试用例集及其面向每条目标子路径的真
实适应值, 更新相应的代理模型, 直至生成覆盖 MPI 程序目标路径的测试用例. 将所提方法应用于若干基准 MPI
程序, 并与其他多种方法比较. 实验结果表明, 所提方法能够显著提高测试用例生成的有效性和效率.
考虑到本文研究的问题是 MPI 程序路径覆盖测试用例生成问题, 且运行所提方法过程中, 需要基于 MPI 并行
编程标准来实现多个任务中优化模型的并行进化求解, 因此, 将所提方法应用至如 OpenMP 等其他多线程并发程
序的路径覆盖测试时, 仅需对并行进化求解的过程做出相应的修改, 这表明所提方法拥有良好的普适性. 此外, 尽
管实验中提出方法在测试用例生成方面的性能优于对比方法, 但是仍有进一步提高有效性与效率的空间. 未来, 我
们将更深入地研究目标子路径的测试用例生成方法, 建立更优异的优化模型. 同样地, 我们也将开发新型技术, 用
于加速优化模型的求解效率. 考虑到符号执行具有快速精准解析约束公式的优点, 因此, 我们也将进一步研究可以
用于 MPI 程序路径覆盖测试用例生成的符号工具, 该工具将能够处理 MPI 程序内广播 (broadcast)、分散 (scatter)、
收集 (gather)、全互换 (alltoall) 等特殊通信操作, 从而支持一条 MPI 程序目标路径涉及进程之间的消息传递解析.
通过以上未来的工作, 我们相信生成测试用例的有效性与效率会拥有更显著的优势.
References:
[1] Ezhilarasi GA, Swarup KS. Parallel contingency analysis in a high performance computing environment. In: Proc. of the 2009 Int’l Conf.