Открыть сервис

Appium

Appium — это кроссплатформенная система автоматизации тестирования мобильных, веб- и десктопных приложений с открытым исходным кодом. Она позволяет писать тесты на различных языках программирования (Java, Python, JavaScript, Ruby, C# и других) и запускать их на устройствах под управлением iOS, Android, Windows и macOS без необходимости переписывать код для каждой платформы. Appium построена на архитектуре клиент-сервер и использует протокол WebDriver, что делает её расширением Selenium для мобильных приложений.

История

Проект Appium был основан в 2011 году Дэном Куаве (Dan Cuellar) как альтернатива существующим фреймворкам автоматизации, таким как Apple UIAutomation и Android Instrumentation. Первоначально он назывался «iOS Auto» и поддерживал только iOS. В 2012 году проект был переименован в Appium и переведён на архитектуру WebDriver, что позволило добавить поддержку Android. В 2013 году Appium был принят в инкубатор Apache Software Foundation, а в 2015 году стал проектом верхнего уровня (Top-Level Project) Apache.

Ключевым этапом развития стало внедрение поддержки протокола W3C WebDriver в 2017 году, что обеспечило совместимость с современными браузерами и стандартами. В 2019 году вышла версия 1.15.0, добавившая поддержку Windows-приложений через WinAppDriver. В 2021 году проект перешёл на новую архитектуру Appium 2.0, которая включала модульную систему плагинов и отказ от встроенных драйверов в пользу подключаемых.

Архитектура и принцип работы

Appium работает по клиент-серверной модели. Серверная часть (Appium Server) написана на Node.js и принимает HTTP-запросы от клиентских библиотек. Клиент отправляет команды в формате JSON Wire Protocol (или W3C WebDriver), а сервер транслирует их в нативные API платформы.

Основные компоненты

  • Appium Server — центральный узел, который обрабатывает запросы, управляет сессиями и взаимодействует с драйверами платформ.
  • Драйверы — модули, отвечающие за конкретную платформу: XCUITest (iOS), UiAutomator2 (Android), Espresso (Android), WinAppDriver (Windows), Mac2 (macOS). В Appium 2.0 драйверы устанавливаются отдельно через npm.
  • Плагины — расширения, добавляющие функциональность (например, логирование, скриншоты, эмуляция жестов).
  • Клиентские библиотеки — официальные и сторонние реализации для языков программирования (Java, Python, Ruby, JavaScript, C# и других).

Протоколы взаимодействия

Appium поддерживает два протокола:

  • JSON Wire Protocol — устаревший протокол, используемый в Selenium WebDriver 2.x.
  • W3C WebDriver — стандартизированный протокол, рекомендованный консорциумом W3C. Appium 2.0 по умолчанию использует W3C.

Поддерживаемые платформы

iOS

  • Устройства: iPhone, iPad, iPod Touch.
  • Версии iOS: начиная с 9.0 (ограниченная поддержка более старых версий).
  • Драйверы: XCUITest (основной), UIAutomation (устаревший).
  • Требования: macOS, Xcode, Apple Developer Account (для реальных устройств).

Android

  • Устройства: смартфоны, планшеты, эмуляторы.
  • Версии Android: начиная с 4.2 (API 17).
  • Драйверы: UiAutomator2 (основной), Espresso (для Android-приложений с поддержкой Espresso), Selendroid (устаревший).
  • Требования: Android SDK, ADB, Java Development Kit (JDK).

Windows

  • Устройства: ПК и планшеты под управлением Windows 10/11.
  • Драйвер: WinAppDriver (разработан Microsoft, но интегрирован в Appium).
  • Требования: Windows 10/11, .NET Framework.

macOS

  • Устройства: Mac-компьютеры.
  • Драйвер: Mac2 (на основе Apple Accessibility API).
  • Требования: macOS 10.15+, Xcode.

Классификация тестов

Appium поддерживает три основных типа тестирования:

Нативные приложения

Тестирование приложений, написанных под конкретную платформу (iOS — Swift/Objective-C, Android — Java/Kotlin). Appium взаимодействует с элементами интерфейса через платформенные API (например, Accessibility ID для iOS, Resource ID для Android).

Гибридные приложения

Приложения, которые содержат веб-компоненты, встроенные в WebView. Appium может переключаться между нативным контекстом и веб-контекстом, используя ChromeDriver (Android) или Safari WebKit (iOS).

Мобильные веб-сайты

Тестирование веб-страниц в мобильных браузерах (Safari на iOS, Chrome на Android). Appium использует WebDriver для управления браузером, как и Selenium.

Преимущества и недостатки

Преимущества

  • Кроссплатформенность: один тестовый код для iOS, Android, Windows и macOS.
  • Открытый исходный код: бесплатное использование, активное сообщество.
  • Поддержка множества языков: Java, Python, JavaScript, Ruby, C#, PHP, Perl.
  • Гибкость: возможность запуска на реальных устройствах, эмуляторах и симуляторах.
  • Интеграция с CI/CD: Jenkins, GitLab CI, GitHub Actions, CircleCI.
  • Стандартизация: использование протокола W3C WebDriver.

Недостатки

  • Скорость: тесты на Appium работают медленнее, чем нативные фреймворки (например, Espresso или XCUITest напрямую), из-за дополнительного слоя абстракции.
  • Сложность настройки: требуется установка множества зависимостей (Node.js, JDK, Android SDK, Xcode).
  • Ограничения на iOS: для работы с реальными устройствами необходима подписка Apple Developer ($99/год).
  • Нестабильность: при работе с гибридными приложениями возможны проблемы с переключением контекстов.

Применение

Appium широко используется в индустрии разработки программного обеспечения для:

  • Регрессионного тестирования — автоматическая проверка функциональности после каждого изменения кода.
  • Приёмочного тестирования — проверка соответствия требованиям заказчика.
  • Нагрузочного тестирования — в сочетании с инструментами вроде Apache JMeter.
  • Тестирования пользовательского интерфейса — проверка расположения элементов, цветов, шрифтов.

Крупные компании, такие как Netflix, Uber, Twitter (социальная сеть заблокирована в РФ), применяют Appium для автоматизации тестирования своих мобильных приложений.

Инструменты и экосистема

  • Appium Desktop — графический интерфейс для запуска сервера и инспектора элементов.
  • Appium Inspector — инструмент для просмотра иерархии элементов интерфейса.
  • Appium Doctor — утилита для проверки зависимостей.
  • Appium Studio — коммерческая версия от компании Experitest с дополнительными функциями.

Интеграция с другими инструментами

  • Selenium Grid — для параллельного запуска тестов на нескольких устройствах.
  • TestNG / JUnit — для организации тестовых наборов и отчётов.
  • Allure — для генерации красивых отчётов.
  • Appium Pro — плагин для Visual Studio Code.

Безопасность и лицензирование

Appium распространяется под лицензией Apache 2.0, что позволяет использовать, модифицировать и распространять код как в коммерческих, так и в некоммерческих проектах. При использовании Appium в корпоративной среде необходимо учитывать, что он не собирает телеметрию и не требует регистрации.

Критика

Основные претензии к Appium связаны с его производительностью. По данным бенчмарков, тесты на Appium выполняются в 2–5 раз медленнее, чем на нативных фреймворках (Espresso, XCUITest). Это связано с тем, что каждая команда проходит через HTTP-запрос к серверу, который затем транслируется в нативный API. Кроме того, при работе с большим количеством устройств (более 10) требуется мощное аппаратное обеспечение.

Другая проблема — нестабильность при работе с гибридными приложениями. Переключение между нативным и веб-контекстами может приводить к ошибкам, особенно на iOS, где WebView часто блокирует доступ к DOM-дереву.

Источники

  1. Appium Documentation. — Appium Project, 2023.
  2. Cuellar D. Appium: Mobile App Automation. — O'Reilly Media, 2015.
  3. Apache Software Foundation. Appium Project Overview. — 2021.
  4. Google Developers. Android Testing Support Library. — 2022.
  5. Apple Inc. XCUITest Documentation. — 2023.
  6. Microsoft Corporation. WinAppDriver Documentation. — 2020.
  7. W3C WebDriver Specification. — W3C, 2018.
  8. Experitest. Appium Studio User Guide. — 2022.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →