ChatPaper.aiChatPaper

TENET: Использование тестов за пределами валидации для генерации кода

TENET: Leveraging Tests Beyond Validation for Code Generation

September 29, 2025
Авторы: Yiran Hu, Nan Jiang, Shanchao Liang, Yi Wu, Lin Tan
cs.AI

Аннотация

Разработка через тестирование (Test-Driven Development, TDD) — это широко применяемая практика в разработке программного обеспечения, которая требует от разработчиков создания и выполнения тестов параллельно с реализацией кода, обеспечивая непрерывную проверку и уточнение поведения программного обеспечения. В эпоху "виб-кодинга", где разработчики всё чаще делегируют написание кода большим языковым моделям (LLM), задавая высокоуровневые намерения, TDD становится ещё более важной, поскольку тестовые случаи служат исполняемыми спецификациями, которые явно определяют и проверяют целевую функциональность, выходящую за рамки того, что могут передать описания на естественном языке и контекст кода. Хотя виб-кодинг в рамках TDD перспективен, существует три основные проблемы: (1) выбор небольшого, но эффективного набора тестов для повышения точности генерации и контроля нагрузки на выполнение, (2) эффективное извлечение контекста, такого как релевантный код, и (3) систематическое использование обратной связи от тестов для эффективного уточнения кода. Для решения этих проблем мы представляем TENET — LLM-агент для генерации функций в сложных реальных репозиториях в условиях TDD. TENET включает три компонента: (1) новый механизм тестового окружения, который выбирает лаконичный набор тестов для максимизации разнообразия целевых сценариев использования; (2) специализированный набор инструментов агента, который выполняет эффективное извлечение релевантного кода с интерактивной отладкой; и (3) рабочий процесс уточнения на основе рефлексии, который итеративно анализирует ошибки, восполняет контекст и применяет уточнение кода. TENET достигает 69,08% и 81,77% Pass@1 на бенчмарках RepoCod и RepoEval, превосходя лучшие агентные базовые модели на 9,49 и 2,17 процентных пункта соответственно. Кроме того, это первое исследование генерации кода через тестирование с контекстом на уровне репозитория, изучающее, как различные аспекты наборов тестов влияют на производительность LLM-агентов в условиях 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.
PDF22September 30, 2025