Как запустить клиент и менеджер автоматизированного тестирования 1С для серверной базы?

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

Автоматизированное тестирование в среде «1С:Предприятие 8.3» — это мощный инструмент, позволяющий существенно повысить качество разрабатываемых конфигураций и минимизировать количество ошибок при выпуске обновлений. Однако на начальном этапе настройки разработчики часто сталкиваются с техническими сложностями, связанными с корректным запуском сеансов в режимах Менеджера тестирования (Test Manager) и Клиента тестирования (Test Client), особенно когда речь идет о работе в серверном (клиент-серверном) режиме.

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

Понимание архитектуры: Менеджер и Клиент тестирования

Прежде чем переходить к написанию скриптов запуска, важно четко разграничить роли двух сеансов, участвующих в процессе автоматизации:

  1. Менеджер тестирования (Test Manager): Это сеанс «1С:Предприятия», в котором выполняется сам код сценария тестирования (тестовая обработка). Менеджер тестирования управляет ходом выполнения тестов, отдает команды тестовому клиенту и анализирует результаты выполнения действий.
  2. Клиент тестирования (Test Client): Это целевой сеанс «1С:Предприятия» (база данных, которую мы тестируем). Именно в этом окне эмулируются действия пользователя: нажатия кнопок, ввод текста, открытие форм и проведение документов. Сам по себе клиент тестирования не содержит алгоритмов проверки — он лишь исполняет команды, приходящие от менеджера по сетевому протоколу TCP/IP.

Разбор параметров командной строки для серверной базы

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

Рассмотрим структуру параметров командной строки подробнее:

Синтаксис параметра /S формируется следующим образом:

/S"[ИмяСервера]\[ИмяБазыНаСервере]"

Разберем конкретный пример строки запуска тестового клиента для серверной базы:


"C:\Program Files\1cv8\8.3.21.1630\bin\1cv8.exe" ENTERPRISE /S"server-1C\ZUP" /N"Администратор" /P"12345" /TESTCLIENT

Проанализируем эту строку по шагам:

  1. "C:\Program Files\1cv8\8.3.21.1630\bin\1cv8.exe" — полный путь к исполняемому файлу платформы 1С. Если в пути присутствуют пробелы, весь путь обязательно заключается в двойные кавычки.
  2. ENTERPRISE — режим запуска в качестве клиентского приложения «1С:Предприятие».
  3. /S"server-1C\ZUP" — указание на серверную базу данных. Здесь server-1C — сетевое имя или IP-адрес сервера приложений 1С, а ZUP — имя информационной базы в кластере 1С.
  4. /N"Администратор" — имя пользователя (логин) для авторизации в системе.
  5. /P"12345" — пароль пользователя (если задан).
  6. /TESTCLIENT — ключевой флаг, который сообщает платформе, что данный сеанс запускается в специальном режиме готовности к приему команд тестирования.

Программный запуск клиента тестирования из встроенного языка 1С

Выполнять запуск тестового клиента вручную неудобно. На практике менеджер тестирования должен самостоятельно инициализировать запуск клиента, выполнить тесты и закрыть приложение. Для этого используется метод встроенного языка ЗапуститьСистему.

Посмотрим на пример кода, который запускает клиент тестирования программно:


ПутьКПлатформе = """C:\Program Files\1cv8\8.3.21.1630\bin\1cv8.exe""";
ПараметрыЗапуска = "ENTERPRISE /S""server-1C\ZUP"" /N""Администратор"" /P""12345"" /TESTCLIENT";

СтрокаЗапуска = ПутьКПлатформе + " " + ПараметрыЗапуска;
ЗапуститьСистему(СтрокаЗапуска);

Обратите внимание на экранирование кавычек во встроенном языке 1С: двойные кавычки внутри строки удваиваются ("").

Однако просто вызвать запуск процесса операционной системы недостаточно. Поскольку запуск приложения происходит асинхронно, менеджеру тестирования требуется время для ожидания полной загрузки клиента. Для установления надежной связи используется объект ТестируемоеПриложение.

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


ПортТестирования = 1538; // Порт по умолчанию
ТестовоеПриложение = Новый ТестируемоеПриложение("localhost", ПортТестирования);

Подключен = Ложь;
Таймаут = ТекущаяДата() + 30; // Ожидаем запуск клиента в течение 30 секунд

Пока ТекущаяДата() < Таймаут Цикл
    Попытка
        ТестовоеПриложение.УстановитьСоединение();
        Подключен = Истина;
        Прервать;
    Исключение
        // Ждем небольшую паузу и пробуем подключиться снова
        // (Платформа может запускаться несколько секунд)
    КонецПопытки;
КонецЦикла;

Если Не Подключен Тогда
    ВызватьИсключение "Не удалось установить соединение с клиентом тестирования за отведенное время!";
КонецЕсли;

// После успешного подключения можно управлять интерфейсом клиента:
ГлавноеОкно = ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"));
// Пример открытия справочника:
// ГлавноеОкно.ВыполнитьКоманду("e1cib/command/Справочник.Номенклатура.Создать");

Управление сетевыми портами и параметр -TPort

Связь между менеджером и клиентом тестирования осуществляется по протоколу TCP/IP. По умолчанию платформа использует сетевой порт 1538.

Если вам требуется запустить одновременно несколько клиентов тестирования на одном компьютере (например, для проверки параллельной работы пользователей под разными ролями или в рамках нагрузочных тестов), возникнет конфликт портов. Чтобы этого избежать, каждому клиенту тестирования необходимо назначить индивидуальный сетевой порт.

Для явного указания порта используется ключ -TPort в параметрах запуска тестового клиента:


"C:\Program Files\1cv8\8.3.21.1630\bin\1cv8.exe" ENTERPRISE /S"server-1C\ZUP" /N"Админ" /TESTCLIENT -TPort 1540

В коде менеджера тестирования при создании объекта ТестируемоеПриложение мы должны передать этот же порт в качестве второго параметра:


ПортТестирования = 1540;
ТестовоеПриложение = Новый ТестируемоеПриложение("localhost", ПортТестирования);
ТестовоеПриложение.УстановитьСоединение();

Интерактивная настройка режимов в Конфигураторе

Если вы отлаживаете логику тестов в процессе разработки и не хотите постоянно запускать сеансы через командную строку, вы можете настроить параметры автоматического запуска непосредственно в Конфигураторе 1С:

  1. Откройте Конфигуратор вашей базы данных.
  2. Перейдите в главное меню: Сервис — Параметры.
  3. В открывшемся окне перейдите на вкладку Запуск 1С:Предприятия, а затем на вкладку Дополнительно.
  4. Найдите область «Автоматизированное тестирование».
  5. Установите переключатель в нужное вам положение:
    • Запускать как менеджер тестирования — если вы отлаживаете сам тест.
    • Запускать как клиент тестирования — если вы хотите, чтобы этот сеанс управлялся другим менеджером.
  6. Здесь же вы можете переопределить стандартный порт тестирования.

Инструмент автоматической записи действий пользователя (/UILogRecorder)

Разработка сценариев автоматизации «с нуля» во встроенном языке — процесс трудоемкий. Платформа 1С предлагает встроенный механизм интерактивной записи действий пользователя. Вы можете запустить клиент тестирования в специальном режиме логирования:


"C:\Program Files\1cv8\8.3.21.1630\bin\1cv8.exe" ENTERPRISE /S"server-1C\ZUP" /N"Администратор" /TESTCLIENT /UILogRecorder -File "C:\Tests\recorded_steps.xml"

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

Важные технические нюансы и ограничения

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

← На главную