ИИ написал тест. Он падает. Что делать?

Вы дали ИИ задачу. Он выдал красивый код. Вы запускаете — красный. Меняете промпт, добавляете больше контекста. Снова красный. На третьей итерации вы думаете: «Может, я сам быстрее напишу?».

Когда одного промпта не хватает

Промпт решает локальную задачу. «Напиши тест для эндпоинта». Он не знает, какие переменные окружения нужны вашему CI. Не понимает, как называются ваши фикстуры. Не догадывается, что у вас есть стандарты оформления.

Промпт работает, только если задача простая и контекст идеальный. Как только появляется неопределённость, ИИ начинает галлюцинировать.

Как я заставляю ИИ проверять себя

Я выстроил простую систему из пяти шагов.

Шаг 1. Формулирую цель. Не «напиши тест», а «напиши тест, который проходит в CI, использует наши фикстуры и проверяет три граничных случая». Цель должна быть измеримой. Без неё вы не поймёте, что получилось, а что нет.

Шаг 2. Задаю критерии качества. Чёткий чек-лист. Код компилируется. Тест зелёный локально. Покрывает позитивный и негативный сценарии. Не создаёт новые фикстуры. Каждый пункт — проверяемое условие.

Шаг 3. Пишу оценщик. Небольшой скрипт. Он прогоняет тест в изолированной среде. Если тест падает, оценщик достаёт лог и находит конкретную строку с ошибкой. Не просто «красный», а «строка 12, переменная не найдена».

Шаг 4. Запускаю петлю обратной связи. Модель получает текст ошибки. Переписывает проблемный кусок. Снова отправляет на прогон. Цикл повторяется, пока все критерии не выполнятся.

Шаг 5. Подтверждаю вручную. После зелёного прогона я смотрю на код. Принимаю решение. Если всё хорошо — мержу. Если нет — отдаю на доработку.

Кейс из практики

Я настраивал такой процесс для генерации тестов на FastAPI. Без оценщика модель постоянно забывала про переменные окружения. Я написал простой валидатор. Он проверял, есть ли в тесте импорт os.getenv(). Если нет — отдавал модели ошибку: «Добавь импорт». Через несколько итераций тесты перестали падать на CI.

Зеркало

Многие верят: «ИИ должен понимать с первого раза». На деле даже человеку нужен редактор. Сначала черновик, потом правка. ИИ — тот же черновик. Ему нужен редактор. Редактор здесь — ваша система проверки.

Главный вывод

Промпт открывает дверь. Но дорогу строят критерии и обратная связь. Чем больше контроля, тем надёжнее результат. Соберите простой конвейер: цель → критерии → оценщик → обратная связь → подтверждение. Один день настройки экономит недели ручных правок.

ИИ написал тест. Он падает. Что делать? | Сетка — социальная сеть от hh.ru