Привет, Хабр. Меня зовут Егор, я QA Fullstack Java в SENSE на проекте российского банка.
Год назад я был уверен, что ИИ-агент в QA — это либо маркетинг, либо повод искать новую профессию. Сегодня он у меня в проекте разбирает упавшие тесты, актуализирует локаторы и пишет шаблонные кейсы по спецификациям. Расскажу, как мы прошли путь от «он не справляется с добавлением поля в класс» до 1600 рабочих тестов за сутки на хакатоне. А еще расскажу, что в итоге агент так и не научился делать.
Первые шаги и первые разочарования
В рамках корпоративного проекта мне предложили изучить возможности ИИ-агента и понять, можно ли его встроить в процессы тестирования. Подход был спокойный: не «внедряем сверху», а «посмотрите и обоснуйте». Если бы не сработало, то отказались без вопросов.
Ключевые требования к агенту были такие:
соответствие строгим требованиям безопасности энтерпрайз-разработки;
способность изучать проект и обучаться на его основе;
разумное потребление ресурсов (серверы у нас не резиновые особенно РОСА).
Первые версии разочаровали. Агент не справлялся с элементарным. Например, не мог корректно добавить поле в класс. На этом этапе мой скепсис только укрепился: я не верил, что инструмент может оказаться полезным хоть для чего-то.

Поворотный момент: работа «коллективным разумом»
Разработчики понимали, что они не погружены во все нюансы «QA-кухни». Поэтому нам, тестировщикам из фокус-группы, дали возможность самим настраивать агент: добавлять промты, корректировать существующие, подгружать документацию.
В следующие месяцы мы постепенно «обучали» агента, загружая релевантную для наших повседневных задач документацию:
по Selenium (автоматизация веб‑тестов);
по PlaywrightCLI для анализа DOM-дерева;
документацию по Gradle (да, да, у нас GRADLE);
внутренние гайды и стандарты тестирования, принятые в банке.
Параллельно дописывали функционал: агент стал подключаться к проекту через консоль и анализировать код напрямую — то есть наконец увидел реальную структуру, а не работал в отрыве от контекста.
Готовый промпт по анализу Allure отчётов оставил здесь. Надеюсь, будет полезно.
Тут вылезла новая проблема — нехватка ресурсов. Агент тормозил, терял соединение с сервером и кричал нам: «Эй, ребята, мне нужно больше памяти, или я сейчас усну!».

Команда уменьшила размер контекста, ограничила глубину анализа и добавила кэширование промежуточных результатов. После этого агент перестал «засыпать» и начал отвечать стабильно.
Первый успех: хакатон по вайб-кодингу
Перелом случился на хакатоне по вайб-кодингу в апреле 2026 года. За сутки нужно было с нуля собрать полноценное клиент-серверное приложение и добиться покрытия кода тестами не менее 80%.
Агент работал в режиме нон-стоп и по мере появления кода:
анализировал коммиты и сразу строил тестовые сценарии;
писал готовые юнит-тесты (JUnit), интеграционные проверки и тесты API, которые сразу можно было добавить в пайплайн;
мониторил покрытие кода (с использованием JaCoCo для Java) и показывал непокрытые участки;
запускал тесты локально и сразу отдавал отчёт где упал тест или покрытие было недостаточным;
отлаживал упавшие тесты и актуализировал существующие под изменённую логику.
В итоге, за 24 часа мы получили:
полноценное приложение с фронтендом, бэкенд и API;
около 1600 тестов, включая модульные тесты для бэкенда (JUnit/TestNG), UI-тесты для фронтенда (Selenium), интеграционные сценарии (проверка взаимодействия микросервисов);
покрытие кода более 85% и перевыполненный план.

Тогда я впервые подумал: «А может не все так плохо с ИИ-агентами?» Особенно, когда все написанные им тесты успешно выполнялись.
Внедрение в боевой проект автотестов
Хакатон — это зелёное поле. С существующим проектом автотестов, который развивается несколько лет, всё сложнее. Я начал погружать агента постепенно. Этапы внедрения:
Разбор упавших тестов. Агент анализировал логи и предлагал правки, например, корректировал устаревшие локаторы в Selenide.
Генерация тестов по спецификациям. Я давал агенту спеку новой функциональности, а он описывал тест‑кейсы в формате Gherkin (для Cucumber) или готовил структуру для JUnit.
Анализ отчётов. Агент разбирал Allure-отчёты, находил повторяющиеся паттерны падений и предлагал решения — например, добавлял retry-логику для нестабильных тестов.
Архитектурные задачи. Я попробовал дать более сложные задачи:
настроить Retry и Rerun для падающих тестов в Cucumber;
оптимизировать запросы Hibernate, настроить ленивую загрузку и кэширование.
Здесь агент показал свои ограничения — с подобными задачами он не справился. До тестировщика уровня senior агенту пока далеко.
Что в итоге
Плюсы
Агент уверенно закрывает рутину. Есть три категории задач, на которых он реально окупается:
Написание шаблонных тест-кейсов. Неважно, тестируете вы монолитную систему или крошечный микросервис, — он одинаково бодро генерирует базовые сценарии.
Актуализация тестов при изменениях в UI (например, обновление Page Object Model). Работает не только для интегрированных систем, но и для небольших веб-приложений, мобильных клиентов или даже десктопных утилит. Для использования нужна утилита PlaywrightCLI.
Анализ результатов прогона (сбор метрик, генерация отчётов). 10 тестов у вас или 10 000 — обработает всё с одинаковой невозмутимостью.
Когда у вас 2000+ интеграционных тестов и тестовые данные меняются ежедневно(глубоко интегрированная система) из-за работы соседних команд, это критично.
Он экономит время и на простых сценариях:
генерирует кейсы на основе спек — даже для небольшого внутреннего инструмента, который вы пишете для коллег;
отлаживает тесты до рабочего состояния — например, правит пару assert-ов в юнит-тесте;
анализирует DOM-дерево и автоматически обновляет локаторы — хоть для большого банковского портала, хоть для маленького лендинга.
Минусы
Сложные задачи не вытягивает — оптимизация фреймворка, распараллеливание тестов, рефакторинг архитектуры остаются за человеком.
Требует контроля. Может «решить», что класс стоит переименовать, — и тогда падает половина проекта. Может починить один баг и принести два новых.
Привносит риск не узнать свой код, если дать агенту слишком много свободы...

Отсутствие креатива. Тестирование —это поиск неочевидных багов. Агент пишет кейсы по шаблонам, но пропускает уникальные сценарии (например, edge cases при высокой нагрузке или странные комбинации действий пользователя). Он не догадается проверить, что будет, если нажать на все кнопки одновременно или ввести в поле «возраст» строку «мне 999 лет».
Не несёт ответственности. ИИ не пойдёт к тимлиду с фразой «я тут накосячил, давайте исправим». За результат всё равно отвечает человек.
Вывод
Через полгода работы с агентом моя позиция выглядит так: ИИ-агент не заменяет QA, но снимает с него рутину и освобождает время на более сложные задачи. Вы перестаёте быть «человеком‑тестировщиком» и становитесь «человеком‑стратегом», который использует ИИ как инструмент, точно так же Java, Junit, Selenide и другие.
Если бы я давал совет коллеге, который сейчас на той же стадии скепсиса, что и я полгода назад, он был бы такой: не пытайтесь дать агенту сразу архитектурную задачу — он сломается, и вы разочаруетесь. Начните с более простых задач, а дальше — расширяйте по мере доверия.
Комментарии (9)

Sap_ru
10.06.2026 14:27А вы смотрели, что за тесты он там написал? Они же все болеют тем, что пишут тесты ради тестов: тесты, которые не могут упасть, тесты, которые тестируют среду для тестирования, тесты, которые тестируют только очевидные случаи и т.п.?
Количество тестов и процент покрытия в случае ИИ совершенно ничего не говорит в общем случае.
Egor1301 Автор
10.06.2026 14:27В контексте хакатона ограничения по времени и сама суть формата не предполагают вылизывания тестов — там важна скорость проверки гипотезы. В реальной же практике слепое доверие ИИ, конечно, неприменимо: это создает огромные бизнес-риски. Инструмент не несет ответственности за результат, поэтому контроль и понимание кода человеком обязательны.
ИИ агенты сегодня — это мощный инструмент для ускорения рутины, а не замена инженеру. Его нужно применять как инструмент(ассистента) отдавать ему генерацию базовых тестов(скармливая небольшими задачами), но архитектуру, сложные, уникальные кейсы и финальное ревью всегда оставлять за человеком. При таком подходе и скорость растет, и качество не страдает, давая больше времени например на исследовательское тестирование и прочие более интересные задачи.:)

saap
10.06.2026 14:27Правильно сказано, подходит для написания шаблоных тестов. Но при этом не говорится, что документация с требованиями должна быть вылизана до неузнаваемости!!! А еще фикс ошибок, в авторские или дает человеку посмотреть? Может там баги, а он фиксит и ломает логику? А еще я бы посмотрел на селекторы которые он пишет.... не конские ли, нормальные?

Egor1301 Автор
10.06.2026 14:27В жизни это выглядит как: вбил запрос(фикс багов, изменение локаторов и пр.) он смотрит и предлагает решение, человек смотрит решение и если устраивает то применяешь изменения. Только так.:)
Если не устраивает, отправляешь на коррекцию. Никаких вольностей. :)

AnotherAnkor
10.06.2026 14:27Я что-то упустил пока читал, или здесь ни слова про бизнес требования?

Egor1301 Автор
10.06.2026 14:27Эта статья скорее не про процессы и бизнес, а про сделать жизнь QA немного проще.
Как встраиваем агента в наши процессы, работаем с бизнес-требованиями и прочее, выйдет отдельный материал, позже.:)
Ra2007
Узнал историю: тот же паттерн, агент не справляется на старте, потом находишь ключ. У нас в JS-проекте переломным стало не добавление документации фреймворков, а примеры из нашего кода с пометкой «так делаем» и «так не делаем». Агент начал воспроизводить наши паттерны, а не книжные. Ограничения с архитектурными задачами тоже знакомы: не справляется там где нужно удерживать контекст 10+ файлов одновременно.
Egor1301 Автор
А какую модель используете если не секрет? Нам пришлось сначала скармливать документацию фреймворков, так как изолирована модель в контуре, а после доучивать примерами из кода(примерно как вы и написали), плюс дали ему возможность погулять и изучить проект. Что-то получилось что-то нет, если у него не получается, он начинает галлюцинировать довольно жестко, чаще всего замыкаясь в цикле либо меняя контекст...
На счет контекста, да, поставили жесткое ограничение иначе он как я писал выше уходил в себя)
У нас кстати базовая модель GLM 5.1
Ra2007
У нас Claude Code, но для изолированного контура не подходит. В вашем сценарии смотрел бы на DeepSeek V3 или Qwen2.5-Coder-32B: оба сильные в коде, запускаются локально, по цене на порядок ниже. Галлюцинационные циклы лечим делением задачи на подзадачи и жёстким лимитом на размер контекста, совпадает с вашим опытом.