В этом руководстве описано, как запустить инструментальный тест, автоматизированное тестирование или игровой цикл с помощью gcloud CLI.
Полный список команд gcloud, которые можно использовать с приложением Android в Test Lab, приведен в справочной документации по gcloud firebase test android.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект для Android.
1. Как настроить gcloud CLI
- Скачайте Google Cloud SDK.
- Убедитесь, что у вас установлена последняя версия:
gcloud components update
- Войдите в gcloud CLI, используя аккаунт Google:
gcloud auth login
- Укажите проект Firebase в gcloud, где PROJECT_ID – это идентификатор проекта Firebase:
gcloud config set project PROJECT_ID
в том числе инструмент gcloud CLI.
Шаг 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– получить дополнительную информацию об определенном устройстве AndroidMODEL_ID.gcloud firebase test android models describe MODEL_IDВ выходных данных содержатся сведения о бренде, производителе, версиях ОС, поддерживаемых уровнях API, поддерживаемых двоичных интерфейсах приложений (ABI), датах выпуска, а также о том, является ли устройство физическим или виртуальным.
versions list– получить список доступных для тестирования версий ОС.gcloud firebase test android versions listЧтобы запустить тесты для определенной версии ОС Android, можно использовать идентификатор из первого или второго столбца (
OS_VERSION_IDилиVERSION). Если вы не укажете версии ОС Android, на которых нужно выполнить тестирование, будут использоваться версии по умолчанию, указанные в столбцеTAGS.Пример выходных данных

locales list– получить текущий список региональных настроек, доступных для тестирования.gcloud firebase test android locales listПервый столбец результата выполнения команды,
LOCALE, содержит идентификатор, который можно использовать для запуска тестов в определенном регионе. Если вы не укажете региональные настройки, по умолчанию будет использоваться английский язык.
Шаг 3. Запустите тест
Теперь, когда вы знаете, какие модели устройств, региональные настройки и версии ОС доступны для тестирования приложения, вы можете указать устройства с помощью команды gcloud firebase test android run и флага --device, чтобы запустить автоматизированное тестирование или инструментальные тесты.
Запуск автоматизированного тестирования
Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в приложении. Используйте автоматизированное тестирование, чтобы проверить пользовательский интерфейс приложения. При автоматизированном тестировании выполняется статический анализ различных путей в пользовательском интерфейсе приложения, а затем сканирование приложения для поиска сбоев и других потенциальных проблем.
Чтобы запустить автоматизированное тестирование, выполните следующую команду:
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не указано, параметр--type roboявляется неявным. - Чтобы вам было проще находить матрицы тестов в консоли Firebase, вы можете пометить их с помощью необязательного флага
--client-details matrixLabel="Example matrix label". - Чтобы посмотреть полный список параметров командной строки для запуска тестов, введите
gcloud help firebase test android run.
Вместо того чтобы указывать эти аргументы в командной строке, вы можете указать их в файле аргументов в формате YAML. Чтобы узнать, как использовать эту функцию, выполните команду gcloud topic arg-files.
Подробнее о том, как анализировать результаты автоматизированного тестирования…
Как запустить инструментальный тест
Теперь используйте инструмент командной строки gcloud, чтобы запустить тесты Espresso приложения Notepad на указанных конфигурациях устройств Android. Чтобы запустить тесты в app-debug-test-unaligned.apk, используйте тип теста instrumentation:
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"
- Параметр инструментирования
--typeявляется неявным, если тестовый APK указан с помощью--test. - Чтобы вам было проще находить матрицы тестов в консоли Firebase, вы можете помечать их с помощью необязательного флага
--client-details matrixLabel="Example matrix label". - Чтобы посмотреть полный список параметров командной строки для запуска тестов, введите
gcloud help firebase test android run.
Вместо того чтобы указывать эти аргументы в командной строке, вы можете указать их в файле аргументов в формате YAML. Чтобы узнать, как использовать эту функцию, выполните команду gcloud topic arg-files.
gcloud CLI поддерживает инструмент оркестрации тестов Android.
Для работы 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 не включен, используйте следующий код:
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, измените переменные среды следующим образом:
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.
Собственные учетные данные и ввод текста при автоматизированном тестировании
Автоматизированное тестирование автоматически проходит экраны входа, на которых для аутентификации используется аккаунт 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 CLI есть несколько команд и флагов, которые позволяют запускать тесты с разными спецификациями:
Флаг Инструмента оркестрации тестов Android. Флаг, позволяющий включить Инструмент оркестрации тестов, который позволяет запускать каждый тест приложения в отдельном вызове
Instrumentation. Test Lab всегда запускает последнюю версию Orchestrator.Тестовые флаги игрового цикла. Набор флагов конфигурации, которые включают деморежим и управляют им, чтобы имитировать действия игрока в мобильных играх. Подробнее о том, как проводить тестирование игрового цикла с помощью Test Lab…
Uniform Sharding flag (бета-версия). Флаг, который указывает, на сколько сегментов нужно равномерно распределить отчеты о тестировании. Фрагменты выполняются параллельно на разных устройствах.
Флаг Manual 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 | Произошла ошибка инфраструктуры тестирования. |