архитектура appium

Разбор архитектуры Appium

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

В этом блоге, посвященном архитектуре Appium, вы рассмотрите следующие темы:.

Что такое Appium?

Appium – это кроссплатформенный инструмент для автоматизации тестирования с открытым исходным кодом. В настоящее время он ориентирован на обеспечение бесшовной автоматизации тестирования мобильных приложений работающих на Android и iOS.

Appium – это сервер, написанный с использованием node.js. Несколько лет назад Appium был только CLI-инструментом и устанавливался в основном с помощью менеджера пакетов node. С учетом последних разработок команды разработчиков Appium выпустил настольное приложение с графическим интерфейсом, которое может быть установлено в различных дистрибутивах Linux, Microsoft Windows и MAC OSx. Текущую версию Appium можно загрузить с официального сайта Appium.

Следует также отметить, что Appium является кроссплатформенным приложением во всех смыслах этого слова:

  • Appium можно использовать для тестирования мобильных приложений, работающих как на iOS, так и на Android.
  • Appium можно использовать для тестирования гибридных, нативных и веб-приложений
  • Appium работает под управлением Windows, Linux и MAC

Теперь давайте рассмотрим некоторые ключевые понятия, касающиеся Appium, которые помогут вам легко понять его архитектуру.

Концепции Appium

В этом разделе мы рассмотрим три ключевых понятия, присущих архитектуре Appium.

Клиент-серверная архитектура Appium

Appium по своей сути представляет собой сервер, написанный на node.js. Сервер работает по клиент-серверной архитектуре. В соответствии с архитектурой клиент-сервер клиент подключается к серверу, чтобы воспользоваться любым сервисом, размещенным на сервере. Общение между клиентом и сервером происходит в виде запросов и ответов.

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

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Appium Sessions

Все “тестирование” происходит в виде сессии. Это вполне очевидно, поскольку Appium представляет собой простой механизм на основе клиента и сервера. Клиент посылает на сервер пост-запросы, также известные как сессионные запросы. Эти запросы содержат информацию в формате JSON Object, а взаимодействие осуществляется по протоколу JSON Wire Protocol.

Desired Capabilities (описанные возможности)

Appium по-разному работает на iOS и Android. Поскольку Appium является “кроссплатформенным” инструментом, необходимо создать механизм, позволяющий различать сеансовые запросы для двух операционных систем. Эта задача также была решена с помощью JSON-объектов, называемых Desired Capabilities, как показано на рисунке ниже.

Desired Capabilities – это пары ключ-значение информации, которые отличают создание сессии для тестирования приложения для Android от сессии для приложения для iOS. С помощью таких аргументов, как

  • platformName
  • deviceName
  • appPackage
  • appActivity .

серверу становится достаточно легко различать две операционные системы.

Рассмотрев эти несколько ключевых понятий, давайте рассмотрим протокол JSON Wire Protocol.

Протокол JSON Wire Protocol

Протокол JSON Wire Protocol – это механизм, используемый для взаимодействия между клиентом и сервером. Он разработан разработчиками webDriver. По их словам, протокол представляет собой набор стандартизированных эндпоинтов, которые доступны с помощью RESTful API. Это позволяет веб-драйверу устанавливать связь с сервером и клиентом для выполнения автоматизации.

Appium использует мобильный протокол JSON Wire Protocol, который является расширением протокола Selenium JSON Wire Protocol. Он используется для управления различным поведением мобильного телефона, помимо простого установления потока связи.

Теперь давайте рассмотрим архитектуру Appium.

Архитектура Appium

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

  • Клиент взаимодействует с сервером с помощью сессии, в которой ключевые элементы процесса взаимодействия передаются с помощью вспомогательных объектов. Обмен данными осуществляется с помощью мобильного протокола JSON Wire Protocol.
  • Сервер отличает запрос iOS от запроса Android, используя аргументы desiredCapabilites.
  • Затем сервер Appium обрабатывает запрос к соответствующим UI Automators, как показано на схеме архитектуры Appium ниже.
  • Результаты тестовой сессии передаются на сервер и затем обратно в клиентскую систему в виде логов, используя протокол JSON Wire для мобильных устройств.

Appium имеет небольшие различия в исполнении для Android и iOS. Давайте посмотрим.

Appium на Android

Appium на Android использует для автоматизации фреймворк UIAutomator. UIAutomator – это фреймворк, созданный компанией android для целей автоматизации. Итак, давайте рассмотрим, как именно работает Appium на Android.

  • Клиент Appium (c/Java/Python/etc) соединяется с сервером Appium Server и взаимодействует с ним по протоколу JSON Wire Protocol.
  • Затем Appium Server создает сессию автоматизации для клиента и проверяет его возможности. Затем он соединяется с соответствующим фреймворком, предоставляемым производителем, например UIAutomator.
  • UIAutomator связывается с bootstrap.jar, запущенным в симуляторе/эмуляторе/реальном устройстве, для выполнения клиентских операций.
  • Здесь bootstrap.jar играет роль TCP-сервера, который мы можем использовать для отправки тестовой команды, чтобы выполнить действие на Android-устройстве с помощью UIAutomator.

Приведенная ниже диаграмма архитектуры Appium android дает наглядное представление об описанных выше шагах.

Appium на iOS

На iOS-устройствах Appium использует API Apple XCUI Test для взаимодействия с элементами пользовательского интерфейса. XCUITest – это фреймворк автоматизации, поставляемый вместе с Apple XCode.

  • Клиент Appium (c/Java/Python/etc) соединяется с сервером Appium Server и взаимодействует с ним по протоколу JSON Wire Protocol.
  • Затем Appium Server создает сессию автоматизации для клиента, проверяет его возможности и подключается к соответствующему фреймворку, поставляемому производителем, например XCUI Test.
  • Затем XCUI Test связывается с bootstrap.js, запущенным в симуляторе/эмуляторе/реальном устройстве для выполнения клиентских операций.
  • Bootstrap.js будет выполнять действия над нашим тестируемым приложением. После выполнения команды клиент отправляет обратно на сервер Appium сообщение с лог-деталями выполненной команды.

Приведенная ниже диаграмма архитектуры Appium iOS наглядно демонстрирует описанные выше шаги.

На этом мы заканчиваем данную статью.

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

Перевод статьи «A Deconstruction of the Appium Architecture».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *