Тестирование мобильных приложений¶
Требования:
-
Эмулятор (Android или iOS), или реальное устройство.
-
Android Debug Bridge (ADB) - программа для управления Android;
-
Доступ к BDD-платформе.
Подготовка android устройства¶
Тестирование на эмуляторе (android virtual device)¶
Установка Android Virtual Device через Android Studio¶
Android Virtual Device можно установить несколькими несколькими способами. Предлагается установить Android Studio, в комплекте с которым идёт Android Virtual Device.
Процесс установки довольно простой, необходимо выбирать необходимые пункты настроек, и нажимать на кнопку Next.
Следует подсветить некоторые важные параметры при установке:
-
При установке необходимо, чтобы был отмечен галочкой пункт Android Virtual Device.
-
При установке Android Studio, в Setup Wizard необходимо выбрать Standard.
-
На этапе лицензионного соглашения необходимо выбрать Accept, и затем станет доступна кнопка Finish, на которую и следует нажать для завершения процесса установки.
Окно Verify Settings показывает компоненты, которые будут установлены в системе.
Примечание: если Вы установили Android SDK Platform-Tools, то процесс установки ADB можно пропустить. ADB установится в директорию с Android SDK (C:\Users\USER}\AppData\Local\Android\Sdk\platform-tools).
Установка системных переменных¶
Назначьте системную переменную переменную ANDROID_HOME. Для этого:
-
Нажмите ПКМ на “Этот компьютер” и выберите “Свойства”.
-
В открывшемся окне нажмите на “Дополнительные параметры системы”
-
Далее “Переменные среды”.
-
В список Системных переменных добавьте ANDROID_HOME со значением
C:\Users\USER}\AppData\Local\Android\Sdk -
Также в переменную PATH добавьте
%ANDROID_HOME\bin%
Установка эмулятора¶
-
Откройте Android Studio,
-
В More Actions выберите Virtual Device Manager
-
Нажать Create device
-
Выбрать девайс, например Phone - Pixel, и нажать Next
-
Выбрать версию Android, например R (API Level 30), и нажать кнопку загрузки
После окончания загрузки нажать Next
- Следующие настройки оставить по умолчанию и нажать Finish
Запуск эмулятора¶
- В Android Studio в окне Virtual Device Manager нажать кнопку запуска эмулятора.
Если ошибок нет, на экране должно инициироваться окно с виртуальным устройством.
Настройка системы¶
-
Разблокировать режим разработчика (инструкция зависит от используемой версии Android).
-
Убедиться, что режим разработчика активирован.
Тестирование на реальном устройстве (android)¶
Настройка системы¶
-
Разблокировать режим разработчика (инструкция зависит от используемой версии Android)
-
Перейти на телефоне в раздел Расширенные настройки > Для разработчиков
-
Активировать Режим разработчика
-
Включить:
-
Отладка по USB
-
Установка через USB *
-
Отладка по USB (настройки безопасности) *
* В некоторых моделях телефонах название может отличаться или пункт может отсутствовать
Подключение¶
-
Подключить телефон к компьютеру через USB.
-
Закрыть всплывающее окно, нажав на кнопку Отмена или выбрав пункт "Передача файлов"
-
При появлении запросе на смартфоне, необходимо разрешить отладку по USB.
Подготовка iOS устройства¶
Тестирование на симуляторе (XCode Simulator)¶
Установка и настройка версии симулятора и iOS¶
XCode позволяет запускать и тестировать все поддерживаемые версии iOS и устройств. Для того чтобы запустить определенный симулятор нужно скачать нужную нам версию iOS и создать симулятор.
Открываем XCode.
На верхней панеле нажимаем “Window”
–> Devices and Simulators
—>Simulators
Обычно тут уже стоит последняя iOS для данного XCode. И список стандартных устройств этой iOS.
У списка доступных симуляторов можно посмотреть модель и версию iOS.
Если не устраивает модель или версия iOS можно создать новый симулятор нажав “+”
Появится окно создания нового симулятора где можно выбрать модель и одну из установленных iOS. Если Нужная версия iOS не установлена, то в выпадающем списке нужно выбрать “Download more simulator runtimes…”
Примечание: Поле “Simulator name” для удобства лучше не заполнять, тогда оно заполнится значением “Device Type” что облегчить идентификацию устройства
Для выбора iOS нажимаем на “+” → “iOS…”
И в списке выбираем желаемый iOS (На устройстве можно иметь неограниченное количество iOS однако каждая из версий занимаем значительное место на диске)
Чтобы запустить приложение “Simulator” на верхней панеле XCode нажимаем “Xcode”
–> Open Developer Tool
—>Simulator
Внизу на панели появится значок “Simulator” его для удобства доступа лучше закрепить на панели.
ПКМ по значку “Simulator”
→ Device
—> Выбираем нужных из имеющихся симуляторов
Работа с WebDriverAgent¶
WebDriverAgent (WDA) — это реализация сервера WebDriver для iOS, которую можно использовать для удаленного управления устройствами iOS. Она позволяет запускать и завершать приложения, нажимать и прокручивать представления или подтверждать наличие представлений на экране.
Для настройки WDA необходимо чтобы на устройстве были установлен Appium Server вместе с драйвером XCUITest
-
Открыть проект WebDriverAgent в Xcode выполнив команду
appium driver run xcuitest open-wda -
Выбрать схему WebDriverAgentRunner
-
Product
-
→ Scheme
-
–→ WebDriverAgentRunner
-
-
Выбрать нужную модель устройства (симулятор)
-
Product
-
→ Destination
-
–→ Выбрать нужную модель устройства (симулятор)
-
-
Выбрать Test для создания и установки приложения WDA
-
Product
-
→ Test
-
После этого проект должен с бидлится и запуститься выбранный симулятор. Данная процедура выполняется 1 раз. Полес этого можно просто запускать симулятор.
Тестирование на девайсе (IPhone/IPad)¶
Для тестирования на реальном устройстве (IPhone) необходимо иметь оплаченную учетку разработчика (под этой учеткой необходимо зайти и с IPhone и в XCode).
Настройка учтки разарботчика в XCode
Для сборки WebDriverAgent для реального устройства Работа с WebDriverAgent потребуется указать учетку разработчика.
Выбираем корень проекта WebDriverAgent → Вкладка “Signing & Capabilities” → Team
Далее выбираем текущий AppleId если это учетка разработчика либо добавляем оплаченную учетку разработчика если отличается
¶
Работа с ADB¶
Описание¶
Android Debug Bridge (ADB) - это универсальный инструмент командной строки, который позволяет вам взаимодействовать с устройством. Это клиент-серверная программа, которая включает в себя три компонента:
-
Клиент, который отправляет команды. Клиент работает на вашей машине разработки. Вы можете вызвать клиента из терминала командной строки, введя команду adb.
-
Демон (adbd), который запускает команды на устройстве. Демон работает как фоновый процесс на каждом устройстве.
-
Сервер, который управляет связью между клиентом и демоном. Сервер работает как фоновый процесс на вашей машине разработки.
При запуске adb-клиента он сначала проверяет, запущен ли уже серверный процесс. Если нет, он запускает серверный процесс. При запуске сервера он привязывается к локальному TCP-порту 5037 и прослушивает команды, отправленные adb-клиентами.
Затем сервер устанавливает соединения со всеми работающими устройствами. Он находит эмуляторы, сканируя нечетные порты в диапазоне от 5555 до 5585, который является диапазоном, используемым первыми 16 эмуляторами. Когда сервер находит демон adb (adbd), он устанавливает соединение с этим портом.
Каждый эмулятор использует пару последовательных портов — четный порт для консольных подключений и нечетный порт для adb подключений. Например:
Эмулятор 1, консоль: 5554
Эмулятор 1, adb: 5555
Эмулятор 2, консоль: 5556
Эмулятор 2, adb: 5557
и так далее.
Как показано, эмулятор, подключенный к adb порту 5555, совпадает с эмулятором, консоль которого прослушивает порт 5554.
После того, как сервер настроил соединения со всеми устройствами, вы можете использовать adb команды для доступа к этим устройствам. Поскольку сервер управляет соединениями с устройствами и обрабатывает команды от нескольких adb клиентов, вы можете управлять любым устройством с любого клиента или из скрипта.
Установка ADB¶
Рекомендуем устанавливать ADB вместе c Android Studio. Для этого нужно в процессе установки выбрать компонент Android SDK Platform-Tools. ADB установится в директорию с Android SDK (C:\Users\USER}\AppData\Local\Android\Sdk\platform-tools).
Так же ADB можно установить в качестве автономного пакета:
-
Скачать ADB можно из официального источника по ссылке, либо в архиве с готовыми командами для запуска.
-
Распакуйте архив в удобную директорию.
Запуск ADB¶
-
При запуске Android Studio происходит автоматический запуск ADB с дефолтными настройками.
Для более прозрачного поведения программы рекомендуется запускать ADB вручную с помощью команды:
adb -a devices -l
флаг ”-a” нужен для того, чтобы adb прослушивал подключения из внешних сетей, ”devices -l” выводит информацию о подключенных устройствах. -
Если запуск производится впервые, то нужно разрешить доступ для firewall (например Брандмауэра Windows)
-
Подтвердить подключение на телефоне (только для реального устройства)
-
Проверить подключение - при успешном запуске ADB Сервера и подключению к телефону будет выведен список подключенных телефонов
Нажимаем любую кнопку для закрытия окна, оно больше не нужно. -
Для перезапуска adb требуется сначала его остановить командой:
adb kill-server
Работа с BDD платформой¶
Настройка VPN¶
-
Скачать и установить WireGuard www.wireguard.com/install
-
Добавить туннель, используя конфиг для доступа к сети офиса Ланит в Ижевске.
-
Подключиться.
Настройка проекта¶
-
Перейти на BDD платформу, например http://192.168.88.102:9037
-
Авторизоваться (Зарегистрироваться).
Перед пользователем откроется таблица со списком доступных проектов. -
Создать новый проект или перейти к ранее созданному, например #300 - Appium Test МКБ
-
Перейти в Настройки проекта, нажав на кнопку Настройки в левой части страницы
-
Заполнить поля:
-
Фреймворк: only_appium_bdd_java_fw
-
Appium Server URL: адрес Appium Server в формате http://\<IP>:\<PORT>
-
Адрес предустановленного общего appium server: http://192.168.88.89:4727
-
Адреса локально развернутого appium server отображаются в логах при старте
Порт по умолчанию: 4723.
IP-адрес для сетевого взаимодействия с BDD платформой должен соответствовать вашему адресу из окна WireGuard (в данном примере 10.254.0.20)
Итого, в данном примере в поле “Appium Server URL” следовало бы записать: http://10.254.0.20:4723Дополнительно: точный порт на котором развернут локальный appium можно проверить следующим образом:
- linux/mac: lsof -i | grep -E LISTEN | grep -E node
В данном случае порт 4723.
- windows: for /f "tokens=2" %a in ('tasklist /FI "imagename eq node.exe"') do netstat -aon | findstr %a
-
-
ADB Server Host
- для предустановленного общего appium server указать IP-адрес из окна WireGuard (см. скриншот)
- для локально развернутого appium server указать: 127.0.0.1
-
- Если проект не сконфигурирован, предлагается заполнить блок NeuroControl следующими значениями:
- URL сервиса NeuroControl: https://nc.rnd.lanit.ru/
- Имя проекта: МКБ mobile
- Версия модели распознавания элементов: sber-1280s
- Версия модели распознавания текста: desktop-640s-td
- Проект шаблонов: goinvest
По каждому полю можно вызвать всплывающую подсказку, нажав на знак вопроса “?” в правой части поля.
-
Установите параметры запуска драйвера и приложения
-
Путь до приложения: Абсолютный локальный путь к местоположению приложения. Приложение должно быть расположено на том же компьютере, где работает сервер Appium, например:
D:\tmp\mkb.apk или D:/tmp/mkb.apk - для Windows (требуется экранировать обратный слэш);
/share/mkb.apk - для Linux. -
Имя класса активности приложения: Идентификатор активности, которую должен ожидать драйвер (не обязательно основная). Если он не указан, по умолчанию используется appium:appActivity.
Способы получить класс активности приложения:-
Уточнить у разработчика приложения.
-
С помощью adb, выполнив команду:
- для Windows:
adb shell dumpsys activity activities | findstr "mResumedActivity" - для Linux (не проверено):
adb shell dumpsys activity activities | grep 'mResumedActivity'
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
- для Windows:
-
Использовать регулярное выражение: \<имя_пакета>.* (например ru.mkbb.*)
-
-
Имя пакета: Идентификатор приложения (bundleId), необходим для запуска/остановки приложения по id. (см пункт Сведения в разделе 'О приложении')
-
-
После внесения изменений не забудьте нажать кнопку "Сохранить".
Установка мобильного приложения¶
Поддерживается несколько вариантов установки мобильного приложения на Android устройство:
-
ручная установка;
-
автоматическая установка.
Ручная установка¶
-
Установить приложение любым доступным способом - через магазин приложений, или apk-файл.
-
В проекте BDD платформы открыть сценарий.
-
Выбрать актуальную версию фреймворка (на 31.07.24 актуальна версия only_appium_bdd_java ver #6)
Важно: версия фреймворка сохраняется на уровне сессии (до перезагрузки страницы), после перезагрузки подтягивается последняя версия. Если требуется внести изменения в настройки проекта и версия фреймворка не последняя, то после перенастройки проекта, версию фреймворка нужно выбирать заново.
Примечание: функционал не очень удобен, планируется увеличить срок хранения настройки -
Открыть вкладку Конфигурация
-
Активировать чекбокс Appium: запустить установленное приложение или Appium: инициализация сессии без привязки к приложению в Конфигурационные шаги - Инициализация драйвера
-
Если был выбран пункт Appium: инициализация сессии без привязки к приложению, то запуск приложения осуществляется с помощью шагов сценария
Автоматическая установка¶
-
Скопировать apk-файл с приложением на машину с установленным Appium Server, например в директорию /share/mkb.apk
-
В проекте BDD платформы открыть сценарий.
-
Открыть вкладку Конфигурация
-
Активировать чекбокс **Конфигурационные шаги - Инициализация драйвера - Appium: установить приложение из apk
**
Запуск сценария¶
-
Перейти к сценарию (например МКБ 01) и запустить его.
-
В окне “Настройки запуска сценария” оставить всё по умолчанию.
Эти настройки подтягиваются из предыдущего этапа (Настройка проекта), но могут быть изменены для конкретного запуска. -
Запустится сценарий, и на экране Android-устройства начаться прогон теста.
-
По завершению работы необходимо завершить работу ADB сервера выполнив скрипт stop.bat
Проблемы и решения¶
Q: После запуска теста появилась ошибка: Could not start a new session. Response code 500.
A: Appium Server не может подключиться к adb на компьютере, который подключен к мобильному устройству. Проверьте следующее:
-
Необходимо добавить adb в исключения или отключить firewall (брандмауэр Windows или иной).
-
По умолчанию adb доступен только для локальных подключений. Чтобы adb прослушивал соединения из внешней сети, требуется при запуске указать соответствующую опцию. Убедитесь, что используете флаг “-a” при запуске из консоли:
adb -a -
Есть предположительный дефект adb из-за которого флаг “-a” не обрабатывается должным образом. Попробуйте альтернативный вариант запуска:
adb -a nodaemon server start -
Android Studio и Appium Server могут перезапускать adb с неправильными настройками. Чтобы запретить перезапуск и сделать поведение более стабильным, рекомендуется запускать adb с правами администратора.
На Windows: откройте меню “Пуск” или “Поиск” и начните набирать “cmd”. В найденном соответствии “Командная строка” нажмите ПКМ > Запуск от имени администратора. Открывшийся терминал будет выполнять команды, включая запуск adb, от имени администратора. -
Если все вышеуказанные советы не помогли, необходимо установить Appium Server локально.
Q: Не удается запустить apk файл в рамках локально развернутого Appium Server.
A:
-
Проверьте правильно ли введен абсолютный путь до apk и существует ли сам файл. Для Windows в качестве разделителя следует использовать прямой слэш (С:/tmp/mkb.apk) или экранированный обратный слэш (C:\tmp\mkb.apk)
-
Убедитесь что выполнение сценария правильно сконфигурировано:
-
Выбрана актуальная версия фреймворка (на 31.07.24 актуальна версия only_appium_bdd_java ver #6)
-
Активен чекбокс “Appium: установить приложение из apk”
-
Q: На платформе в логах запуска теста отображается ошибка “Некорректный URL драйвера”
A: Убедитесь, что адрес драйвера соответствует формату http://\<HOST>:\<PORT>
Руководство администратора¶
Установка Appium Server¶
Для демо-стенда BDD платформы Appium Server уже развернут и доступен по адресу http://192.168.88.89:4727.
При самостоятельном развертывании BDD платформы, нужно не забыть установить и Appium Server, который предназначен для отправки команд в ADB. Установка может быть выполнена на любой машине, имеющей сетевой доступ к компьютеру с ADB.
Установка в Docker контейнере¶
- Создать в рабочей директории файл docker-compose.yml с содержимым:
version: '3'
services:
appium-server:
image: appium/appium
container_name: appium-container
ports:
- "4727:4723"
volumes:
- "/home/vm/share:/share"
environment:
- ADB_SERVER_PORT=5037
где:
-
/home/vm/share - папка для apk файлов, которые должны быть установлены на android устройстве;
-
4727 - порт по которому будет доступен Appium Server;
-
ADB_SERVER_PORT - порт на котором работает ADB (выводится при запуске ADB, по умолчанию для подключения по USB - 5037)
-
Запустить сервер
docker compose up -d -
Проверить состояние контейнера
docker ps -a -
Проверить состояние Appium Server
docker exec -it appium-container /bin/bash
curl http://localhost:4723/status -
Проверить подключение к устройству
adb connect \<ADB_IP_ADDRES>:5037
adb devices
Установка на локальную машину Windows (только Android драйвера)¶
Для работы Appium требуются:
-
Java +8;
-
NodeJS 10+ и NPM;
-
Android SDK +16 (включая Android Emulator и command-line tools)
Установка Java¶
Установите Java, если до сих пор у Вас её нет. Не забудьте указать системную переменную JAVA_HOME.
Установка NodeJS¶
После установки откройте командную строку и выполните следующие команды:
npm -v
node -v
Если всё сделано верно, в консоле отобразятся версии NPM и NodeJS.
После этого введите команду для установки Appium:
npm install -g appium
Проверка установки:
appium -v
Проверка зависимостей¶
Appium Doctor - это инструмент, который помогает проверить, установлены ли все необходимые зависимости для корректной работы Appium. Он также предоставляет рекомендации по установке дополнительных (опциональных) зависимостей, которые могут улучшить функциональность или производительность.
Установка:
npm i -g appium-doctor
Проверка зависимостей:
appium-doctor --android
В консоль выведется информация о зависимостях. Используйте рекомендации утилиты и исправьте найденные необходимые (necessary) зависимости, если они не удовлетворены.
Обязательные зависимости:
-
Node.js: Необходим для работы Appium. Убедитесь, что он установлен и его версия соответствует требованиям.
-
ANDROID_HOME: Переменная окружения, указывающая на путь к Android SDK. Она должна быть настроена правильно.
-
JAVA_HOME: Переменная окружения, указывающая на путь к Java SDK. Она также должна быть настроена правильно.
-
ADB, Android, Emulator: Эти инструменты должны быть доступны в PATH и работать корректно.
-
Apkanalyzer: Используется для анализа APK-файлов. Необходим для автоматизированного тестирования.
Опциональные зависимости:
-
opencv4nodejs: Используется для сравнения изображений. Необходим, если вы планируете использовать функции сравнения изображений в Appium.
-
ffmpeg: Используется для записи видео с экрана устройства. Полезно для отладки и анализа тестов.
-
mjpeg-consumer: Нужен для работы с MJPEG-over-HTTP. Устанавливается через npm.
-
bundletool: Используется для работы с Android App Bundle. Убедитесь, что он установлен, если вы планируете тестировать приложения в формате AAB.
-
gst-launch-1.0 и gst-inspect-1.0: Используются для стриминга экрана устройства. Полезны для удаленного мониторинга.
Установка драйверов и плагинов¶
Драйвер UiAutomator2 используется для автоматизации тестирования Android-приложений.
Установка:
appium driver install uiautomator2
Плагин execute-driver, который позволяет выполнять команды драйвера напрямую из тестов.
Установка:
appium plugin install execute-driver
Запуск¶
Запуск Appium Server с использованием плагина execute-driver:
appium --use-plugins execute-driver
Установка на локальную машину MacOS¶
Для работы Appium требуются:
-
Java +8;
-
NodeJS 10+ и NPM;
-
Android SDK +16 (включая Android Emulator и command-line tools) - для андроид запусков
-
XCode (той же версии и процессоре что и у разработчиков, иначе придется билдить приложение для симулятора вручную на своей машине)
-
Xcode Command Line Tools - средство для разработки из командной строки
Установка Java¶
Установите Java, если до сих пор у Вас её нет. Не забудьте указать системную переменную JAVA_HOME.
Установка NodeJS¶
После установки откройте командную строку и выполните следующие команды:
npm -v
node -v
Если всё сделано верно, в консоле отобразятся версии NPM и NodeJS.
После этого введите команду для установки Appium:
npm install -g appium
Проверка установки:
appium -v
Проверка зависимостей¶
Appium Doctor - это инструмент, который помогает проверить, установлены ли все необходимые зависимости для корректной работы Appium. Он также предоставляет рекомендации по установке дополнительных (опциональных) зависимостей, которые могут улучшить функциональность или производительность.
Установка:
npm i -g appium-doctor
Android. Проверка зависимостей:¶
appium-doctor --android
В консоль выведется информация о зависимостях. Используйте рекомендации утилиты и исправьте найденные необходимые (necessary) зависимости, если они не удовлетворены.
Обязательные зависимости:
-
Node.js: Необходим для работы Appium. Убедитесь, что он установлен и его версия соответствует требованиям.
-
ANDROID_HOME: Переменная окружения, указывающая на путь к Android SDK. Она должна быть настроена правильно.
-
JAVA_HOME: Переменная окружения, указывающая на путь к Java SDK. Она также должна быть настроена правильно.
-
ADB, Android, Emulator: Эти инструменты должны быть доступны в PATH и работать корректно.
-
Apkanalyzer: Используется для анализа APK-файлов. Необходим для автоматизированного тестирования.
Опциональные зависимости:
-
opencv4nodejs: Используется для сравнения изображений. Необходим, если вы планируете использовать функции сравнения изображений в Appium.
-
ffmpeg: Используется для записи видео с экрана устройства. Полезно для отладки и анализа тестов.
-
mjpeg-consumer: Нужен для работы с MJPEG-over-HTTP. Устанавливается через npm.
-
bundletool: Используется для работы с Android App Bundle. Убедитесь, что он установлен, если вы планируете тестировать приложения в формате AAB.
-
gst-launch-1.0 и gst-inspect-1.0: Используются для стриминга экрана устройства. Полезны для удаленного мониторинга.
iOS. Проверка зависимостей:¶
appium-doctor --ios
В консоль выведется информация о зависимостях. Используйте рекомендации утилиты и исправьте найденные необходимые (necessary) зависимости, если они не удовлетворены.
Обязательные зависимости:
-
Node.js: Необходим для работы Appium. Убедитесь, что он установлен и его версия соответствует требованиям.
-
Xcode: Среда разработки на платформах Apple.
-
Xcode Command Line Tools: средство для разработки из командной строки
-
Carthage: Средство управления зависимостями
Примечание: для установки Xcode Command Line Tools достаточно выполнить команду
xcode-select --install
Опциональные зависимости:
-
opencv4nodejs: Используется для сравнения изображений. Необходим, если вы планируете использовать функции сравнения изображений в Appium.
-
ffmpeg: Используется для записи видео с экрана устройства. Полезно для отладки и анализа тестов.
-
mjpeg-consumer: Нужен для работы с MJPEG-over-HTTP. Устанавливается через npm.
-
set-simulator-location: Используется для установки геолокации симулятора
-
applesimutils: Используются для установки пермишинов (разрешений на доступ к контактам, геолокации, камере и т.д.)
Установка драйверов¶
Android. Драйвер UiAutomator2¶
Драйвер UiAutomator2 используется для автоматизации тестирования Android-приложений.
Установка:
appium driver install uiautomator2
iOS. Драйвер XCUITest¶
Драйвер XCUITest используется для автоматизации тестирования Android-приложений.
Установка:
appium driver install xcuitest
Установка плагинов¶
Плагин execute-driver, который позволяет выполнять команды драйвера напрямую из тестов.
Установка:
appium plugin install execute-driver
Запуск¶
Запуск Appium Server с использованием плагина execute-driver:
appium --use-plugins execute-driver