🤖 Мультиагентная QA-система на Claude Code: как мы автоматизировали тестирование (2/3) #qa #ai #head
Продолжаем серию постов. Первая часть: *2️⃣ Агентские инструкции — markdown-файлы Каждый агент получает детальную инструкцию из своего .md файла. Это не «подсказка» — это полная спецификация поведения.
Хороший агентский файл содержит: • Алгоритм работы — пронумерованные шаги от старта до финиша • Формат ввода/вывода — какие файлы читать, какие создавать • Правила автономности — что делать без вопросов, когда останавливаться • Обработка ошибок — что делать при 404, 500, таймаутах • Примеры — конкретные команды, шаблоны файлов
Чем детальнее инструкция, тем автономнее агент. Не полагайтесь на «здравый смысл» LLM — описывайте поведение явно. Иначе агент будет творить дичь с чистой совестью.
3️⃣ Файловый обмен между агентами Агенты работают в разных контекстах и не видят друг друга напрямую. Коммуникация — через файловую систему, общую папку сессии:
.claude/test-sessions/2026-03-11_feature-name/ • manager-plan.md — план менеджера • task-api.md — задача для API Tester • task-web.md — задача для Web Tester • task-automator.md — задача для QA Automator • discoveries.md — обмен находками в реальном времени • result-api.md — результаты API тестирования • result-web.md — результаты UI тестирования • result-automator.md — результаты автоматизации • agent-api-completed — флаг: API Tester закончил • agent-web-completed — флаг: Web Tester закончил • report.md — финальный отчёт
Файлы-задачи (task-.md) создаёт менеджер. Файлы-результаты (result-.md) создают исполнители. Менеджер их читает и формирует финальный отчёт.
По сути, файловая система — это шина данных между агентами. Markdown — формат контрактов. Просто и надёжно.
4️⃣ Параллельность и синхронизация Web Tester и API Tester работают одновременно. Это не псевдо-параллельность — они буквально запускаются в одном сообщении: Web Tester в фоне (run_in_background), API Tester в основном потоке.
Но параллельность создаёт проблему: что если один агент заблокирован, а другой нашёл ответ?
Решение — файл discoveries.md. Каждый агент периодически его читает и дописывает свои находки:
Например: 🌐 Web Tester пишет: «Фронт ходит на /api/v2/endpoint, а не на /api/v1/endpoint» 🔌 API Tester читает, переключается на v2, и пишет в ответ: «Endpoint требует заголовок X-Custom-Header, проверь фронт»
Если агент заблокирован (404, 403) — он входит в режим ожидания и каждую минуту проверяет discoveries на новую инфу от параллельного агента. Флаги завершения (agent-*-completed) — пустые файлы. Заблокированный агент видит флаг и понимает, что ждать больше нечего.
5️⃣ Конвейер: API Tester → QA Automator После ручного тестирования API Tester создаёт задачу на автоматизацию с проверенными endpoints, примерами запросов/ответов и главным бизнес-сценарием.
QA Automator получает задачу и: • Пишет тестовый метод в существующий класс • Компилирует и запускает • Если падает — исправляет (до 5 попыток) • После успеха — маркирует @Disabled("WIP")
Ключевой принцип: автотест пишется на основе реального ручного прогона, а не на основе документации. Автоматор знает, что endpoint точно работает и какой ответ ожидать. Никаких «ну я подумал что там должен быть 200».
Продолжение следует Лайк-шер-подписка @readyfortesting
В этом посте были ссылки, но мы их удалили по правилам Сетки*