Начните тестирование с помощью интерфейса командной строки gcloud

Это руководство описывает , как запустить инструментарий, тест Robo, или Game Loop с помощью CLI gcloud .

Для получения полного списка gcloud команд , которые вы можете использовать с Android приложения в лаборатории тестирования, посетите справочную документацию для gcloud firebase test android .

Прежде чем вы начнете

Если вы еще не сделали, добавить Firebase в свой Android проекта .

Шаг 1. Настройте интерфейс командной строки gcloud.

  1. Загрузите Google Cloud SDK.
  2. Сюда входит инструмент командной строки gcloud.

  3. Убедитесь , что установка уточненный:
    gcloud components update
    
  4. Войти в CLI gcloud , используя учетную запись Google:
    gcloud auth login
    
  5. Установите проект Firebase в gcloud, где PROJECT_ID является ID вашего Firebase проекта:
    gcloud config set project PROJECT_ID
    

Шаг 2. Проверьте доступные тестовые устройства.

Используйте следующие команды gcloud, чтобы просмотреть тестовые устройства и языковые стандарты, доступные для вашего теста.

Как вариант, вы можете также загрузить образец приложение Блокнот для запуска команд сразу. Используйте двоичный файл app-debug-unaligned.apk файл и инструментальные тесты app-debug-test-unaligned.apk , которые расположены в NotePad/app/build/outputs/apk/ .

  • models list : Получить текущий список устройств Android , доступных для тестирования против.

    gcloud firebase test android models list
    

    В выводе команды:

    • Колонка MODEL_ID содержит идентификатор, который позже можно использовать для выполнения тестов на модели устройства.
    • Колонка OS_VERSION_ID содержит операционную систему версии , поддерживаемые устройством.

    Пример вывода

    gcloud firebase test android models list output

  • models describe : Получить более подробную информацию о конкретных Android MODEL_ID .

    gcloud firebase test android models describe MODEL_ID
    

    Выходные данные содержат марку модели устройства, производителя, версии ОС, поддерживаемые уровни API, даты выпуска и то, является ли устройство физическим или виртуальным.

  • versions list : Получить список доступных в настоящее время версии ОС для тестирования против.

    gcloud firebase test android versions list
    

    Вы можете использовать идентификатор из одного из первых двух столбцов вывода команды ( OS_VERSION_ID и VERSION ), чтобы потом запускать тесты против версии Android OS. Если вы не указали версии Android OS для тестирования против, по умолчанию отмечено под TAGS используется столбец.

    Пример вывода

    gcloud android versions list

  • locales list : Получить текущий список локалей , доступных для тестирования против.

    gcloud firebase test android versions list
    

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

Запуск тестов

Теперь, когда вы знаете диапазон моделей устройств, локали и версия ОС , доступной для тестирования вашего приложения, вы можете указать устройства , использующих gcloud firebase test android run команду и --device флага для запуска Robo или инструментальных тестов.

Запуск робо-теста

Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в своем приложении. Используйте Robo-тест для автоматической проверки пользовательского интерфейса вашего приложения. Робо-тест проверяет приложение, выполняя статический анализ различных путей через пользовательский интерфейс приложения, а затем просматривая приложение, чтобы найти сбои и другие потенциальные проблемы.

Начнем с выполнения примера команды:

gcloud firebase test android run \
  --type robo \
  --app app-debug-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape \
  --timeout 90s

--type robo параметр подразумевается , если нет --type не указано значение. Вы можете увидеть полный набор параметров командной строки для запуска тестов с помощью набора текста: gcloud help firebase test android run . В качестве альтернативы указанию всех этих аргументов в командной строке вы можете дополнительно указать свои аргументы в файле аргументов в формате YAML. Run gcloud topic arg-files , чтобы узнать , как использовать эту функцию.

См Проанализируйте результаты тестирования раздел , чтобы узнать , как исследовать результаты тестирования из теста Robo.

Проведение ваших инструментальных тестов

Теперь используйте gcloud инструмент командной строки для запуска блокнота приложения в Эспрессо испытаниях ваших заданных конфигураций Android устройств, с помощью instrumentation типа теста для запуска тестов в app-debug-test-unaligned.apk следующим образом :

gcloud firebase test android run \
  --type instrumentation \
  --app app-debug-unaligned.apk \
  --test app-debug-test-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape

--type instrumentation параметр неявный , если тест APK был указан с --test . В качестве альтернативы указанию всех этих аргументов в командной строке вы можете дополнительно указать свои аргументы в файле аргументов в формате YAML. Run gcloud topic arg-files , чтобы узнать , как использовать эту функцию.

CLI gcloud поддерживает Android Test Orchestrator . Для Orchestrator требуется AndroidJUnitRunner v1.0 или выше. Чтобы включить ее, используйте gcloud firebase test android run с
--use-orchestrator флаг. Для того, чтобы отключить его использовать --no-use-orchestrator флаг.

Примечание: Вы также можете контролировать Lab Test запускает тесты измерительных приборов с использованием дополнительных флагов, которые не указаны выше. Например, вы можете использовать --test-targets флаг , чтобы проверить один класс или метод класса , используемый тестовой APK. Вы также можете узнать, был ли ваш тест, который не прошел, на самом деле нестабильным или нет, используя флаг --num-flaky-test-plays ', который указывает, сколько раз следует повторить попытку выполнения теста, если один или несколько из его тестовые примеры терпят неудачу по любой причине. Чтобы узнать больше, см gcloud тест firebase андроид бег .

Отчеты о покрытии кода для инструментальных тестов

Лабораторные испытания поддерживает покрытие кода отчетности инструменты EMMA и JaCoCo . Если у вас есть либо инструмент , интегрированный в сборку для вашего приложения, вы можете получить отчет покрытия кода для испытаний Test Lab, запустив gcloud firebase test android run команды со следующими параметрами:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" \
  --directories-to-pull /sdcard

Когда Test Lab завершит выполнение ваших тестов, найдите отчеты о покрытии кода в Google Cloud Storage:

  1. Откройте консоль ссылку Firebase что gcloud инструмент напечатанный над таблицей результатов испытания в терминале.
  2. Щелкните выполнение теста из списка по этой ссылке, чтобы открыть страницу сведений о выполнении.
  3. Нажмите Результаты тестов , чтобы перейти к ковшу Cloud Storage с результатами тестирования , что выполнение в.
  4. Открытые artifacts/coverage.ec посмотреть отчет покрытия кода.

Проанализируйте результаты ваших тестов

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

Command test results

Выходные данные вашего тестового запуска командной строки также включают ссылку для просмотра результатов теста. Чтобы узнать больше о том , как интерпретировать эти результаты, см Проанализировав Lab Test Firebase для результатов Android .

Пользовательский логин и ввод текста с помощью Robo Test

Тест Robo автоматически завершает вход в экранах , которые используют учетную запись Google для аутентификации, если вы не используете --no-auto-google-login параметра. Он также может заполнять настраиваемые экраны входа в систему с использованием предоставленных вами учетных данных тестовой учетной записи. Вы также можете использовать этот параметр для предоставления настраиваемого текста ввода для других текстовых полей, используемых вашим приложением.

Для полных текстовых полей в вашем приложении, используйте --robo-directives параметр и обеспечивают разделенные запятыми список key-value пара, где key этого имя Android ресурса элемента целевого пользовательского интерфейса, а value является текстовой строкой . Вы также можете использовать этот флаг, чтобы указать Robo игнорировать определенные элементы пользовательского интерфейса (например, кнопку «выйти из системы»). EditText поля поддерживаются , но не текстовые поля в WebView элементов пользовательского интерфейса.

Например, вы можете использовать следующий параметр для пользовательского входа в систему:

--robo-directives username_resource=username,password_resource=password

Доступные команды и флаги

В интерфейсе командной строки Test Lab gcloud есть несколько доступных команд и флагов, которые позволяют запускать тесты с различными спецификациями:

  • Android Test Orchestrator флаг : флаг , чтобы включить Orchestrator, инструмент , который позволяет запускать каждый из тестов вашего приложения в своем вызове Instrumentation . Test Lab всегда использует последнюю версию Orchestrator.

  • Тестовые флаги Game Loop : Набор конфигурации флагов , которые позволяют и контролировать «демонстрационный режим» для имитации действий игроков в игровых приложениях. Узнайте больше о запуске тестов Game Loop с Лабораторией тестирования .

  • Равномерное Sharding флаг (в бета - версии) : флаг А, задающее количество черепков , на которые вы хотите , чтобы равномерно распределить тестовые случаи. Осколки запускаются параллельно на разных устройствах.

  • Руководство Sharding флаг (в бета - версии) : Флаг , который определяет группу пакеты, классы и / или тестовых работать в осколке (группа тестов). Осколки запускаются параллельно на разных устройствах.

  • Сетевые профили трафика флаг (в бета - версии) : флаг , который указывает , какой сетевой профиль тесты использовать с физическими устройствами. Сетевые профили имитируют различные сетевые условия, позволяя вам тестировать производительность вашего приложения в ненадежных или непредсказуемых сетях.

Создание сценариев команд gcloud с помощью Test Lab

Вы можете использовать сценарии оболочки или пакетные файлы для автоматизации команд тестирования мобильных приложений, которые в противном случае вы бы запускали с помощью командной строки gcloud. Следующий пример сценария bash запускает инструментальный тест с двухминутным таймаутом и сообщает, успешно ли завершился тест:

if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

Коды выхода скрипта

Test Lab предоставляет несколько кодов выхода, которые можно использовать, чтобы лучше понять результаты тестов, запускаемых с использованием сценариев или пакетных файлов.

Коды завершения сценария для Test Lab

Код выхода Примечания
0 Все тестовые исполнения пройдены.
1 Произошел общий сбой. Возможные причины: несуществующее имя файла или ошибка HTTP / сети.
2 Тестирование завершено, поскольку были предоставлены неизвестные команды или аргументы.
10 Один или несколько тестовых примеров (проверенные классы или методы классов) в ходе выполнения теста не прошли.
15 Лаборатория Firebase Test Lab не смогла определить, прошла или не прошла тестовая матрица из-за непредвиденной ошибки.
18 Тестовая среда для выполнения этого теста не поддерживается из-за несовместимых размеров теста. Эта ошибка может возникнуть, если выбранный уровень Android API не поддерживается выбранным типом устройства.
19 Тестовая матрица была отменена пользователем.
20 Произошла ошибка тестовой инфраструктуры.