Как организовать интеграционное, регрессионное и юнит-тестирование в 1С с интеграцией с Git без EDT?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на современные методологии разработки (такие как TDD — Test-Driven Development) и выстраивании CI/CD-процессов в среде 1С разработчики часто сталкиваются со сложной задачей. Необходимо централизовать хранение тестовых сценариев, внешних обработок, инициализационных файлов (XML, JSON, YML) и тестовых поставок, обеспечив при этом полноценную интеграцию с системой контроля версий Git. При этом многие команды по разным причинам отказываются от использования тяжеловесной среды 1С:EDT (Eclipse-based), предпочитая классический Конфигуратор.

В этой статье мы подробно разберем, какие готовые инструменты и конфигурации существуют в экосистеме 1С для решения этих задач, как они взаимодействуют друг с другом и как развернуть полноценный стек тестирования на практике.

Основные требования к системе тестирования

Для создания надежного конвейера тестирования нам необходимо закрыть следующие ключевые потребности:

  1. Централизация тестовых данных: хранение в одном месте (желательно в репозитории) всех внешних обработок, XML/JSON/YML-файлов инициализации, которые готовят базу к тестам.
  2. Управление сценариями: возможность иерархического структурирования тестов, создания цепочек (сценариев) и управления их запуском.
  3. Интеграция с Git: хранение тестов в текстовом виде для удобного отслеживания изменений, слияния веток (merge) и проведения Code Review.
  4. Юнит- и интеграционные тесты: поддержка проверки как отдельных небольших методов (Unit), так и сквозных бизнес-процессов (UI/интеграционные тесты).

Рассмотрим лучшие инструменты, которые позволяют решить эти задачи в рамках «родной» экосистемы 1С.

1. Экосистема Vanessa (Automation и ADD)

Семейство инструментов Vanessa на сегодняшний день является стандартом де-факто для автоматизации тестирования в мире 1С. Исторически развиваясь из проекта xUnitFor1c, экосистема разделилась на два мощных направления:

Управление тестовыми данными в Vanessa:

Чтобы не зашивать тестовые данные внутрь конфигурации или обработок, «Ванесса» позволяет использовать внешние файлы конфигурации. Например, файл user_settings.json может содержать параметры подключения и настройки сред. Все эталонные JSON, XML или YML-файлы инициализации хранятся в подкаталогах репозитория Git рядом с тестами и загружаются динамически в момент выполнения сценария с помощью встроенных шагов работы с файловой системой.

2. 1С:СППР (Система проектирования прикладных решений)

Если вам требуется централизованное «родное» решение от фирмы «1С» для управления всем жизненным циклом разработки, включая тестирование, то 1С:СППР — лучший выбор. Современные версии СППР предоставляют мощный функционал:

3. Инструмент «1С:Тестер» (Tester)

1С:Тестер — это альтернативная и очень гибкая среда для разработки и выполнения тестов, выполненная в виде отдельной конфигурации 1С. В отличие от Vanessa, ориентированной на Gherkin, в Tester написание сценариев происходит на встроенном языке (очень похожем на JavaScript/1С), что дает колоссальные возможности программирования сложных проверок.

Основные преимущества:

4. 1С:Сценарное тестирование (в составе КИП)

Входит в состав Корпоративного инструментального пакета (КИП). В последних редакциях (3.0.x) разработчики получили возможность визуального версионирования и сравнения сценариев прямо внутри информационной базы. Сценарии можно выгружать во внешние файлы для последующего коммита в Git, что позволяет организовать работу распределенной команды.

Практический кейс: Как собрать рабочий стек без EDT?

Выясним, как настроить полноценный процесс тестирования и CI/CD, если команда работает в классическом Конфигураторе 1С. Мы объединим Конфигуратор, Git, OneScript и Vanessa Automation в единую цепочку.

Рассмотрим по шагам архитектуру и процесс работы:

Шаг 1. Организация структуры репозитория

В корне вашего Git-репозитория проекта создается строгая структура папок:

Шаг 2. Синхронизация кода с Git (gitsync)

Поскольку разработчики работают в обычном Конфигураторе, для выгрузки изменений в Git используется утилита gitsync (работающая на OneScript). Разработчик выполняет работу в базе, а скрипт автоматически выгружает конфигурацию в файлы XML и отправляет коммит в Git.

Шаг 3. Инициализация тестовых данных

Для загрузки файлов из папки /tests/fixtures в процессе выполнения интеграционного теста мы пишем специальный шаг на Gherkin в Vanessa Automation. Рассмотрим пример кода сценария, который подтягивает JSON-файл инициализации перед выполнением проверки контрагента:


Функционал: Проверка загрузки и валидации контрагентов

Сценарий: Загрузка эталонного контрагента из JSON
	Дано Я открываю тестовую базу данных
	И Я загружаю фикстуру "контрагент_дефолт.json" из каталога проектов
	Когда Я открываю форму списка справочника "Контрагенты"
	Тогда В списке присутствует контрагент с ИНН "7701020304"

При этом сам файл контрагент_дефолт.json лежит в папке /tests/fixtures и содержит структуру полей:


{
  "Наименование": "ООО Рога и Копыта",
  "ИНН": "7701020304",
  "КПП": "770101001",
  "ЮридическийАдрес": "г. Москва, ул. Ленина, д. 1"
}

Шаг 4. Настройка CI/CD-конвейера (на примере GitLab CI)

При пуше изменений в ветку Git сервер автоматизации (например, GitLab Runner) запускает пайплайн. Проанализируем типичный сценарий автоматического тестирования:

  1. Разворачивается временная («чистая») база данных 1С из исходников папки /src.
  2. Запускается Vanessa Automation в режиме TestManager с передачей параметров командной строки.
  3. Vanessa Automation считывает фича-файлы из /tests/features, инициализирует данные из /tests/fixtures, прогоняет тесты и формирует отчет в формате Allure.
  4. Результаты тестирования отправляются в СППР для фиксации ошибок (при их наличии).

Таким образом, используя связку из Vanessa Automation (или Tester), утилит OneScript и классического Конфигуратора, вы получаете мощную, гибкую и полностью бесплатную среду тестирования. При этом все сценарии и исходный код конфигурации надежно версионируются в Git, обеспечивая прозрачность разработки и стабильность релизов без необходимости пересаживать команду на тяжеловесную 1С:EDT.

← На главную