TENET: Aproveitando Testes Além da Validação para Geração de Código
TENET: Leveraging Tests Beyond Validation for Code Generation
September 29, 2025
Autores: Yiran Hu, Nan Jiang, Shanchao Liang, Yi Wu, Lin Tan
cs.AI
Resumo
O Desenvolvimento Orientado por Testes (TDD) é uma prática amplamente adotada na engenharia de software que exige que os desenvolvedores criem e executem testes juntamente com a implementação do código, garantindo que o comportamento do software seja continuamente validado e refinado. Na era da codificação por intenção, onde os desenvolvedores delegam cada vez mais a escrita de código a modelos de linguagem de grande escala (LLMs) ao especificar intenções de alto nível, o TDD se torna ainda mais crucial, pois os casos de teste servem como especificações executáveis que definem e verificam explicitamente a funcionalidade pretendida, indo além do que descrições em linguagem natural e o contexto do código podem transmitir. Embora a codificação por intenção sob TDD seja promissora, existem três desafios principais: (1) selecionar um conjunto de testes pequeno, porém eficaz, para melhorar a precisão da geração e controlar a carga de execução; (2) recuperar contextos, como código relevante, de forma eficiente; e (3) usar sistematicamente o feedback dos testes para refinar o código de maneira eficaz. Para enfrentar esses desafios, apresentamos o TENET, um agente LLM para gerar funções em repositórios complexos do mundo real sob o cenário de TDD. O TENET possui três componentes: (1) um mecanismo inovador de conjunto de testes que seleciona um conjunto conciso de testes para maximizar a diversidade de cenários de uso alvo; (2) um conjunto de ferramentas personalizadas para o agente que realiza a recuperação eficiente de código relevante com depuração interativa; e (3) um fluxo de trabalho de refinamento baseado em reflexão que analisa iterativamente falhas, complementa o contexto e aplica refinamentos de código. O TENET alcança 69,08% e 81,77% de Pass@1 nos benchmarks RepoCod e RepoEval, superando os melhores baselines agentivos em 9,49 e 2,17 pontos percentuais, respectivamente. Além disso, este é o primeiro estudo sobre geração de código orientada por testes com contexto em nível de repositório, examinando como diferentes aspectos dos conjuntos de testes afetam o desempenho de agentes LLM sob o cenário de TDD.
English
Test-Driven Development (TDD) is a widely adopted software engineering
practice that requires developers to create and execute tests alongside code
implementation, ensuring that software behavior is continuously validated and
refined. In the era of vibe coding, where developers increasingly delegate code
writing to large language models (LLMs) by specifying high-level intentions,
TDD becomes even more crucial, as test cases serve as executable specifications
that explicitly define and verify intended functionality beyond what
natural-language descriptions and code context can convey. While vibe coding
under TDD is promising, there are three main challenges: (1) selecting a small
yet effective test suite to improve the generation accuracy and control the
execution workload, (2) retrieving context such as relevant code effectively,
and (3) systematically using test feedback for effective code refinement. To
address these challenges, we introduce TENET, an LLM agent for generating
functions in complex real-world repositories under the TDD setting. TENET
features three components: (1) a novel test harness mechanism that selects a
concise test suite to maximize diversity of target usage scenarios; (2) a
tailored agent toolset that performs efficient retrieval of relevant code with
interactive debugging; and (3) a reflection-based refinement workflow that
iteratively analyzes failures, replenishes context, and applies code
refinement. TENET achieves 69.08% and 81.77% Pass@1 on RepoCod and RepoEval
benchmarks, outperforming the best agentic baselines by 9.49 and 2.17
percentage points, respectively. In addition, this is the first study of
test-driven code generation with repository-level context, examining how
different aspects of test suites affect the performance of LLM agents under the
TDD setting.