Как стать автором
Обновить
76.92
Холдинг Т1
Многопрофильный ИТ-холдинг

Автоматизация тестирования 1С (и не только) с помощью RPA

Время на прочтение7 мин
Количество просмотров4.3K
Пожалуй, сейчас уже нет ни одного специалиста по тестированию, который бы не задумывался над вопросом автоматизации тестирования. Великое множество фреймворков, языков, специальных инструментов автоматизации — выбирай самый подходящий, на твой взгляд, и автоматизируй. Но не всегда всё так просто.

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

В поисках такой платформы мы сравнили известные инструменты автоматизации:



Получается, что команда автоматизаторов, которая вполне успешно автоматизирует тестирование всех остальных систем IT-ландшафта компании, используя, например, самые распространённые фреймворки Java, не может взять в работу 1С. Автоматизация тестирования 1С становится достаточно редкой и обособленной компетенцией.

В поисках идеального предложения для решения проблемы мы решили побрейнштормить и поискать нестандартные решения. Что умеет работать с 1С и при этом может использоваться для автоматизации тестирования? В какой-то момент у нас появилось понимание, что действия, аналогичные автоматизации UI, часто применяются в роботизации. По сути, роботизация — это форма технологии автоматизации бизнес-процессов. А чем тестирование не бизнес-процесс? Отличительной и основной особенностью роботов RPA является возможность использования пользовательского интерфейса, в том числе и десктопного, для сбора данных и управления приложениями, т. е. именно то, что нужно для автоматизации тестирования 1С.

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

С чего начать? В первую очередь, как и в любом процессе автоматизации, необходимо выбрать сценарии, которые целесообразно автоматизировать. Primo позволяет реализовывать целостные end to end-сценарии, захватывающие несколько систем, что существенно расширяет охват и полноценность автоматизации. Таким образом, этот инструмент применим для создания полноценного набора Sanity-тестов или регресса. В этом ещё один большой плюс RPA и выбранной нами платформы и отличие от других инструментов автоматизации.

В качестве примеров реализации рассмотрим выдержки как раз из такого сценария — end to end-сценария взаимодействия 1С и MS CRM.

Сценарий выбран, приступаем к автоматизации, а точнее — к роботизации. Запускаем Studio Primo (дружественный интерфейс, кстати, тоже повлиял на наш выбор платформы).



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

Для простоты начнём с последовательности. Этот тип процесса реализуется перетаскиванием необходимых элементов.



Далее идёт процесс настройки свойств и атрибутов каждого элемента.



Вот здесь и начинается самое интересное. Ключевой принцип автоматизации UI заключается в определении и однозначной идентификации различных элементов интерфейса.



Разберём три примера взаимодействия с элементами интерфейса 1С.

Начнём с взаимодействия «клик по кнопке» для открытия списка справочников:

  1. Добавляется элемент «Клик мышью» из палитры действий и нажимаем кнопку «Выбрать компонент»:

  2. В 1С выбираем кнопку «Справочник…»:

  3. Выбираем уникальные свойства элемента, такие, как тип и имя:

  4. Клик готов!

Следующий вид взаимодействия — это клик в поле ввода текста:



Уникальные свойства такие же, как с кнопкой открытия справочников (это тип и имя):



И третий вид взаимодействия — клик по чекбоксу:



Уникальными свойствами будут имя и текст при наведении (HelpText):




Робот с такими взаимодействиями должен воспроизводить действия пользователя. Но не всё оказалось так просто. Нужно обработать ряд моментов, чтобы тест проходил более стабильно. Например, добавить длительности ожидания появления различных элементов: робот не сможет сделать следующий шаг, например, если в интерфейсе не появился нужный для взаимодействия элемент. В Studio Primo достаточно инструментов для отладки сценариев. В проекте можно расставить точки останова, с помощью трассировки видеть ход выполнения процесса, на панели событий наблюдать за логами выполнения проекта и следить за результатами, записываемыми в переменные.



Теперь перейдём к следующей системе сценария и рассмотрим работу с всплывающим окном в MS CRM с помощью элемента «Клик по картинке» в качестве примера применения тайм-аутов взаимодействия.



После настройки ему тайм-аута, робот будет ждать появления кнопки и сделает клик сразу, как только кнопка появится в интерфейсе.



Дальше давайте попробуем реализовать end to end-сценарий, содержащий взаимодействие двух систем.

Допустим, нам нужно получить значения из CRM и заполнить ими форму в 1С.

На примере кода 1С в CRM:



Добавляем из палитры действие «Получить текст» и через выбор компонента выделяем поле на странице:



Из уникальных свойств выбираем идентификатор и имя атрибута:



Всё готово: действие «Получить текст» сохранит значение в выбранную переменную.

Для заполнения поля в 1С используем действие «Симуляция ввода текста» и указываем переменную, содержащую полученное из CRM значение:



Поле заполнено:



Взаимодействие систем налажено, а дальше действуем по аналогии.

Итак, тест, он же — робот, создан. Его можно запустить локально и убедиться, что он полностью воспроизводит действия пользователя. А что если не воспроизводит? Как будет выглядеть результат неуспешного прогона теста?

Если при отладке какое-либо из действий не выполнится, то в консоли на панели инструментов появится ошибка:



Двойным кликом можно перейти к расположению действия в проекте.

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

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

Ещё одна технически интересная возможность Primo — взаимодействие с iFrame, которую поддерживают далеко не все платформы. Взаимодействие со встроенными iFrame позволяет реализовывать сценарии MS CRM, которые в других случаях проверяются только вручную.

Рассмотрим несколько примеров с MS Dynamic CRM, открытой в MS Edge.

Сложность в том, что MS Dynamic CRM свёрстана с использование фреймов, и нужно заполнить форму сведений.



На примере поля «дата», используем элемент «Клик мышью», указываем на поле ввода из студии и получаем такой результат:



Есть свойство AutomationID — уникальное для элемента на странице. Его можно оставить для идентификации поля. Далее, элементом «Симуляция ввода» заполняем значение, и поле заполнено.

Чтобы поставить флажок в чекбоксе на странице с фреймом, используется действие «Выбрать элемент».



В свойствах действия заполняем свойство «Новое состояние» значением «true» (установить флажок).



Элемент на странице, как в примере с кликом, выбираем по AutomationID и получаем результат.



Для получения текста с фреймовой страницы используем элемент «Получить текст» и записываем полученный результат в переменную. Текстовое поле идентифицируется также по AutomationID.



Когда RPA-проект готов, встаёт вопрос автоматизации его запусков. Для этого необходим Primo Оркестратор. Для его работы нужны выделенные аппаратные мощности.
Сначала готовый проект (в нашем случае — автотест) выгружается в Оркестратор и появляется на вкладке «RPA-проекты»:



Переходим на вкладку «Роботы»:



Робот нужен для выполнения проекта, их может быть больше одного. Можно добиться параллельного выполнения проектов, если задачи проектов не будут пересекать друг друга (например, авторизация в 1С одинаковой УЗ в одно время) и для каждого робота будет создана своя учётная запись.

На вкладке «Роботы» нажимаем кнопку «Запустить робота с проектом» — появляется всплывающее окно с выпадающим списком, в котором выбираем нужный для запуска проект.



На машине роботов появилось окно с консолью — значит, команда на запуск прошла успешно и проект начал своё выполнение.



Автотест успешно запущен! Оркестратор позволяет не только запускать наши автотесты вручную, но и настроить их запуск по расписанию и в случае необходимости параллельно.

Также Оркестратор имеет API, которое позволяет внедрять автотесты в конвейер сборки решения.

Следующая стандартная задача любого инструмента автоматизации — это отчётность. Primo позволяет настроить в качестве отчётности любой привычный для автотестера инструмент, например, Grafana или Allure.

Рассмотрим в качестве примера реализацию визуальной отчётности выполнения RPA-проектов в Grafana.

На общем графике всех успешных выполнений виден провал в середине, который означает, что в промежутке 16:45 — 17:15 успешно выполнилось только 80 % всех запущенных проектов.

Полученные данные показывают сбои в работе тестируемых систем в этот период.



График загрузки всех роботов показывает, какую часть времени робот находился в работе.



Также для наглядности есть графики выполнения по каждому проекту. Проект А:



Проект Б:



Роботы Primo не только помогают автоматизировать тестирование 1С и других специфических систем, которые не покоряются большинству привычных инструментов автоматизации тестирования, но и успешно заменяют автотесты в стандартных ситуациях, где обычно используются более привычные инструменты. Дополнительно хочется отметить, что инструмент хорошо зарекомендовал себя на рынке роботизации, а также активно развивается и при всём этом является российской разработкой (есть в реестре ПО).

Спасибо Александру Степанову, разработчику RPA, за помощь с подготовкой этого поста.
Теги:
Хабы:
Всего голосов 29: ↑28 и ↓1+27
Комментарии3

Публикации

Информация

Сайт
t1.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
Холдинг Т1