Генерация тестов YAxUnit и Vanessa для 1С через AI
- yaxunit
- vanessa
- тесты
- 1c
MCP для YAxUnit и Vanessa: как mcp-1c-pro анализирует BSL-модули и генерирует заготовки тестов 1С через AI. Команды, флаги, режим MCP-сервера, границы.
Писать тесты для типовой или доработанной конфигурации руками долго: на каждую экспортную процедуру нужен модуль, на каждый сценарий формы отдельный .feature. Профессиональная редакция MCP-1C снимает с этого рутинную часть: команда --build-testgen читает BSL-модули конфигурации и формирует заготовки тестов YAxUnit и Vanessa. Заготовки строятся по экспортированным процедурам и функциям выгруженной конфигурации.
Сразу про рамку: на выходе скелеты (scaffold-тесты), а не готовый к коммиту набор. Их нужно дорабатывать руками.
Что генерируется
--build-testgen анализирует BSL-модули конфигурации и формирует три вещи:
- scaffold-тесты YAxUnit для экспортированных процедур и функций (правила TG001-TG019);
- Vanessa
.featureсценарии для taint-находок с критичностью CVSS не ниже Medium (правило TG020); - файл
manifest.jsonс итогами прогона.
Оба фреймворка открытые. YAxUnit это инструмент юнит-тестирования для платформы 1С:Предприятие от BIA Technologies: тесты пишутся на встроенном языке (BSL) в модулях, есть движок прогона, утверждения, плагин для 1С:EDT и подсистема моков. Репозиторий github.com/bia-technologies/yaxunit, лицензия Apache License, Version 2.0. Vanessa Automation это BDD-инструмент для 1С:Предприятие на сценариях Gherkin в .feature файлах, с тестированием управляемых форм и HTML-отчётами в формате Allure. Репозиторий github.com/Pr-Mex/vanessa-automation, лицензия BSD 3-Clause.
Разделение зон ответственности отражает то, под что заточен каждый фреймворк. YAxUnit покрывает уровень кода: на каждую экспортную процедуру или функцию своя заготовка теста. Vanessa здесь привязана к одному правилу TG020 и эмитирует регрессии по taint-находкам, то есть по местам, где данные из недоверенного источника доходят до опасной операции.
Два режима запуска
Функция работает в двух режимах.
- Разовая генерация:
--build-testgenзапускает прогон и выходит. Удобно для CI или для первичного наполнения каталога тестов. - Режим MCP-сервера:
--enable-testgenоставляет инструмент доступным для интерактивных запросов от AI-ассистента (Claude или любой другой MCP-клиент).
Разовый прогон выглядит так:
mcp-1c-pro --build-testgen \
--dump /path/to/dump \
--testgen-framework auto \
--testgen-output ./tests
Флаг --testgen-framework принимает yaxunit, vanessa, both или auto. При auto фреймворк выбирается по типу объекта. Каталог записи по умолчанию <dump>/.testgen-output, переопределяется через --testgen-output. Параллельность по умолчанию min(CPU, 8), регулируется --testgen-concurrency.
Для генерации нужен флаг --dump (выгрузка конфигурации в файлы) плюс одно из двух: API-ключ LLM-провайдера для обогащения результатов либо флаг --testgen-llm-disable. С --testgen-llm-disable генерируются только скелеты YAxUnit и Vanessa без LLM-комментариев, и это работает без API-ключей.
Подключение к AI-клиенту
В режиме MCP-сервера транспорт по умолчанию stdio: клиент запускает бинарник mcp-1c-pro и общается с ним через stdin и stdout, без отдельных портов и HTTP-серверов. Минимальный конфиг с включённой генерацией тестов:
{
"mcpServers": {
"mcp-1c": {
"command": "/usr/local/bin/mcp-1c-pro",
"args": [
"--dump", "/path/to/dump",
"--enable-testgen"
],
"env": {
"YANDEXGPT_API_KEY": "AQVN...",
"YANDEXGPT_FOLDER_ID": "b1g..."
}
}
}
}
Ключи провайдера задаются в секции env. На сайте показан YandexGPT (YANDEXGPT_API_KEY, YANDEXGPT_FOLDER_ID); поддерживается также GigaChat. Если LLM-обогащение не нужно, ключи можно не задавать, а в args добавить "--testgen-llm-disable" и получать только скелеты. Полный перечень переменных окружения и провайдеров смотрите в разделе настройки LLM на странице документации.
В режиме MCP-сервера доступны четыре действия, все в Профессиональной редакции:
| Действие | Что делает |
|---|---|
generate |
генерация тестов по всей кодовой базе, нужен dump_path |
summary |
сводка: число тестов, покрытие, ошибки |
findings |
список сгенерированных тестов с фильтрами |
manifest |
прочитать manifest.json последней генерации |
Флаги настройки
| Флаг | Назначение |
|---|---|
--testgen-framework |
yaxunit, vanessa, both или auto |
--testgen-rules |
подмножество правил TG001..TG020 через запятую |
--testgen-output |
каталог записи тестов (по умолчанию <dump>/.testgen-output) |
--testgen-concurrency |
число воркеров (по умолчанию min(CPU, 8)) |
--testgen-llm-disable |
только скелеты, без обращения к LLM |
--testgen-taint-regressions |
Vanessa-регрессии по taint-находкам (TG020) |
--testgen-include-bsp |
генерировать тесты для модулей БСП/SSL |
--testgen-vendor-baseline |
фильтровать стандартные модули по vendor-baseline дампу |
--testgen-emit-sarif |
отчёт SARIF 2.1.0 |
--testgen-audit-trail |
audit log (по умолчанию <dump>/.testgen-audit.log) |
Флагом --testgen-rules можно сузить прогон до нужного диапазона правил TG001..TG020. Стандартные модули типовых конфигураций можно отсечь через --testgen-vendor-baseline, чтобы тесты генерировались только на вашу доработку, а не на весь поставляемый код.
Есть и обратная связь с генерацией обработок: команда --epfgen-emit-tests эмитирует sibling YAxUnit-тесты через тот же testgen API, так что заготовку обработки и заготовку теста к ней можно получить за один проход.
Границы
Несколько честных ограничений, чтобы не было завышенных ожиданий.
- На выходе заготовки. Термины в документации это scaffold и skeleton: каркас теста с местами под утверждения, а не финальный тест. Логику проверок и подготовку данных дописывает разработчик.
- TG020 единственное правило, явно привязанное к Vanessa и taint-находкам. Остальные правила TG001-TG019 относятся к YAxUnit.
- Расшифровка каждого правила по отдельности в публичных материалах не приводится: известен диапазон и общий смысл (скелеты для экспортированных процедур и функций), но не пословное содержание конкретного TG-правила.
- Без LLM-ключа генерируются только скелеты без комментариев. Обогащение текстом подключается отдельно через провайдера.
Где это в линейке
Генерация тестов это возможность Профессиональной редакции. Она входит в список четырёх функций, которые используют внешние LLM API для обогащения результатов. Команда --build-testgen доступна в бинарнике mcp-1c-pro, поэтому отдельный исполняемый файл под генерацию тестов не нужен. Сравнение редакций и условия смотрите на странице тарифов.