Привет, на связи Маша Лещинская, Head of QA Surf. Обсудим, как эффективно проверять код, сгенерированный AI.
ИИ генерирует фичи за минуты: от 8 в день, и более 50 файлов. Это много, но чтобы проверить качество каждой, недостаточно прочитать код и увидеть зелёные тесты, нужна система.
Типичные ошибки ИИ, с которыми будем бороться:
⚫️ галлюцинации;
⚫️ пропуск пунктов задачи;
⚫️ некорректная реализация;
⚫️ «зелёные» автотесты, которые проверяют не то;
⚫️ неточное селф-ревью, пропускающее баги.
Решение — сквозной пайплайн из 4 шагов:
1) Финализируем требования.2) Сводим всё к единому формату проверок — общий язык для человека, агентов и автотестов (приемочные тесты + openspec).
3) Генерим автотесты и делаем трассировку (ID связывает требование, код и тест).
4) Прогоняем против ИИ-кода — матрица быстро покажет, что работает.
Главные вопросы и ответы:Зачем вообще нужны ручные тесты, если ИИ должен избавлять от ручной работы?
Ручные кейсы пишет агент, а не человек. Это человекочитаемый слой между требованием и автотестом: каждый кейс 1:1 превращается в e2e. Чем плотнее слой, тем меньше живого ручного теста. Это способ сократить ручную работу, а не раздуть её.
Количество тестов — цифра ни о чём. Как мерите пользу?
Важно не количество тестов, а их способность находить дефекты. Через фильтр quality-gate проходят только тесты, которые стабильно падают на реальных багах, имеют внятный ассерт, покрывают негатив/edge-cases и устойчивы к косметике UI. Силу базы оценивают мутационным тестированием, полностью игнорируя line-coverage, ведь покрытие строки не означает проверку результата.
Какой coverage?
Покрытие требований — 100% (от известных, поэтому рядом всегда поиск аномалий в графе + ревью ТЗ человеком). А автоматизация около 90% кейсов, часть осознанно остаётся на руках.
Кто ревьюит код?
Основное делают гейты: TDD RED/GREEN, self-review по 7 измерениям (агент с чистого контекста, не автор кода), ограничение diff по задаче, привязка к требованиям, финальный гейт (линтер + тесты + smoke + архитектура). Человек смотрит не код, а их выходы: отчёты, матрицу, логи.
Агент сам чинит правильный тест — как бороться?
Обязательное условие: перед правкой агент сверяет тест со спекой и отвечает, кто неправ — код, тест или спека неоднозначна. Ослаблять/удалять ассерты, скипать или мокать баг запрещено. Любая правка ассерта видна в diff и матрице, там подключается человек.
Выводы:
ИИ выполняет большую часть работы, а человек подключается только к ключевым задачам (ревью, спорные случаи). Это позволяет одному разработчику вести сразу несколько фич, сохраняя и скорость, и качество. Без такой системы гарантировать успех продукта на 100% уже невозможно. Метрики привела на картинке ниже.