ИИ написал тест. Он падает. Что делать?
Вы дали ИИ задачу. Он выдал красивый код. Вы запускаете — красный. Меняете промпт, добавляете больше контекста. Снова красный. На третьей итерации вы думаете: «Может, я сам быстрее напишу?».
Когда одного промпта не хватает
Промпт решает локальную задачу. «Напиши тест для эндпоинта». Он не знает, какие переменные окружения нужны вашему CI. Не понимает, как называются ваши фикстуры. Не догадывается, что у вас есть стандарты оформления.
Промпт работает, только если задача простая и контекст идеальный. Как только появляется неопределённость, ИИ начинает галлюцинировать.
Как я заставляю ИИ проверять себя
Я выстроил простую систему из пяти шагов.
Шаг 1. Формулирую цель. Не «напиши тест», а «напиши тест, который проходит в CI, использует наши фикстуры и проверяет три граничных случая». Цель должна быть измеримой. Без неё вы не поймёте, что получилось, а что нет.
Шаг 2. Задаю критерии качества. Чёткий чек-лист. Код компилируется. Тест зелёный локально. Покрывает позитивный и негативный сценарии. Не создаёт новые фикстуры. Каждый пункт — проверяемое условие.
Шаг 3. Пишу оценщик. Небольшой скрипт. Он прогоняет тест в изолированной среде. Если тест падает, оценщик достаёт лог и находит конкретную строку с ошибкой. Не просто «красный», а «строка 12, переменная не найдена».
Шаг 4. Запускаю петлю обратной связи. Модель получает текст ошибки. Переписывает проблемный кусок. Снова отправляет на прогон. Цикл повторяется, пока все критерии не выполнятся.
Шаг 5. Подтверждаю вручную. После зелёного прогона я смотрю на код. Принимаю решение. Если всё хорошо — мержу. Если нет — отдаю на доработку.
Кейс из практики
Я настраивал такой процесс для генерации тестов на FastAPI. Без оценщика модель постоянно забывала про переменные окружения. Я написал простой валидатор. Он проверял, есть ли в тесте импорт os.getenv(). Если нет — отдавал модели ошибку: «Добавь импорт». Через несколько итераций тесты перестали падать на CI.
Зеркало
Многие верят: «ИИ должен понимать с первого раза». На деле даже человеку нужен редактор. Сначала черновик, потом правка. ИИ — тот же черновик. Ему нужен редактор. Редактор здесь — ваша система проверки.
Главный вывод
Промпт открывает дверь. Но дорогу строят критерии и обратная связь. Чем больше контроля, тем надёжнее результат. Соберите простой конвейер: цель → критерии → оценщик → обратная связь → подтверждение. Один день настройки экономит недели ручных правок.
· 16.08
100% согласна. Еще добавлю, что если тесты типовые, то можно написать скилл, который сам будет запрашивать необходимую информацию. По типу: ссылка на тест-кейс, какие параметры проверяем. Таким образом, пользователь просто вводит данные по запросу, а скилл сам собирает промпт для автотеста
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 16.08
У вас на проекте ИИ не галлюцинирует со скилами? С коллегам сделали максимально возможную обвязку Harness - ИИ продолжает регулярно делать достаточно глупые ошибки)) теряет контекст и путается постоянно)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08
Если тесты шаблонные, по типу ui-проверки страниц, то справляется довольно хорошо. Но конечно за всем надо следить😅
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08
Не шаблонные, у нас очень много общения с продуктом через API и SSH, достаточно сложные способы реализации) пробую на практике eval пайплайн для обучения ИИ)) в нем заранее подготовленная документация по каждому этапу и указан критерий успеха достижения цели, получается так, что ИИ по ходу процесса будет проверять себя на ошибки и оценивать - достиг ли цели соответствует ли это критериям DOD для автотестов или нет) пока на низком старте, планирую рассказать об этом в следующем посте))
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08
Кусочек пайплайна, обвязка оч объемная, в нем указано все, спецификации, критерии оценки, паттерны проектирования + документация по продукту, получиться так: ИИ постоянно сверяться с документацией и спекой, + матрицей трассировки, и оценивает свой результат)) на скриншоте около 10% всего чем обвязали))) ИИшница при написании теста сначала читает требования, сверяется со спекой, потом пишет тест, видны и разделы из доки, куда ИИшница будет смотреть в случае ошибки покрытия)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 16.08
И чуть-чуть GOF паттернов) так сильно ещё никогда не заморачивался🤣
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён