В этом руководстве описывается, как запустить тест инструментирования, Robo или Game Loop с помощью интерфейса командной строки gcloud .
 Полный список команд gcloud , которые можно использовать с приложением Android в Test Lab , см. в справочной документации по gcloud firebase test android .
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой Android-проект .
Шаг 1. Настройте интерфейс командной строки gcloud
- Загрузите Google Cloud SDK
-  Убедитесь, что ваша установка обновлена: gcloud components update 
- Войдите в интерфейс командной строки gcloud, используя свою учетную запись Google: gcloud auth login 
- Настройте свой проект Firebase в gcloud, где PROJECT_ID — это идентификатор вашего проекта Firebase: gcloud config set project PROJECT_ID 
Сюда входит инструмент командной строки gcloud.
Шаг 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содержит версии операционной системы, поддерживаемые устройством.
 - Пример вывода  
-  Столбец 
- models describe: Получите дополнительную информацию о конкретном Android- MODEL_ID.- gcloud firebase test android models describe MODEL_ID- Выходные данные содержат информацию о марке модели устройства, производителе, версиях ОС, поддерживаемых уровнях API, поддерживаемых двоичных интерфейсах приложений (ABI), датах выпуска, а также о том, является ли устройство физическим или виртуальным. 
- versions list: получение списка доступных в настоящее время версий ОС для тестирования.- gcloud firebase test android versions list- Вы можете использовать идентификатор из любого из первых двух столбцов вывода команды ( - OS_VERSION_IDи- VERSION) для последующего тестирования версии ОС Android. Если вы не укажете версии ОС Android для тестирования, будет использовано значение по умолчанию, указанное в столбце- TAGS.- Пример вывода  
- locales list: получение текущего списка локалей, доступных для тестирования.- gcloud firebase test android versions list- Первый столбец вывода команды, - LOCALE, содержит идентификатор, который можно использовать в дальнейшем для тестирования локали. Если вы не укажете локали для тестирования, в качестве локали по умолчанию будет использоваться английский.
Шаг 3. Проведите тест.
 Теперь, когда вы знаете диапазон моделей устройств, локалей и версий ОС, доступных для тестирования вашего приложения, вы можете указать устройства с помощью команды gcloud firebase test android run и флага --device для запуска тестов Robo или инструментальных тестов.
Проведите роботизированный тест
Даже если у вас нет инструментальных тестов, вы всё равно можете искать ошибки в своём приложении. Используйте Robo-тест для автоматизированной проверки пользовательского интерфейса вашего приложения. 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 \ --client-details matrixLabel="Example matrix label"
-  Параметр --type roboподразумевается, если не указано значение--type.
-  Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase, вы можете использовать необязательный флаг --client-details matrixLabel="Example matrix label"для маркировки вашей тестовой матрицы.
-  Полный набор параметров командной строки для запуска тестов можно просмотреть, введя: gcloud help firebase test android run.
 В качестве альтернативы указанию этих аргументов в командной строке вы можете указать их в файле аргументов в формате YAML. Выполните команду gcloud topic arg-files чтобы узнать, как использовать эту функцию.
Чтобы узнать, как исследовать результаты теста Robo, см. раздел Анализ результатов теста .
Провести инструментальный тест
 Теперь используйте инструмент командной строки gcloud для запуска тестов Espresso приложения «Блокнот» на указанных конфигурациях устройств 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 --client-details matrixLabel="Example matrix label"
-  Параметр --typeinstrumentation подразумевается, если тестовый APK указан с помощью--test.
-  Чтобы помочь вам идентифицировать и найти ваши тестовые матрицы в консоли Firebase , вы можете использовать необязательный флаг --client-details matrixLabel="Example matrix label"для маркировки вашей тестовой матрицы.
-  Полный набор параметров командной строки для запуска тестов можно просмотреть, введя gcloud help firebase test android run.
 В качестве альтернативы указанию этих аргументов в командной строке вы можете указать их в файле аргументов в формате YAML. Выполните команду gcloud topic arg-files чтобы узнать, как использовать эту функцию.
 Интерфейс командной строки gcloud поддерживает Android Test Orchestrator . Для работы Orchestrator требуется AndroidJUnitRunner версии 1.1 или выше. Чтобы включить его, используйте gcloud firebase test android run с
 Флаг --use-orchestrator . Чтобы отключить его, используйте флаг --no-use-orchestrator .
 Вы также можете управлять тем, как Test Lab выполняет ваши инструментальные тесты, используя дополнительные флаги, не показанные выше. Например, можно использовать флаг --test-targets для тестирования отдельного класса или метода класса, используемого в вашем тестовом APK. Вы также можете узнать, был ли ваш тест, который провалился, нестабильным, используя флаг --num-flaky-test-attempts , который указывает количество повторных попыток выполнения теста, если один или несколько тестовых случаев по какой-либо причине завершились неудачей. Подробнее см. в статье gcloud firebase test android run . 
Отчеты о покрытии кода для инструментальных тестов
 Test Lab поддерживает инструменты отчётности о покрытии кода EMMA и JaCoCo . Если в сборку вашего приложения интегрирован какой-либо из этих инструментов, вы можете получить отчёт о покрытии кода для тестов Test Lab , выполнив gcloud firebase test android run с дополнительными аргументами. Если Android Test Orchestrator не включён, используйте следующее: 
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/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
Если вы создаете отчеты о покрытии кода, одновременно используя Android Test Orchestrator, измените переменные среды следующим образом:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
Когда Test Lab завершит выполнение тестов, найдите отчеты о покрытии кода в Google Cloud Storage :
-  Откройте ссылку на консоль Firebase , которую инструмент gcloudвывел над таблицей результатов теста в вашем терминале.
- Щелкните по выполнению теста из списка по этой ссылке, чтобы открыть страницу с подробностями этого выполнения.
- Нажмите Результаты теста , чтобы перейти в контейнер Cloud Storage с результатами теста данного выполнения.
-  Откройте artifacts/coverage.ecчтобы просмотреть отчет о покрытии кода.
Проанализируйте результаты вашего теста
Через несколько минут инструмент gcloud распечатает базовый отчет о результатах вашего теста:

Вывод теста командной строки также включает ссылку для просмотра результатов. Подробнее об интерпретации этих результатов см. в статье Анализ результатов Firebase Test Lab для Android .
Пользовательский вход в систему и ввод текста с помощью Robo-теста
 Тест 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.
- Флаги тестирования игрового цикла : набор флагов конфигурации, которые включают и управляют «демонстрационным режимом» для имитации действий игрока в игровых приложениях. Узнайте больше о запуске тестов игрового цикла с помощью Test Lab . 
- Флаг равномерного шардинга (в бета-версии) : флаг, определяющий количество шардов, на которые необходимо равномерно распределить тестовые случаи. Шарды запускаются параллельно на отдельных устройствах. 
- Флаг ручного шардинга (в бета-версии) : флаг, который определяет группу пакетов, классов и/или тестовых случаев для запуска в шарде (группу тестовых случаев). Шарды запускаются параллельно на отдельных устройствах. 
- Флаг профилей сетевого трафика (в бета-версии) : флаг, определяющий, какой сетевой профиль используется в тестах с физическими устройствами. Сетевые профили эмулируют различные условия работы сети, позволяя тестировать производительность приложения в ненадежных или непредсказуемых сетях. 
Написание команд 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 | Тестовая среда для выполнения этого теста не поддерживается из-за несовместимых размеров теста. Эта ошибка может возникнуть, если выбранный уровень API Android не поддерживается выбранным типом устройства. | 
| 19 | Тестовая матрица была отменена пользователем. | 
| 20 | Произошла ошибка тестовой инфраструктуры. |