TDD-Agent:代码生成的测试驱动推理

arxiv.org 2026-08-19T00:53:03.510801

论文信息

摘要

大型语言模型(LLM)在代码生成方面已经取得了显著进步,但在复杂的“仓库级”任务(需要理解整个代码库并完成修改的任务)中,如何保证生成结果的正确性仍然是一大难题。现有方法通常把模型自己生成的测试用例只当成事后的静态“验证器”——也就是代码写完之后,用测试来检查一下结果。这样做很难在实现过程中提供有效指导,而且如果测试本身不完整或有错误,还可能反过来给模型带来误导性的反馈。为此,我们提出了 TDD-Agent,把“测试驱动开发”(Test-Driven Development,TDD:先写测试、再写实现)这一工程实践引入到代码生成中。

TDD-Agent 的运行过程是:先让模型生成可执行的测试,迫使它在动手写实现之前,先把“代码应该做什么”想清楚;然后利用测试的执行反馈,对生成的代码和测试进行迭代式的双轨优化——也就是说,代码和测试两条线同步改进。我们首先通过一个提示词变体 TDD-prompt,在 LiveCodeBench 基准上单独验证了“先测后码”的推理方式,发现它稳定优于基于推理的提示基线。在此基础上,我们在仓库级基准 RepoEval 上评估了完整的 TDD-Agent 框架,结果显示它一致地超越了基于检索和基于智能体的基线。

进一步分析表明,迭代优化不仅提升了代码的正确性,也提高了生成测试本身的质量——测试的通过率、覆盖率和变异得分(通过故意植入缺陷来检验测试用例能否发现问题的指标)都变得更高。这说明测试可以成为不断演化的推理工具,而不是一成不变的固定验证脚本。我们的源代码已公开:https://anonymous.4open.science/r/TDD-Agent-Framework-6370/。

图 2:TDD-Agent 的概览。(1)LLM 首先为目标函数设计并生成单元测试;(2)LLM 生成目标函数的完整实现,并通过执行与优化,迭代地同时改进测试和代码。

2.2 工具集

查看原文