Для функционального тестирования продуктов на платформе 8.2 использовался компонент Корпоративного инструментального пакета – Сценарное тестирование. Особенности его технической реализации не позволяли использовать его для проведения нагрузочных тестов.
С появлением новых возможностей платформы 8.3 ситуация изменилась. Появились понятия клиента тестирования и менеджера тестирования – это сеансы «1С», запущенные с особыми параметрами. Сеанс «1С», запущенный как менеджер тестирования, осуществляет управление сеансами «1С», запущенными как клиенты тестирования.
Один менеджер тестирования может управлять несколькими клиентами тестирования, каждым через отдельный порт (этот порт надо указывать при запуске клиента и в управляющем скрипте, выполняющемся на менеджере). Управляющий скрипт представляет собой код на языке «1С». Код заставляет элементы форм действовать так, как если бы с ними работал человек (пример будет приведен ниже). Существует возможность автоматизированной генерации этого кода. Менеджер и клиенты даже могут быть подключены к разным базам.
Это делает возможным, пусть и с некоторыми ограничениями, использование этого механизма для проведения простых нагрузочных тестов.
Ограничения следующие:
В то же время этот подход обладает существенным достоинством, перекрывающим многие его минусы. Это наглядность и простота (то есть скорость) создания скриптов, в случае когда они просты: открыть форму, ввести одно-два поля, нажать две-три кнопки. Особенно это актуально, если надо моделировать поведение именно интерфейсных объектов, а управляемые формы создаются программным способом. Эмуляция нажатия кнопок «изнутри» из конфигурации в таком случае может потребовать больших трудозатрат, а также сложностей с поддержкой при изменении кода конфигурации. Напротив, запись скрипта займет только несколько минут. Кроме того, код конфигурации меняется, а интерфейсные объекты на форме остаются те же (или появляются новые), переименовывают или удаляют их довольно редко.
Продемонстрируем, как с нуля подготовить и выполнить функциональное и нагрузочное тестирование сразу для двух клиентов тестирования из одного менеджера.
Если коротко, надо сделать следующее:
Теперь это же опишем подробнее. За основу возьмем демобазу «Бухгалтерии предприятия» ред. 3.0 (3.0.23.8).
1. Запустить сеанс «1С», записать действия пользователя.
Запустить конфигуратор. Из него запустить сеанс «1С» кнопкой, показанной на рис. 4.21.9.

Рис. 4.21.9. Кнопка запуска сеанса «1С» в режиме записи действий пользователя
В этом режиме сеанс содержит особые кнопки (см. рис. 4.21.10), слева направо – Начать запись, Прервать запись, Завершить запись. После начала записи кнопка Начать запись сменится на Приостановить запись (т. е. Play – Pause).

Рис. 4.21.10. Кнопки управления записью действий пользователя
Находясь в меню Рабочий стол, выполним следующие действия:
После нажатия кнопки Завершить запись откроется окно, содержащее журнал действий пользователя (см. рис. 4.21.11).

Рис. 4.21.11. Журнал действий пользователя
3. Преобразовать журнал действий в код «1С».
В том же сеансе, не закрывая его, нужно открыть обработку UILogToSctript.epf, которую можно найти на диске ИТС: Технологическая поддержка – 1С:Предприятие 8 – Универсальные отчеты и обработки – Преобразование журнала действий пользователя.
В простом случае, как у нас, достаточно установить флажки и переключатели, как показано на рис. 4.21.12, в поле Журнал действий пользователя скопировать текст из соседнего окна в том же сеансе (Ctrl + A, Ctrl + C, Ctrl + V) и нажать Преобразовать. В поле Сценарий появится код на языке «1С».

Рис. 4.21.12. Преобразование журнала в код «1С»
3. Этот код вставить в обработку, сеанс записи закрыть, при необходимости доработать код.
В конфигураторе создать обработку с единственной кнопкой КомандаВыполнить.
Весь код, полученный преобразованием журнала, вставить в модуль ее формы ниже обработчика команды КомандаВыполнить. В сам обработчик КомандаВыполнить вставить только вызов первой из процедур (в нашем случае ТестовыйСценарий_10_08_2013()), см. рис. 4.21.13.

Рис. 4.21.13. Вставка кода в обработку
Сеанс, в котором велась запись журнала и его преобразование, можно закрыть.
Одна из созданных процедур организует поиск выбранного платежного поручения по совокупности показателей. Оставим из них только номер, остальные закомментируем, см. рис. 4.21.14.

Рис. 4.21.14. Упрощение условий поиска
В принципе если бы речь шла об организации функционального тестирования в однопользовательском режиме, обработку можно бы было считать готовой и запускать.
Нам, однако, надо показать, как работать с двумя клиентами, поэтому продолжим.
Код обработки уже содержит подключение к тестируемому приложению (см. верхнюю половину рис. 4.21.15). Продублируем его, определив при этом новое тестируемое приложение переменной ТестовоеПриложение2, которое будет подключаться через TCP порт 1539 (порт должен быть открыт и не занят, например, порты 1540 и 1541 обычно используются кластером серверов «1С», и их сюда назначать нельзя). По умолчанию используется порт 1538. Через него будет подключаться первый клиент, через 1539 – второй.

Рис. 4.21.15. Определение второго тестируемого приложения
Действия, которые требуется выполнять второму тестовому приложению, создадим дублированием действий первого (см. рис. 4.21.16).

Рис. 4.21.16. Дублирование вызовов процедур и самих процедур
Выше мы для первого тестируемого приложения оставили поиск платежного поручения только по номеру (КП00-000004). Пусть второе приложение работает с другой платежкой (КП00-000003). Для этого изменим одну из ее процедур, как показано на рис. 4.21.17.

Рис. 4.21.17. Для второго тестируемого приложения задан поиск платежки № КП00-000003. Обратите внимание: имя процедуры отличается от имени на аналогичном рисунке выше, имя параметра внутри процедуры – нет
В следующую процедуру второго приложения также надо внести изменения, связанные с тем, что выбирается документ с другим номером (см. рис. 4.21.18). Кроме того, можно ввести другую сумму.

Рис. 4.21.18. Для второго тестируемого приложения задан поиск платежки № КП00-000003. Это следует отразить и в других процедурах, связанных с ней
Далее надо сохранить обработку и приготовиться к запуску клиентов.
4. Запустить один сеанс «1С» как менеджера тестирования, другой (другие) – как клиентов.
Чтобы запустить сеанс «1С» как менеджера тестирования, надо запустить «1С» из командной строки с параметрами ENTERPRISE /IBName "<имя_базы>" /TestManager, например:
C:\Program Files\1cv8\8.3.3.687\bin\1cv8c ENTERPRISE /IBName "scentest" /TestManager
Или в конфигураторе в меню Сервис – Параметры – Запуск 1С:Предприятия – Дополнительные установить переключатель на позицию Запускать как менеджер тестирования, см. рис. 4.21.19 (порт для менеджера значения не имеет), нажать ОК и дальше запустить «1С» через отладчик (F5 или соответствующая кнопка меню) или без отладки (Ctrl + F5 или соответствующая кнопка меню). Менеджер тестирования поначалу лучше запускать через отладчик, для отладки управляющей обработки. Клиентов запускать через отладчик нет смысла, на них доступный для отладки код не выполняется.

Рис. 4.21.19. Настройка параметров конфигуратора для запуска менеджера тестирования
Далее нам надо запустить двух клиентов тестирования: одного с управлением через порт 1538, другого – 1539. Для этого надо запустить «1С» из командной строки с параметрами:
ENTERPRISE /IBName "" /TestClient /-TPort номер_порта>
В нашем случае это будут команды:
C:\Program Files\1cv8\8.3.3.687\bin\1cv8c ENTERPRISE /IBName "scentest" /TestClient
C:\Program Files\1cv8\8.3.3.687\bin\1cv8c ENTERPRISE /IBName "scentest" /TestClient /-TPort 1539
Порт по умолчанию 1538 указывать не обязательно.
Или в конфигураторе в меню Сервис – Параметры – Запуск 1С:Предприятия – Дополнительные установить переключатель на позицию Запускать как менеджер тестирования (см. рис. 4.21.20) и указать порт.
Сначала установить порт 1538 (см. рис. 4.21.20), нажать ОК и запустить одного клиента (Ctrl + F5 или соответствующая кнопка меню: Сервис – 1С:Предприятие).

Рис. 4.21.20. Настройка параметров конфигуратора для запуска первого клиента тестирования
Затем установить порт 1539 (см. рис. 4.21.21), нажать ОК и запустить другого клиента (Ctrl + F5 или соответствующая кнопка меню). Как отмечалось выше, запускать клиентов тестирования через отладчик (F5 или соответствующая кнопка меню) нет смысла.

Рис. 4.21.21. Настройка параметров конфигуратора для запуска второго клиента тестирования
5. С менеджера тестирования запустить обработку на выполнение, убедиться, что на клиенте (клиентах) выполняются те действия, которые были записаны.
Имеет смысл расположить все три окна (менеджер и два клиента) на экране, чтобы видеть их, открыть из менеджера созданную обработку и выполнить ее. Убедиться, что окна в клиентах начали открываться и закрываться в соответствии с записанным скриптом.
Если в ходе выполнения обработки возникли ошибки, их можно отлаживать. Для этого надо подключиться отладчиком к менеджеру или сразу запустить менеджер в режиме отладки.