Подготовка устройства для тестирования

Для устройств под управлением Android 6 или Android 7 вы можете протестировать подготовку устройства с помощью набора тестов Android Enterprise (AE), который представляет собой набор тестов для проверки корпоративной совместимости устройств Android. Обвязка включает в себя приложения поддержки, тестовые примеры, файлы конфигурации и средство запуска тестов ( afw-test-tradefed ), созданное на основе cts-tradefed . Перед настройкой AE Test Harness обязательно выполните подготовку для администрирования устройства .

Для устройств под управлением Android 8 или более поздней версии использование AE Test Harness не рекомендуется .

Настройка среды разработки

Среда разработки для AE Test Harness аналогична ОС Android. Выполните шаги, описанные в разделе « Требования », чтобы настроить компьютер для разработки.

Загрузка исходного кода

Загрузите исходный код AE Test Harness, выполнив действия, описанные в разделе Загрузка исходного кода . Исходный код AE Test Harness находится в проекте ./test/AfwTestHarness . Название ветки определяет загружаемую версию AE Test Harness (каждая платформа Android имеет отдельную версию AE Test Harness). Например, имя ветки для Android 7.0 Nougat — afw-test-harness-nougat-dev . Чтобы инициализировать репозиторий и загрузить исходный код для этой ветки, используйте следующие команды:

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
repo init -u https://android.googlesource.com/platform/manifest -b afw-test-harness-nougat-dev
repo sync -j24

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

Название филиала Поддерживаемая платформа Android
afw-test-harness-нуга-dev Андроид 7.0
afw-test-harness-2.1 Андроид 7.0
afw-test-harness-marshmallow-dev Андроид 6.0
AFW-тест-жгут-1.5 Андроид 6.0

Вместе с исходным кодом загружаются и другие проекты зависимостей, необходимые для создания обвязки.

Просмотр в Android Studio

Чтобы просмотреть и отредактировать исходный код в Android Studio:

  1. Выполните следующие команды
    make idegen
    development/tools/idegen/idegen.sh
    
  2. В Android Studio откройте android.ipr .

Исходный код AE Test Harness находится в test/AfwTestHarness .

Настройка тестового жгута AE

Вы можете настроить обвязку, настроив test/AfwTestHarness/afw-test.props . Для успешного запуска жгута выполните следующие шаги:

  1. Настройте сеть Wi-Fi в afw-test.props со следующими свойствами:
    wifi_ssid
    wifi_password (optional)
    wifi_security_type (optional, available options are: NONE, WEP or WPA)
    
  2. Получите по крайней мере одну учетную запись из домена, привязанного к Test DPC в качестве контроллера политики устройства. Укажите детали в afw-test.props со следующими свойствами:
    work_account_username
    work_account_password
    

    AE Test Harness использует Test DPC для тестирования потоков подготовки, поэтому учетные записи должны быть привязаны к Test DPC для запуска тестового набора.

Создание тестовой системы AE

Инициализируйте конфигурацию сборки, используя:

source build/envsetup.sh
lunch

Выберите тип устройства и нажмите Enter .

Соберите обвязку, используя:

make afw-test-harness -j32

Это создает каталог ( out/host/linux-x86/afw-th/android-cts ) со всеми необходимыми двоичными файлами, файлами конфигурации и инструментами для запуска тестовой системы. Этот каталог также заархивирован в файл ( out/host/linux-x86/afw-th/android-afw-test-harness.zip ) для распространения.

Запуск тестового жгута AE

Выполните следующие действия, чтобы запустить тестовый жгут AE:

  1. В вашей среде сборки запустите средство запуска тестов, используя:
    afw-test-tradefed
    
    Это запустит консоль cts-tf , загрузит планы тестирования, тестовые примеры и afw-test.props из out/host/linux-x86/afw-th/android-cts .
  2. Из разархивированной папки android-afw-test-harness.zip запустите средство запуска тестов, используя:
    cts-tf> ./android‐cts/tools/afw-test‐tradefed
    
    Это загружает планы тестирования, тестовые примеры и afw-test.props из каталога android-cts . Убедитесь, что в ./android‐cts/repository/testcases/afw-test.props есть рабочая учетная запись и конфигурация Wi-Fi.
  3. Запустите план тестирования. Каждый план тестирования представляет собой XML-файл, содержащий набор тестовых пакетов из каталога тестовых пакетов AfwTestHarness/tests . Общие планы включают в себя:
    • afw-userdebug-build . Содержит все тестовые пакеты, требующие сборки userdebug.
    • afw-user-build . Запускается на пользовательской сборке, но требует правильной настройки тестового устройства, включая завершение начальной настройки и включение отладки по USB.

    Чтобы запустить план тестирования afw-userdebug-build , используйте:
    cts-tf> run cts --plan afw-userdebug-build
    
    . Чтобы просмотреть все планы тестирования, используйте команду list plans . Чтобы просмотреть определения планов, обратитесь к out/host/linux-x86/afw-th/android-cts/repository/plans .
  4. Запустите тестовый пакет. Чтобы запустить один тестовый пакет, используйте
    cts-tf> run cts --package com.android.afwtest.NfcProvisioning
    
    . Чтобы просмотреть все пакеты, используйте команду list packages . Чтобы получить дополнительные параметры, используйте команду run cts --help .

Отладка системы тестирования AE

Запускайте все команды в консоли afw-test-tradefed ( cts-tf ), которую можно запустить, запустив afw-test-tradefed .

  • Отобразите дополнительную информацию с помощью флагов -l INFO или -l DEBUG . Пример:
    cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG
    
  • Запустите тестовую обвязку на определенном устройстве с флагом -s . Пример:
    cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG -s device_sn
    
  • Запустите тестовую обвязку на всех подключенных устройствах с флагом --all-devices . Пример:
    cts-tf> run cts ‐‐plan afw-userdebug-build -l DEBUG --all-devices
    
  • Просмотрите текущие запущенные выполнения, используя list invocations или li .
  • Просмотрите сводку прошлых выполнений тестов, используя list results или lr .
  • Просмотрите другие команды list , используя help list .
  • Отслеживайте logcat в реальном времени с фильтром, используя afwtest , затем откройте другой терминал и запустите logcat, используя: adb logcat | grep afwtest . После завершения теста:
    • Просмотр журналов в out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time . Полный logcat устройства и журнал хоста ( afw-test-tradefed ) сохраняются в отдельных zip-файлах.
    • Найдите соответствующую информацию, выполнив поиск afwtest в logcat устройства. Пример: zless out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time /device_logcat_ random-number .zip | grep afwtest
    • Чтобы просмотреть полный журнал afw-test-tradefed, используйте: zless out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time /host_log_ random-number .zip
  • Тестовый пакет автоматизирует процесс подготовки предприятия, просматривая страницы пользовательского интерфейса и записывая журнал навигации в файл logcat устройства для каждой страницы. Пример: afwtest.AutomationDriver: Navigating:com.android.afwtest.uiautomator.pages.gms.AddAccountPage
    Страницы пользовательского интерфейса для тестового пакета com.android.afwtest.NfcProvisioning включают:
    • com.android.afwtest.uiautomator.pages.managedprovisioning.NfcProvisioningPage
    • com.android.afwtest.uiautomator.pages.PageSkipper
    • com.android.afwtest.uiautomator.pages.LandingPage
  • Если тест завершился неудачно во время процесса подготовки, logcat содержит ошибку, подобную:
    TestRunner: java.lang.RuntimeException: Failed to load page: com.android.afwtest.uiautomator.pages.packageinstaller.DeviceAccessPage
    
    Обычно это вызвано ошибками на предыдущей странице пользовательского интерфейса или на странице, которую не удалось загрузить, поэтому попробуйте найти другие сообщения об ошибках в logcat перед этой ошибкой. , затем попытайтесь воспроизвести его вручную, следуя процессу подготовки.
  • Если тестовый пакет не работает:
    • Скриншот сохраняется в out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time с использованием следующего синтаксиса: screenshot-test_ test_class_full_name _ test_case_name - random_number .png . Эта информация также регистрируется в журнале хоста.
    • Отчет об ошибке сохраняется в out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time как: bug- bug- test_class_full_name _ test_case_name - random_number .zip .
  • После выполнения всех тестовых пакетов делается снимок экрана и сохраняется в out/host/linux-x86/afw-th/android-cts/repository/logs/ start-time как: screenshot- random_number .png . Эта информация также регистрируется в журнале хоста.

Часто задаваемые вопросы

Могу ли я запустить план тестирования afw-userdebug-build на устройстве с пользовательской сборкой?

Нет. Тестовые пакеты в afw-userdebug-build сбрасывают тестовое устройство перед запуском фактического потока тестирования и требуют автоматического включения отладки adb . В пользовательской сборке отладку adb можно включить только вручную изменив настройку в параметрах разработчика.

Могу ли я запустить план тестирования afw-user-build на устройстве, на котором установлена ​​сборка userdebug?

Да, но мы рекомендуем запустить этот план тестирования на пользовательской сборке.

Иногда мой тест терпит неудачу, потому что загрузка пользовательского интерфейса занимает слишком много времени. Как я могу это исправить?

Настройте параметр timeout_size в ./android-cts/repository/testcases/afw-test.props . Допустимые настройки: S, M, L, XL, XXL.

Тестовый пакет com.android.afwtest.NfcProvisioning (или SuwDoProvisioning ) не работает на моем устройстве, потому что установленная начальная установка показывает настроенный пользовательский интерфейс (например, условия и положения) после завершения подготовки. Как я могу пропустить этот пользовательский интерфейс?

После процесса подготовки должен быть минимальный пользовательский интерфейс. Тестовая система автоматически пропустит такой пользовательский интерфейс, если в пользовательском интерфейсе есть кнопка с осмысленным текстом или описанием содержимого, которое содержит любое из следующих слов: Пропустить, Готово, Готово, Принять, Согласиться, Далее, Продолжить или Приступить. В качестве альтернативы вы можете определить кнопку в afw-test.props , чтобы настроить тестовую обвязку для пропуска вашего пользовательского интерфейса. Пример:

oem_widgets=your_btn
your_btn.text=your_customized_text
your_btn.package=your_package
your_btn.action=click

Чтобы определить несколько виджетов, разделите их запятыми.

Тестовый пакет com.android.afwtest.NfcProvisioning (или SuwDoProvisioning ) завершился неудачно, и последний экран пользовательского интерфейса — «Подтвердите свою учетную запись». Почему это происходит и как восстановить тестовое устройство?

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

Моему устройству требуется больше времени для сброса настроек. Могу ли я продлить тайм-аут сброса настроек?

Да. Настройте параметр factory_reset_timeout_min в afw-test.props . Допустимые настройки указаны в минутах; вы можете установить любое количество минут, которое работает с вашим устройством.