论文

通过人工测试启发的工作流程生成单元测试的多代理 LLM 协作

Multi-Agent LLM Collaboration for Unit Test Generation via Human-Testing-Inspired Workflows

智能体系统Agent 协作

摘要

最近,大语言模型 (LLM) 的出现激发了对自动化单元测试生成的研究浪潮,产生了令人印象深刻的性能并减少了手动工作。然而,现有的基于 LLM 的方法仍然存在两个主要限制:(1)它们遵循严格的程序化工作流程,未充分利用 LLM 的自主推理潜力,使得难以根据实时反馈动态调整测试策略; (2) 它们依赖于基于规则的上下文提取,该上下文提取不适用于测试生成,无法捕获细粒度的代码依赖性和派生测试需求所需的特定于测试的知识。在本文中,我们提出了 TestAgent,这是一种基于 LLM 的测试生成方法,该方法通过多代理协作机制模拟人类测试实践来解决上述限制。特别是,TestAgent设计了三个专门的代理,即需求规划器、测试生成器和测试评审器,来模拟开发人员如何理解、构建和验证单元测试。为了释放LLM的自主能力,我们为TestAgent配备了一组工具API,可以以按需和自适应的方式动态调用。为了进一步支持存储库级推理,TestAgent 通过静态分析构建测试专用知识图,该知识图捕获整个项目中的代码实体及其依赖关系,并持久存储生成过程中生成的测试工件(例如测试报告和故障分析)。实验结果表明,TestAgent 在 6 个 Java 项目上实现了 97.46% 的执行率、92.34% 的行覆盖率、90.24% 的分支覆盖率和 83.69% 的突变分数,在所有指标上都优于基于 LLM 的基线,并且获得了比基于搜索的工具更高的突变分数。