Генерация тест-кейсов нейросетями — на удивление неочевидная задача. Уже давно было понятно, что нельзя просто закинуть юз-кейс в чат-бот без обвязки. Баги всегда прячутся в деталях, и чтобы их отловить, нужен контекст. А чтобы дать модели контекст, нужны интеграции.
За последние годы возможности моделей по интеграции с повседневными инструментами выросли неимоверно. Сейчас крупные компании всерьёз автоматизируют ручные процессы в тестировании:
думают о том, как систематизировать стихийно используемые инструменты;
выстраивают сложные процессы работы с контекстом;
интегрируют ИИ-агентов в единый конвейер от требований до тест-кейсов.
В этой статье я хочу разобраться, какие технические возможности даёт современная оснастка для нейросетей при генерации тест-кейсов — а в следующей попробую разобраться, чего она пока сделать не может и на какие подводные камни можно натолкнуться.
Я буду работать с популярным инструментом n8n и соберу агента, который свяжет чат в Пачке, страницы с требованиями в Яндекс Вики и нейросеть, чтобы писать тест-кейсы.
1. Коротко о n8n
N8n — это конструктор для агентов, который позволяет связывать нейросетевые модели с кодом, таск-трекерами, CI-системами и прочей инфраструктурой. За каждое действие отвечает отдельная нода, а из нод можно собирать агентов, как из Лего:

Исходный код n8n открыт, и все могут писать собственные ноду. Агенты в n8n называются «воркфлоу», и их можно экспортировать в формате JSON. Запускаются воркфлоу одним из двух способов:
в облаке n8n — тогда нужно платить за хостинг и за каждый запуск;
на своей инфраструктуре — это бесплатно.
В n8n сейчас уже больше 2600 интеграций с самыми разными инструментами — и это позволяет собирать агентов под практически любой стек. Вот отличные примеры:
Можно написать инструмент, который будет генерировать тест-кейсы по тикетам из Jira и документации в GitHub, для которой настроен автоматизированный поиск через Pinecone.
Можно сделать воркфлоу для мессенджера, который будет обходить тред и собирать всё нужное для требований.
Можно собрать систему, которая будет собирать в одном пространстве данные из пяти разных источников данных и помогать принимать решения по ним.
Я разберу более простой кейс, но покажу процесс подробно. Сценарий такой: нужно сгенерировать тест-кейс, для которого есть требование в Яндекс Вики и юз-кейс в чате Пачки. Задача: дать модели доступ к этим источникам. С чего начать?
2. Новый воркфлоу
Вначале регистрируюсь на сайте n8n. Выбираю пробный период в облаке — о своей инфраструктуре подумаю потом. Создаю новый воркфлоу — пока в своём личном пространстве, потом можно будет создать отдельный проект:

После этого открывается холст, на который можно добавлять ноды и связывать их друг с другом.
У каждого воркфлоу должен быть триггер: специальная нода, которая запускает выполнение. Я хочу, чтобы мой воркфлоу запускался по событиям из чатов Пачки:

Но чтобы этот триггер заработал, мне нужно настроить интеграцию с Пачкой.
3. Интеграция n8n с Пачкой
Чтобы ноды n8n могли отправлять и получать сообщения из Пачки, нужно настроить бота и канал в этом мессенджере.
На панели слева я кликаю Интеграции > Боты > Создать бота:

Ввожу имя и ник, дальше включаю Исходящий вебхук бота, чтобы его можно было слушать на стороне n8n:

Настраиваю вебхук:

Игнорировать свои сообщения — это нужно, чтобы бот не дёргал сам себя.
Любые сообщения — чтобы бот слушал всё, что пишут в чате.
Нажатие кнопок — нужно конкретно для моего воркфлоу.
Дальше нужно настроить токен, по которому n8n будет распознавать бота. В меню редактирования бота иду в API и щёлкаю Создать токен:

Копирую токен себе — система его больше не покажет. Затем настраиваю права:
messages:read
messages:create
threads:read (чтобы бот мог читать и создавать комментарии)
threads:create
views:write (через форму пользователь будет передавать URL требования)
Чтобы связать бота с n8n, понадобятся:
URL, который n8n будет слушать
ключ подписи
Их можно найти на вкладке Исходящий вебхук:

Дальше я создаю чат, в котором буду общаться с ботом:

Добавляю бота в чат:

Настройка триггера в n8n
Теперь можно вернуться в n8n. Открываю уже созданную ноду триггера и первым делом указываю там только что скопированный URL:

Дальше жму Connect to Pachca и ввожу только что созданный токен и ключ подписи:

К сожалению, протестировать триггер кнопкой Execute внизу холста не получится: при таком выполнении он будет слушать не тот URL, который я ему передал, а другой, тестовый. Поэтому нужно либо настроить отдельного тестового бота в Пачке, либо опубликовать воркфлоу:

Триггеры в опубликованном воркфлоу всегда ловят события, дополнительно их запускать не надо. Теперь я могу отправить сообщение в настроенном чате, вернуться в n8n и на вкладке Executions в проекте увидеть, что появилось новое выполнение:

Итак, связь с Пачкой заработала. Второй элемент моей инфраструктуры — Яндекс Вики.
4. Интеграция n8n с Яндекс Вики
Официальной ноды для Яндекс Вики в n8n нет, но связь с Yandex MCP всё равно настроить можно. Для этого потребуются две вещи: токен и идентификатор организации.
Токен
Чтобы внешние системы получили доступ к ресурсам Яндекса, нужно настроить приложение в Яндекс OAuth.
Щёлкаю +Создать.
Выбираю тип Для доступа к API или отладки.
Ввожу любое название.
Указываю почту для авторизации.
В поле Доступ к данным добавляю нужные доступы: мне потребуется только wiki:read.
Жму Создать приложение внизу страницы.
Приложение создано, теперь мне понадобится его ClientID:

С его помощью нужно сгенерировать токен. Для этого я копирую в адресную строку браузера следующую ссылку:
https://oauth.yandex.ru/authorize?response_type=token&client_id=ВАШ_CLIENT_ID
В ней ВАШ_CLIENT_ID заменяю на значение, скопированное из приложения, и перехожу по ссылке. Прохожу авторизацию, генерирую токен и сохраняю его.
Идентификатор организации
Его можно найти в Яндекс Трекере на странице Администрирование → Организации, в поле Идентификатор.
Для «Яндекс 360 для бизнеса» идентификатор называется X-Org-ID
Для «Yandex Cloud Organization» — X-Cloud-Org-ID
Если страница недоступна, нужно попросить ID у администратора организации.
Настройка доступа в n8n
В n8n все учётные данные хранятся отдельно от воркфлоу в разделе Credentials проекта или личного пространства. Перехожу туда и щёлкаю Create credential:

Выбираю тип Multiple Headers Auth и создаю два заголовка:
Authorization: в значение вставляю токен.
X-Org-ID или X-Cloud-Org-ID: в значение вставляю идентификатор.

Нода Яндекс Вики в воркфлоу
Обращаться к вики из воркфлоу можно разными способами:
можно обратиться напрямую, строго указывая, что нужно от ресурса;
можно передать ИИ-модели доступ к вики как MCP-инструмент.
Это делают соответственно ноды MCP Client и MCP Client AI Tool. У первой квадратная плашка, и она самостоятельная, у второй — круглая, и её можно использовать, только подключая к ноде модели:

Я попробую запросить страницу из вики напрямую, т. е. через квадратную ноду, по ID. Настройки будут такие:
Server Transport: HTTP Streamable
MCP Endpoint URL: https://mcp.wiki.yandex.net
Authentication: Multiple Headers Auth
Credential: учётные данные, которые я до этого создал для ресурсов Яндекса
Tool: From list > GetPageById
Page Id: ID нужной страницы

Получить ID страницы можно только через API вики. Делаю это командой:
curl -s "https://api.wiki.yandex.net/v1/pages?slug=СЛАГ_СТРАНИЦЫ" -H "Authorization: OAuth ТОКЕН" -H "X-Cloud-Org-ID: ИДЕНТИФИКАТОР"
Здесь нужно заменить:
ТОКЕН на токен, созданный приложением Яндекса
ИДЕНТИФИКАТОР на идентификатор организации
при необходимости —
X-Cloud-Org-IDнаX-Org-IDСЛАГ_СТРАНИЦЫ на слаг — например, для страницы
https://wiki.yandex.ru/users/username/demoслаг будетusers/username/demo
5. Сборка воркфлоу
Основные ноды заработали, теперь из них можно собрать рабочий процесс. Правила здесь такие:
Каждая нода, отработав, передаёт свой вывод следующим нодам через JSON.
Получить доступ к выводу предшествующей ноды можно через
$json.имя_переменной.Узнать имена переменных, которые возвращает нода, можно, выполнив воркфлоу (неважно, успешно или нет) и открыв выполнение во вкладке Executions проекта. Там в каждой ноде прописаны её переменные:

Выполнение можно как угодно ветвить и делать с данными всё, что придёт на ум.
Я решил написать воркфлоу с такой логикой:
Агент ждёт юз-кейс от пользователя в чате Пачки
Агент через форму запрашивает URL страницы с требованием комментарием к сообщению с юз-кейсом
Агент передаёт юз-кейс и требование модели
Агент возвращает ответ модели в тред юз-кейса
Выглядит этот воркфлоу так:

В JSON его можно скачать с моего Гитхаба. Публикую, отправляю юз-кейс в чате Пачки и в итоге получаю тест-кейс:

6. Что дальше: подводные камни
Казалось бы, какой бы ни был стек у организации, с n8n можно собрать воркфлоу под любые нужды за несколько вечеров — или за несколько часов с нейросетью.
Но, как обычно, всё не так просто. Каким бы гибким ни был инструмент, он не достанет требования для тест-кейсов, если они живут только в голове у заказчика, не избавит от галлюцинаций и необходимости ручных проверок. В этих подводных камнях я постараюсь разобраться в следующей статье.

Комментарии 0