Автоматизированное тестирование в 1С открывает широкие возможности для проверки функционала системы, особенно когда речь идет о сценариях, требующих участия нескольких пользователей с различными правами доступа. Рассмотрим детально, как правильно организовать архитектуру такого тестирования с использованием встроенного объекта ТестируемоеПриложение.
Объект ТестируемоеПриложение является ключевым инструментом для взаимодействия менеджера тестирования с клиентским приложением. Чтобы система «увидела» клиентский сеанс, его необходимо правильно подготовить. Основное заблуждение заключается в попытке создать объект напрямую через встроенный язык без предварительного запуска процесса.
Разберем процесс по шагам:
/TestManager. Этот ключ переводит сеанс 1С в режим ожидания команд от менеджера./TestClientPort.ТестируемоеПриложение, указывая 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);
// Выполнение действий
КлиентМенеджер.НайтиОбъект("КнопкаСоздать").Нажать();
Таким образом, использование ТестируемоеПриложение позволяет гибко управлять тестированием сложных бизнес-сценариев. Разделение по портам — это стандартный и эффективный способ масштабирования тестовых сеансов, который поможет вам избежать ошибок прав доступа еще до этапа эксплуатации системы.