Автоматизированное тестирование в экосистеме 1С — это обширная тема, которая часто вызывает путаницу у начинающих разработчиков. Проблема заключается в том, что под этим термином могут подразумеваться два принципиально разных процесса: проверка качества написанного программного кода (статический анализ) и имитация действий пользователя в интерфейсе (функциональное тестирование). В этой статье мы подробно разберем механизмы, встроенные в платформу, и выясним, какие инструменты необходимы для создания надежной системы контроля качества.
Прежде чем приступать к настройке, нам необходимо четко разделить два подхода, которые часто смешивают в обсуждениях. Проанализируем их подробнее:
1С:Автоматизированная проверка конфигураций (АПК).Рассмотрим ситуацию, когда нам нужно проверить именно поведение программы. Для этого в платформе 1С 8.3 предусмотрен специальный механизм Test Client и Test Manager.
Начиная с версии 8.3, в платформу интегрированы средства, позволяющие одной базе управлять сеансом другой базы. Разберем по шагам, как это работает:
Тестовое приложение (Test Client): Это обычный сеанс 1С, который запускается со специальным ключом /TESTCLIENT. В этом сеансе платформа «слушает» внешние команды и исполняет их, имитируя интерактивные действия.
Менеджер тестирования (Test Server / Manager): Это сеанс, запущенный с ключом /TESTMANAGER. Именно здесь пишется и выполняется программный код, который отдает команды клиенту. Рассмотрим пример кода, который может быть выполнен в менеджере тестирования для управления формой:
// Пример управления клиентом тестирования из менеджера
Процедура ПроверитьСозданиеКонтрагента()
// Подключаемся к запущенному клиенту
Соединение = Новый ТестируемоеПриложение();
Соединение.УстановитьСоединение();
// Открываем справочник
ФормаСписка = Соединение.НайтиОбъект(Тип("ТестируемаяФорма"), "Справочник.Контрагенты.ФормаСписка");
ФормаСписка.ВыполнитьКоманду("Создать");
// Работаем с формой создания
ФормаЭлемента = Соединение.НайтиОбъект(Тип("ТестируемаяФорма"), "Справочник.Контрагенты.ФормаОбъекта");
ФормаЭлемента.ЗаполнитьЗначение("Наименование", "Тестовый Контрагент");
ФормаЭлемента.ЗаполнитьЗначение("ИНН", "1234567890");
// Нажимаем кнопку записи
ФормаЭлемента.ВыполнитьКоманду("ЗаписатьИЗакрыть");
КонецПроцедуры
Важно помнить, что данный механизм работает исключительно с управляемыми формами. Если ваша конфигурация построена на обычных формах (например, старые версии УПП или Бухгалтерии), стандартные средства платформы вам не подойдут. В этом случае придется использовать внешние WinAPI-обертки, что значительно усложняет разработку.
Писать тесты «голым» кодом на языке 1С, как в примере выше, — задача трудоемкая. Поэтому сообщество и фирма «1С» создали надстройки, упрощающие этот процесс. Разберем самые популярные из них:
Проанализируем ситуацию: что именно нужно скачивать с сайта 1С для работы? Если вы планируете использовать официальные средства, вам потребуются:
1С:Сценарное тестирование (доступна на портале ИТС);1С:Автоматизированная проверка конфигураций.Автоматизированное тестирование приносит максимальную пользу, когда оно встроено в процесс непрерывной интеграции. Рассмотрим типичный цикл работы команды:
Программист вносит изменения в код и помещает их в хранилище. В этот момент сервер сборки (например, Jenkins или GitLab) автоматически выполняет следующие действия:
АПК (статический анализ). Если найдены критические нарушения стандартов, сборка останавливается.Vanessa Automation или Сценарное тестирование.Такой подход позволяет выявлять ошибки на ранних стадиях, не доводя их до конечного пользователя. Хотя на первый взгляд реализация кажется сложной, использование готовых инструментов, таких как Vanessa-ADD, значительно упрощает старт.
Подведем итог: для успешного внедрения автоматизации вам необходимо сначала определить тип тестирования (код или интерфейс), убедиться в использовании управляемых форм и выбрать инструмент управления (встроенный механизм или внешние фреймворки типа Vanessa). Совместное использование статического анализа и сценарных тестов гарантирует высокое качество выпускаемых обновлений.