MyTetra Share
Делитесь знаниями!
Работа с утилитой ADB: основные команды, чтение логов, создание скриншотов
16.01.2019
14:47
Текстовые метки: android, андроид, adb, logcat, скриншот, screenshot, лог, логирование
Раздел: Компьютер - Программирование - Java - Java в Android

В данной заметке будут рассмотрены средства реализации автоматического тестирования. Рассматриваются только инструменты, входящие в Android SDK или распространяющиеся под Open Source лицензией.


Концепция автоматического тестирования

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

  1. Установка приложения на устройство
  2. Запуск приложения
  3. Тестирование приложения выбранным способом
  4. Удаление приложения
  5. Сброс состояния устройства

На каждом шаге нужно собрать и проанализировать данные, например логи и скриншоты. Затем на основе этих данных сформировать результат тестирования.

Далее рассматриваются средства, позволяющие автоматизировать перечисленные шаги.


Управление Android устройствами

Для начала нужно выделить компьютер на котором будет запускаться автоматическое тестирование и настроить на нем Android SDK. Примеры приводятся для компьютера с установленной ОС Linux.

На всех тестируемых устройствах нужно отключить экран блокировки и максимально увеличить время ожидания. Для некоторых методов тестирования нужно отключить смену ориентации экрана.

В Android SDK имеются две утилиты для управления устройствами: adb и MonkeyRunner.

Я постараюсь подробно описать автоматизацию действий, использующихся при тестировании. Тем, кто знаком с ADB и MonkeyRunner имеет смысл сразу переходить к разделу «Способы автоматизированного тестирования».


Управление с помощью утилиты ADB

ADB (Android Debug Bridge) – утилита для управления Android устройствами из командной строки. Официальная документация по ADB: developer.android.com/tools/help/adb.html

Утилита adb находится в директории <android_sdk>/platform-tools/. Путь к данной директории рекомендуется прописать в переменной окружения PATH.


Проверка работы ADB

Устанавливаем и настраиваем Android SDK, подключаем к компьютеру Android устройства и выполняем команду:

adb devices


Команда выдаст список всех подключенных устройств. Если список устройств не пуст, значит ADB настроен и работает.


Работа с несколькими устройствами

Чтобы указать ADB с каким устройством нужно работать, следует прописать серийный номер устройства после ключа -s:

adb -s <serial_number> <command>


Например:

adb -s <serial_number> logcat


Серийный номер устройства можно посмотреть командой adb devices. Ключ -s позволяет работать одновременно с несколькими подключенными устройствами. В дальнейшем ключ -s в командах я указывать не буду.


Основные команды ADB

Открыть консоль на устройстве:

adb shell


Запустить команду на устройстве:

adb shell <command>


В Android присутствуют многие стандартные утилиты Linux: ls, cat, dmesg,…

Установить приложение из apk файла:

adb install example.apk


Удалить приложение:

adb uninstall <package>


Название package можно получить из apk файла командой:

aapt dump badging example.apk | grep "package"


Загрузить файл с устройства на компьютер:

adb pull <path-on-device> <file>


Загрузить файл с компьютера на устройство:

adb push <file> <path-on-device>


Примечание:

В большинство директорий на устройстве разрешен доступ только на чтение. Доступ на запись разрешен в директорию /sdcard (из нее нельзя запускать программы) и /data/local/tmp/.

Запуск приложения:

adb shell am start -n <package>/<activity>


Запускает указанную activity. Название activity, которая запускается при выборе приложения в меню можно получить из apk файла командой:

aapt dump badging example.apk | grep "launchable-activity"


Чтение логов

Чтение логов в Android производится утилитой logcat.

Домашняя страница утилиты logcat: developer.android.com/tools/help/logcat.html

Считать логи с устройства (блокируется до нажатия Ctrl-C):

adb logcat


Очистить буфер логов на устройстве:

adb logcat -c


Считать буфер логов на устройстве (выдает текущее содержимое буфера, не блокируется):

adb logcat -d


Пример:

adb logcat -c # очищаем буфер логов

# выполняем действие

adb logcat -d > file.log # сохраняем текущее содержимое буфера логов в file.log


Снятие скриншотов с помощью утилиты screencap

Утилита screencap сохраняет текущее содержимое экрана в графический файл:

adb shell screencap /sdcard/screen.png

adb pull /sdcard/screen.png screen.png

adb shell rm /sdcard/screen.png


Утилита screencap имеется на телефонах с Android 4.x и выше. На предыдущих версиях Android снятие скриншотов можно производить с помощью MonkeyRunner.


Пример BASH скрипта для тестирования приложения c помощью ADB

Скрипт: app_test.sh

#!/bin/bash

#-------------------------------------------------------------------------------

# Пример BASH скрипта для автоматического тестирования приложения c помощью ADB

#

# Скрипт:

# 1. Устанавливает приложение

# 2. Запускает приложение

# 3. Тестирует приложение с помощью monkey

# 4. Удаляет приложение

#

# На каждом шаге собираются и сохраняются log-файлы.

#-------------------------------------------------------------------------------


APK="example.apk"

PACKAGE="com.example.package"

ACTIVITY="com.example.package.activity"


rm -rf log

mkdir log


# 1. Устанавливаем приложение

adb uninstall $PACKAGE # удаляем приложение

adb logcat -c # очищаем буфер логов

adb install $APK # устанавливаем приложение

adb logcat -d > log/install.log # записываем логи установки приложения


# 2. Запускаем приложение

adb logcat -c

adb shell am start -n $PACKAGE/$ACTIVITY # запускаем приложение

sleep 10 # ожидаем 10 сек чтобы приложение полностью загрузилось

adb logcat -d > log/start.log


# 3. Тестируем приложение

adb logcat -c

# тестируем приложение с помощью monkey

adb shell monkey --pct-touch 70 -p $PACKAGE -v 1000 --throttle 500

adb logcat -d > log/test.log


# 4. Удаляем приложение

adb logcat -c

adb uninstall $PACKAGE

adb logcat -d > log/uninstall.log



 
MyTetra Share v.0.52
Яндекс индекс цитирования