Всем привет! Я один из лидеров стека тестирования в компании ТехВилл. Продолжаем разговор про то, как применять AI в работе так, чтобы он реально экономил времяВсем привет! Я один из лидеров стека тестирования в компании ТехВилл. Продолжаем разговор про то, как применять AI в работе так, чтобы он реально экономил время

Перенос тест-кейсов из Яндекс Трекера в Allure TestOps одной командой с Cursor + MCP

2026/03/03 15:25
8м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу crypto.news@mexc.com
c4bf8f051c69daf2d89ec98ec06a0f92.png

Всем привет! Я один из лидеров стека тестирования в компании ТехВилл. Продолжаем разговор про то, как применять AI в работе так, чтобы он реально экономил время. В прошлой статье я рассказывал, как мы внедряем AI-ревью ручных тест-кейсов. А сегодня --ещё один не самый типичный кейс для Cursor: перенос тест-кейсов из Яндекс Трекера в Allure TestOps буквально одной командой.

(Ну и не могу не поделиться ссылочкой на свой уютный телеграм канальчик , который из QA,QA Auto канала постепенно превращается в канал про AI и Вайбкодинг)

Проблема: тест-кейсы живут в ЯТ, а должны жить в TestOps

Исторически так сложилось, что одна большая команда вела все свои тест-кейсы и чек-листы в Яндекс Трекере. А дальше случилось неизбежное: появилась потребность перевести всё в Allure TestOps, потому что:

  • Это «правильно» (единая TMS),

  • это «модно-молодёжно» (аналитика, связи, артефакты),

  • можно нормально связать с автотестами и CI/CD,

  • и главное — вся остальная компания уже живёт в TestOps, или почти вся.

Но был нюанс: старых кейсов и чек-листов накопилось много. Переносить руками — это очень много рутинной работы для QA, которую никак не хотелось заставлять их делать. Поэтому идея была такая: перенести всё быстро, без ручной копипасты, при помощи ИИ.

План: Cursor + два MCP + пара промптов

План выглядел подозрительно простым:

  1. Берём Cursor

  2. Подключаем MCP Яндекс Трекера

  3. Подключаем MCP Allure TestOps

  4. Пишем project rule, который:

    а) берёт таблицу “Тестирование” из описания задачи в ЯТ,

    б) превращает её в структуру “заголовок + шаги”,

    в) добавляет ссылки на исходную задачу и связанные задачи

  5. Запускаем это одной командой.

Сказано — сделано.

Как устроены исходные данные в ЯТ

В задаче Яндекс Трекера тест-кейсы/чек-листы хранились в таблице (в секции «Тестирование») примерно в таком формате:

  • колонка «Критерий приёмки»,

  • колонка «Тест»,

  • остальные колонки (итог, результат, комментарии и т.п.) — есть, но нам не нужны для переноса.

Мы договорились о простом маппинге:

  • «Критерий приёмки» → заголовок тест-кейса в TestOps,

  • «Тест» → шаги сценария в TestOps,

89ab208de7a89a2dc2e4f55f1e0672dc.png

Project rule: парсим ЯТ и готовим JSON под TestOps

Дальше я сделал project rule, в котором описал, как именно нужно распарсить таблицу и в каком JSON формате вернуть результат.

Файл назвал get-check-list-rule и он выглядит примерно так:

Ты — ассистент QA Automation/аналитика тестов. Твоя задача: из задачи Яндекс Трекера по ключу {ISSUE_KEY} извлечь из description раздел «Тестирование» (таблица) и подготовить структурированные данные для переноса в Allure TestOps.

Вход

{ISSUE_KEY} — ключ задачи (например, LKP-3260).

Что нужно сделать

Получи задачу через API/инструмент issue_get с include_description=true.

Получи связанные задачи через API/инструмент issue_get_links.

В поле description найди блок раздела «Тестирование». Он начинается строкой — Тестирование и содержит таблицу в формате:

начало таблицы: строка #|

затем строки || и заголовки колонок

таблица заканчивается строкой |#

Распарси таблицу и извлеки все строки тестов:

Колонки: «Критерий приемки», «Тест».

Все остальные колонки и их значения (например: «Итог приемки», «Результат», «Комментарий») — ПОЛНОСТЬЮ игнорируй и НИКУДА не переноси (не в заголовки, не в шаги, не в ссылки).

Учитывай, что в таблице могут быть объединённые ячейки (визуально merged):

Если в строке колонка «Критерий приемки» пустая, используй последнее непустое значение выше (наследование значения).

Аналогично можно сделать для других колонок при необходимости (обычно достаточно только для «Критерий приемки»).

Сгруппируй результаты по критерию приемки:

Для каждого критерия создай структуру:

title: текст критерия (это будет заголовок тест‑кейса в TestOps) БЕЗ ведущей нумерации (например, «Обновление признака is_extremal в ЛК»). Если критерий содержит префикс 1., 1), 1\. и тому подобное — убери его.

Нормализуй текст критерия так же, как шаги: plain text без разметки (markdown/HTML), без лишних пробелов/пустых строк. Если в критерии несколько строк — склей в одну строку через пробел.

steps: список шагов из колонки «Тест» для всех строк, относящихся к этому критерию.

Нормализуй шаги:

Убирай лишние пробелы, повторяющиеся пустые строки.

Переноси шаги в Allure TestOps БЕЗ разметки: итоговые строки steps[] должны быть plain text (никаких HTML‑тегов и markdown‑разметки).

Требования к преобразованию «Тест» → plain text:

— Удали/раскрой markdown‑форматирование: жирный, *курсив*, заголовки #, quote >, inline‑код/backticks, fenced code blocks — оставь только текст.

— Ссылки markdown вида [текст](url) преобразуй в текст (url) или просто url, если текста нет.

— Списки (-, *, нумерованные) преобразуй в многострочный plain text, сохранив порядок, но без маркеров/номеров.

Важно: если в колонке «Тест» встречаются фрагменты, относящиеся к другим колонкам (PASS/FAIL/BLOCK, чекбоксы, комментарии, ссылки вида screen/log/скрин из «Комментарий») — их НЕ переносить. Переноси только то, что реально описывает шаги сценария.

Удаляй явную нумерацию из начала строк шага, если она есть (например, 1. ..., 2) ..., a) ...) — в steps[] должны быть шаги без номеров.

Важно: НЕ добавляй в шаги/описание строку вида «Источник: {ISSUE_KEY}...».

Ссылки на задачи нужно добавлять в Allure TestOps в раздел «Ссылки» (External links), а не переносить текстом в описание.

Важно про связанные задачи:

— В Allure TestOps в разделе «Ссылки» нужно добавить ссылку на исходную задачу {ISSUE_KEY}, а также ссылки на все связанные с ней задачи из issue_get_links.

— Порядок ключей обязателен: первым всегда {ISSUE_KEY} (задача‑источник, откуда переносим тесты), далее — связанные задачи (их object.key), без дублей и без {ISSUE_KEY}.

Правило именования ссылок (чтобы источник был первым в списке «Ссылки»):

— Для исходной задачи {ISSUE_KEY} используй link_name/название ссылки: Источник: {ISSUE_KEY}

— Для связанных задач используй link_name равный их ключу (например, LKP-4106) без префиксов.

Верни результат строго в JSON следующего вида (без лишнего текста):

{

“issueKey”: “{ISSUE_KEY}”,

“linkIssueToTestOps”: {

«field»: «Ссылки»,

“keys”: [“{ISSUE_KEY}”, “<LINKED_ISSUE_KEY_1>”, “<LINKED_ISSUE_KEY_2>”]

},

“testops”: [

{

«name»: «<Критерий приемки>»,

“steps”: [

«<Шаг 1 из колонки Тест без нумерации, plain text>»,

«<Шаг 2 из колонки Тест без нумерации, plain text>»

]

}

]

}

Примечания и проверки качества

В testops[] должны попасть все критерии из таблицы «Тестирование», а не только первый.

Если таблица «Тестирование» отсутствует — верни JSON с пустым массивом testops и полем error с объяснением.

Если встречаются несколько таблиц «Тестирование» (например, для разных контуров) — извлеки каждую и добавь поле environment (например, stage, test) если его можно определить из текста рядом с таблицей.

Command: /move — переносим тест-кейсы по одному или пачкой

Дальше я сделал команду, которую назвал move. Она:

  • принимает один или несколько ISSUE_KEY (ссылки на задачи, откуда нужно перенести тест-кейсы ),

  • для каждого ключа вытаскивает задачу из ЯТ,

  • генерирует JSON по get-check-list-rule,

  • создаёт тест-кейсы в TestOps и добавляет ссылки в раздел «Ссылки».

Ниже промпт для самой команды:

Перенеси тест-кейсы из Яндекс Трекера в Allure TestOps, строго следуя project rule @cursor/rules/get-check-list-rule.mdc.

## Вход

На вход я дам одно из:

- Ссылку на задачу Яндекс Трекера (или несколько ссылок)

- Ключ(и) задач (например, LKP-3260, ABC-123)

- Плюс вложенные скриншоты (если нужно уточнить детали формулировок/контекста)

## Что нужно сделать

Сделай перенос по шагам:

1) Поддержи перенос по нескольким задачам сразу. Пример запуска: /move LKP-3260 LKP-3261 LKP-3262

2) Извлеки список ISSUE_KEY из текста (поддержи ключи и URL), удали дубли, сохрани порядок появления.

3) Для каждого ISSUE_KEY:

- через MCP Яндекс Трекера получи задачу (issue_get, include_description=true)

- сгенерируй JSON строго по @.cursor/rules/get-check-list-rule.mdc (включая issue_get_links, нормализацию title/steps и формирование linkIssueToTestOps.keys)

- перенеси результат в Allure TestOps через MCP user-allure (создай тест-кейсы по testops[], затем добавь ссылки на задачи по linkIssueToTestOps в раздел «Ссылки»; для исходной задачи используй link_name вида Источник: <ISSUE_KEY>)

4) Если MCP Allure недоступен/ошибается для какой-то задачи — не выдумывай: в JSON этой задачи добавь поле error, но продолжай обработку остальных задач.

## Выход (строго)

Верни:

1) Если передана одна задача — один JSON по get-check-list-rule.mdc (без лишнего текста)

2) Если передано несколько задач — JSON-массив, где каждый элемент соответствует формату get-check-list-rule.mdc

3) Если в процессе были проблемы с Allure MCP для элемента — добавь в этот элемент поле error с кратким описанием (иначе не добавляй)

MCP Яндекс Трекера: конфиг

Чтобы всё это взлетело, у нас должны быть подключены и настроены MCP:

  • Allure TestOps (наш MCP)

  • Яндекс Трекер

5d33296c5656bd64939fff28dcf1e20e.pnge3086cbbf2dd8c1c6bd3f0d5dfffb393.png

Пример JSON для MCP ЯТ:

"yandex-tracker": {

"command": "uvx",

"args": [

"yandex-tracker-mcp@latest"

],

"env": {

"TRACKER_TOKEN": ваш токен,

"TRACKER_ORG_ID": id организации

}

}

Как этим пользуется QA

QA-инженеру нужно сделать ровно одну вещь: выполнить команду с ключами задач.

Например:

  • /move LKP-3260

  • или пачкой: /move LKP-3260 LKP-3261 LKP-3262

37c1b51c1f51b993574a12573a521f11.png

LKP это номера задач, откуда нужно перенести тест-кейсы, а 190 это проект в тест-опсе куда надо перенести.

Результат: тест-кейсы появились в TestOps + проставлены ссылки на задачи

После запуска перенос происходит ожидаемо:

  • в TestOps создаются тест-кейсы,

  • в «Ссылках»:

    • исходная задача появляется первой и помечается как Источник: <ISSUE_KEY>,

    • дальше подтягиваются все связанные задачи.

f2de96324fb29459140f527acc048541.png

Как вы понимаете, кейсов для такого переноса может быть много. Например, можно преобразовать в нужный формат документацию из каких-нибудь задач в Jira и перенести её в Confluence с помощью MCP Jira и MCP Confluence или наоборот.

Также можно было бы написать промпт, который итеративно перенёс бы тест-кейсы со всех задач из ЯТ в TestOps, сэкономив QA ещё больше времени на этой рутинной работе. Но мы решили, что перенести тест-кейсы вообще со всех задач нам пока не нужно.

Если вам понравилась статья дайте знать и мы выложим продолжение.

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу crypto.news@mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.