Инструменты тестирования Android приложений. Часть 2
Содержание:
ADB
ADB (или Android debug bridge) — самый сильный и многофункциональный инструмент, используемый для работы с android приложениями. ADB — это инструмент командной строки, который позволяет общаться с подключенным к компьютеру девайсом. С помощью него можно делать следующее:
- Получать и менять все настройки системы устройства
- Делать скриншоты экрана девайса и записывать видео
- Симулировать касания экрана и нажатие кнопок девайса
- Работать с файловой системой
- Удалять, устанавливать и запускать приложения с определенными входными параметрами
- Забыть про USB и подключаться к девайсам через Wi-fi
ADB идет в комплекте с Android Studio, путь к нему можно найти в (Preferences → Android SDK → Android SDK location:) в папке из этого пути нужно выбрать папку platform-tools — там и будет лежать искомый “adb” файл. Также ADB можно скачать отдельно и использовать без Android Studio.
Однако на начальных этапах легче все-таки работать с Android studio, потому что она использует некоторые возможности ADB.
Android девайс под капотом — Unix система, получив доступ к девайсу через
adb shell
вы получаете все те же возможности, которые у вас были бы при работе с Unix, поэтому знания в этой области необходимы, чтобы чуствовать себя комфортнее.
Давайте все же немного поговорим о работе с adb напрямую. Вот самый простой пример запуска приложения с помощью adb из консоли: adb shell am start -n com.example.demo/com.example.test.MainActivity
, где
“shell” — это обращение к девайсу (если их несколько, придется явно указать название; его можно получить, запустив “adb devices”)
“am” — это вызов activity manager — инструмента, который занимается менеджментом компонентов activity.
“start -n /package/activity_name/” — запуск активити (в этом случае это должна быть та же уникальная активити, которая запускается при клике на иконку, т.е. иметь настройкиaction = .MAIN category = .LAUNCHER
На самом деле, любая активити, у которой в манифесте заданы какие-то значения для “action” и “category” (и эти значения не равны .MAIN и.LAUNCHER), может быть запущена из консоли. Подобные активити являются дополнительными точками входа в приложения. Они дают возможность сторонним приложениям открывать ваше на каком-то конкретном экране и использовать его функционал. По такому принципу работает, например, GMail: когда вы хотите поделиться какой-нибудь информацией из социальных сетей, вы попадаете сразу на активити экрана с написанием письма, где уже сформирован весь контент и остается добавить только получателя письма.
Или еще один пример: если активити может открывать изображения для редактирования и на вход принимает путь до файла, то любое другое приложение может воспользоваться им для редактирования своих изображений.
А в рамках тестирования QA специалист может подложить изображение в файловую систему и напрямую вызвать этот триггер без использования других приложений:
adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -e pathToImage your/image/path -n com.example.test
“-e” — это команда, которая передает аргумент по ключу “-e key value”
Плюс ко всему, через adb также легко тестировать deeplink’и. С этим поможет команда:
adb shell am start -a android.intent.action.VIEW -d “myAppScheme://test” com.example.test
где “myAppScheme” и “test” — это значения, которые умеет обрабатывать активити (их обычно указывают в Манифесте в блоке <activity>),
а “com.example.test” — это имя пакета вашего приложения (тоже хранится в манифесте).
Команда выше симулирует переход по ссылке myAppScheme://test, а система Android проходит по манифесту и ищет активити, которые знают, как такие ссылки обрабатывать.
Например, активити в манифесте для этого примера будет выглядеть следующим образом:
<activity android:name=”com.example.test.activity.TestActivity”>
<intent-filter>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
<category android:name=”android.intent.category.BROWSABLE” />
<data android:scheme=”myAppScheme”
android:host=”test” />
</intent-filter>
</activity>
Если в манифесте есть несколько активити, которые могут обработать входящий запрос, то Android предложит пользователю выбрать, какую именно активити он хочет запустить.
На самом деле, использование активити другим приложением или открытие активити через deeplinks — это довольно частый кейс. И ADB помогает быстро и без сторонних приложений эмулировать все эти запуски и, в перспективе, автоматизировать весь процесс тестирования. Таким образом, ADB экономит время QA инженера — все вещи, которые можно сделать мануально, adb выполнит с помощью одной команды.
Есть уже много готовых Cheat sheet’ов, которые помогут быстрее понять, что можно делать с помощью adb, а также официальная документация.
В следующей части мы поговорим о “зеркале” приложения, которое позволит нам не погружаясь в код понять, что происходит внутри.