论文

NEUROTESTGEN:使用大型语言模型生成神经符号引导测试

NEUROTESTGEN: Neuro-Symbolic Guided Test Generation with Large Language Models

智能体系统Agent 架构与控制循环

摘要

确保高结构覆盖率仍然是自动化测试生成中的一个基本挑战,特别是对于复杂的软件系统来说,到达特定的线路或分支需要满足复杂的控制和数据流约束。大型语言模型(LLM)最近展示了生成类人测试用例的强大能力;然而,他们常常难以生成满足精确路径条件的输入。相反,符号执行可以系统地导出此类约束,但它通常无法构造现实的、可执行的测试用例,并且受到可扩展性限制的约束。在本文中,我们介绍了 NEUROTESTGEN,这是一种混合方法,它将符号执行与 LLM 驱动的测试综合相集成,以生成针对按需代码覆盖率的测试用例。给定方法中的一组目标语句,NEUROTESTGEN 首先采用符号分析引擎(即 Z3 SMT 求解器)来提取特定于路径的约束并为所需的覆盖目标构建符号指导规范。然后,该规范用于指导大语言模型综合结构有效且语义有意义的具体测试用例。对于涉及 SMT 求解器难以处理的复杂对象相关约束的路径,NEUROTESTGEN 利用 LLM 来推断合理的约束。此外,NEUROTESTGEN 还包含一个迭代反馈循环,可验证 LLM 生成的测试并提供纠正指导,直到覆盖目标行或分支或达到限制。我们对广泛使用的基准的实证评估表明,NEUROTESTGEN 在多个大语言模型中显着优于最先进的方法,包括 Llama 3.3 70B1、GPT-4o Mini、Claude 3.5 Haiku3 和 Claude Sonnet 4.6。