Привязка тестов к спецификации повышает эффективность LLM-кода на 38%
Исследователи из arXiv выяснили, что ключевой фактор улучшения качества кода, сгенерированного большими языковыми моделями (LLM), — не просто наличие тестов, а их привязка к спецификации программы. Это открытие меняет подход к автономному тестированию и исправлению ошибок, показывая, что формальные

Исследователи из arXiv выяснили, что ключевой фактор улучшения качества кода, сгенерированного большими языковыми моделями (LLM), — не просто наличие тестов, а их привязка к спецификации программы. Это открытие меняет подход к автономному тестированию и исправлению ошибок, показывая, что формальные требования играют решающую роль.
LLM часто генерируют код, который работает на типичных входных данных, но даёт сбой на граничных случаях, некорректных входах и других условиях, определённых спецификацией. Распространённый подход — заставить модель писать собственные тесты и исправлять код до их прохождения. Однако до сих пор было неясно, что именно даёт прирост: наличие тестов как таковых или их соответствие спецификации. Это исследование впервые изолирует этот фактор.
Как проводился эксперимент
Эксперимент проводился при фиксированном тестере, бюджете тестов и цикле исправлений. Единственное изменение — одна строка промпта, которая даёт тестеру спецификацию в виде списка правил. Базовая линия уже была сильной: модель получала указание проверять некорректные входы и граничные случаи. Результаты показали, что привязка к спецификации повышает долю корректного кода на 38 процентных пунктов по сравнению с базовой линией на трёх версиях Claude (Haiku 4.5, Sonnet 4.6, Opus 4.8) и на 36 пунктов на отдельном наборе задач.
Удвоение бюджета тестов почти не помогает, а объединение восьми независимых наборов тестов без спецификации даёт плато, значительно уступающее привязке. Абляционный эксперимент показал, что важен именно контент спецификации, а не формат: при передаче спецификации в виде простого абзаца тестер обнаруживает 27 из 30 багов, а если попросить спланировать тесты без спецификации — только 2 из 30. Эффект сохраняется при усилении базовых линий: генератор на основе свойств находит 28 из 30 багов, но выдумывает несуществующие требования, а цикл в стиле AlphaCodium лишь сравнивается с базовой линией.
Почему привязка к спецификации даёт такой сильный эффект?
Привязка улучшает как чувствительность (обнаруживает больше реальных багов), так и точность (реже ошибочно отвергает корректный код), снижая уровень ложных тревог с 33% (68% при оракуле стандартной библиотеки Python) до 0%. На хорошо специфицированных алгоритмических задачах эффект отсутствует, что подтверждает: привязка критична именно для задач с чёткими требованиями.
Кого затронет это исследование
Разработчиков, использующих LLM для генерации кода, исследователей в области автоматического тестирования и инженеров, внедряющих пайплайны автономного исправления ошибок. Результаты воспроизводятся на других моделях (GPT-5.3-codex +28, Gemini 3.5 Flash +19) и статистически значимы (p=0.002).
Что пока неизвестно
Исследование не рассматривает влияние привязки на очень большие проекты с неполными или неформальными спецификациями. Также не изучено, как эффект зависит от качества самой спецификации. Тем не менее, работа даёт чёткое практическое указание: при автоматическом тестировании кода LLM следует явно передавать спецификацию, а не полагаться на общие инструкции.