利用大型语言模型自动化生成高性能计算软件的单元测试
摘要
本文探讨了利用大型语言模型(LLMs)自动生成高性能计算(HPC)软件的单元测试的潜力。针对并行和高性能计算软件的单元测试实施面临的挑战,如复杂逻辑和并行处理技术的特殊性,本文评估了Davinci和ChatGPT两种生成模型在C++并行程序单元测试生成中的应用。研究发现,LLMs能够生成大部分语法正确且覆盖率高的单元测试,但也存在重复断言和空白测试用例等局限性。
原理
本文通过利用LLMs的代码生成能力,针对C++并行程序(使用OpenMP和MPI)生成单元测试。LLMs通过训练大量源代码数据,能够理解和生成符合特定编程模式的代码。在生成单元测试时,模型会根据输入的代码上下文和模板,生成相应的测试用例。这种方法不仅提高了测试用例的生成效率,还增强了测试覆盖率。
流程
研究团队首先选择了7个流行的并行和高性能计算项目作为基准,然后使用Davinci和ChatGPT模型生成单元测试。生成过程中,模型会根据不同的温度设置(0, 0.2, 0.4)来调整生成代码的随机性。生成的测试用例随后通过编译和执行,评估其正确性和覆盖率。此外,研究还探讨了不同上下文信息对生成测试用例质量的影响。
应用
该研究为并行和高性能计算软件的自动化测试提供了新的思路和方法。通过LLMs生成的单元测试不仅提高了测试效率,还有助于发现代码中的潜在问题。未来,这种方法可以进一步扩展到其他编程语言和更复杂的软件系统中,推动软件测试领域的自动化和智能化发展。
