Как запустить несколько клиентов тестирования в 1С:Предприятие для автоматизированного тестирования?

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

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

Основы работы с ТестируемоеПриложение

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

Разберем процесс по шагам:

  1. Запуск клиента тестирования: Клиентское приложение должно быть запущено с ключом командной строки /TestManager. Этот ключ переводит сеанс 1С в режим ожидания команд от менеджера.
  2. Назначение порта: Для того чтобы менеджер тестирования мог управлять несколькими клиентами одновременно, каждому из них необходимо назначить уникальный порт с помощью ключа /TestClientPort.
  3. Соединение: После того как процессы запущены на уровне операционной системы, в менеджере тестирования мы создаем объект ТестируемоеПриложение, указывая IP-адрес (обычно localhost) и соответствующий порт.

Реализация запуска нескольких клиентов

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

Для автоматизации запуска удобнее всего использовать метод ЗапуститьСистему() или объект КомандаСистемы. Вот пример того, как мы можем организовать запуск клиентского процесса:


// Пример подготовки команды для запуска клиента
КомандаЗапуска = """C:\Program Files\1cv8\bin\1cv8.exe"" ENTERPRISE /F ""C:\Base"" /N ""User1"" /P ""Pass1"" /TestManager /TestClientPort 8001";
КомандаСистемы(КомандаЗапуска);

// Инициализация объекта в менеджере тестирования
Приложение1 = Новый ТестируемоеПриложение("localhost", 8001);
Приложение1.УстановитьСоединение();

При необходимости запуска второго пользователя (например, с другими правами), мы просто повторяем процедуру с другим номером порта:


// Запуск второго клиента
КомандаЗапуска2 = """C:\Program Files\1cv8\bin\1cv8.exe"" ENTERPRISE /F ""C:\Base"" /N ""Admin"" /P ""AdminPass"" /TestManager /TestClientPort 8002";
КомандаСистемы(КомандаЗапуска2);

// Подключение второго клиента
Приложение2 = Новый ТестируемоеПриложение("localhost", 8002);
Приложение2.УстановитьСоединение();

Важные аспекты управления тестированием

Рассматривая архитектуру, важно понимать, что менеджер тестирования управляет каждым объектом ТестируемоеПриложение последовательно. Хотя процессов в системе может быть несколько, поток выполнения сценария в рамках управляющего сеанса остается линейным. Мы можем переключаться между объектами, выполняя действия в разных сеансах:

1. Имитация действий: Мы можем отправлять команды Нажать(), Ввести() или НайтиОбъект() к любому из запущенных приложений. Это позволяет имитировать сложные бизнес-процессы.

2. Проверка прав доступа: Как уже отмечалось, запуск нескольких клиентов — лучший способ убедиться, что ограниченные права пользователя не блокируют критически важные функции, которые отлично работают под администратором.

3. Ресурсоемкость: Помните, что каждый экземпляр 1С — это полноценный процесс. При проведении нагрузочного тестирования «по-быстрому» важно учитывать объем оперативной памяти и нагрузку на сервер. Если вам нужно просто проверить логику взаимодействия, данный подход будет идеальным и быстрым в реализации.

Советы по разработке сценариев

При написании тестов старайтесь инкапсулировать логику работы с каждым клиентом в отдельные методы или объекты. Например:


Функция ПолучитьКлиент(Порт)
    Клиент = Новый ТестируемоеПриложение("localhost", Порт);
    Клиент.УстановитьСоединение();
    Возврат Клиент;
КонецФункции

// Использование
КлиентМенеджер = ПолучитьКлиент(8001);
КлиентБухгалтер = ПолучитьКлиент(8002);

// Выполнение действий
КлиентМенеджер.НайтиОбъект("КнопкаСоздать").Нажать();

Таким образом, использование ТестируемоеПриложение позволяет гибко управлять тестированием сложных бизнес-сценариев. Разделение по портам — это стандартный и эффективный способ масштабирования тестовых сеансов, который поможет вам избежать ошибок прав доступа еще до этапа эксплуатации системы.

← На главную