- 简介测试驱动开发(TDD)是一种广泛采用的软件工程实践,要求开发者在编写代码的同时创建并执行测试,以持续验证和优化软件行为。在“氛围编程”(vibe coding)时代,开发者越来越多地通过指定高层次意图,将代码编写任务委托给大语言模型(LLM),此时TDD变得更加关键,因为测试用例可作为可执行的规格说明,明确界定并验证自然语言描述和代码上下文所无法充分传达的预期功能。尽管在TDD框架下进行氛围编程前景广阔,但仍面临三大主要挑战:(1)选择规模小但效果显著的测试套件,以提高生成准确性并控制执行开销;(2)高效检索相关代码等上下文信息;(3)系统化利用测试反馈实现有效的代码优化。为应对这些挑战,我们提出了TENET——一种在TDD环境下针对复杂真实代码仓库生成函数的LLM智能体。TENET包含三个核心组件:(1)一种新颖的测试驱动机制,通过精选简洁的测试套件,最大化覆盖目标使用场景的多样性;(2)一套定制化的智能体工具集,支持结合交互式调试高效检索相关代码;(3)一种基于反思的优化工作流,能够迭代分析失败原因、补充上下文信息,并实施代码改进。TENET在RepoCod和RepoEval两个基准测试上分别达到了69.08%和81.77%的Pass@1成绩,比现有最优的智能体基线方法分别高出9.49和2.17个百分点。此外,本研究首次探讨了在仓库级上下文中进行测试驱动的代码生成问题,并系统分析了测试套件的不同特性如何影响LLM智能体在TDD环境下的表现。
-
- 图表
- 解决问题论文试图解决在基于大语言模型(LLM)的‘vibe coding’趋势下,如何有效应用测试驱动开发(TDD)来自动生成高质量代码的问题。特别是在复杂真实代码仓库背景下,存在三大挑战:如何选择高效的小型测试套件、如何有效检索相关上下文代码、以及如何系统利用测试反馈进行代码迭代优化。该问题在当前LLM代理编程研究中尚属较新且关键的方向,尤其在结合仓库级上下文与TDD实践方面此前缺乏深入探索。
- 关键思路提出TENET——一个面向TDD场景的LLM智能体,其核心思路包括三部分:(1) 设计一种新颖的测试驱动机制,通过最大化使用场景多样性来筛选精简而有效的测试用例;(2) 构建定制化的工具集,支持对仓库内相关代码的高效检索与交互式调试;(3) 引入基于反思(reflection-based)的迭代优化流程,根据测试失败自动分析原因、补充上下文并改进代码。相比现有方法,TENET首次将测试作为可执行规范,在仓库级上下文中实现闭环的测试-生成-反馈循环,显著提升生成准确性。
- 其它亮点实验设计基于两个真实仓库基准RepoCod和RepoEval,评估Pass@1指标。TENET分别取得69.08%和81.77%的成绩,优于最强的代理基线9.49和2.17个百分点。这是首个在仓库级上下文中研究测试驱动代码生成的工作,系统分析了测试套件特征(如覆盖率、多样性)对生成效果的影响。论文强调测试不仅是验证手段,更是引导生成的关键信号。未来可进一步探索更智能的测试选择策略、跨文件依赖建模以及端到端开源框架构建。目前未明确提及是否开源代码。
- 1. 'CodeT: Towards Grand Challenge of Code Generation with Pre-trained Models and Test Feedback', NeurIPS 2022 2. 'Self-Debugging LLMs for Code Generation via Interactive Execution', ICML 2023 3. 'AgentCoder: An Autonomous Agent for Software Development', arXiv 2024 4. 'CRAG: Competitive Reflexion with Active Generation for Code', ACL 2024 5. 'Test-Time Training for Better Code Generation with Large Language Models', ICLR 2024
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流