В этом руководстве описано, как запустить инструментальный тест, тест робота или игровой цикл с помощью интерфейса командной строки 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: Получите дополнительную информацию о конкретном AndroidMODEL_ID.gcloud firebase test android models describe MODEL_IDВ выходных данных содержится информация о модели устройства: марка, производитель, версии ОС, поддерживаемые уровни API, поддерживаемые интерфейсы ABI (Application Binary Interfaces), даты выпуска, а также информация о том, является ли устройство физическим или виртуальным.
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 для запуска тестов Robo или инструментальных тестов.
Проведите тестирование робота
Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в своем приложении. Используйте Robo Test для автоматической проверки пользовательского интерфейса вашего приложения. Robo Test проверяет приложение, выполняя статический анализ различных путей взаимодействия с пользовательским интерфейсом, а затем сканирует приложение, чтобы найти сбои и другие потенциальные проблемы.
Для запуска теста робота выполните следующую команду (пример):
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"
- Параметр инструментирования
--typeподразумевается, если тестовый 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 Test автоматически завершает экраны входа в систему, использующие учетную запись Google для аутентификации, если вы не используете параметр --no-auto-google-login . Он также может завершать пользовательские экраны входа в систему, используя предоставленные вами учетные данные тестовой учетной записи. Вы также можете использовать этот параметр для указания пользовательского текста для других текстовых полей, используемых вашим приложением.
Для заполнения текстовых полей в вашем приложении используйте параметр --robo-directives и укажите список пар key-value , разделенных запятыми, где key — это имя ресурса Android целевого элемента пользовательского интерфейса, а value — текстовая строка. Вы также можете использовать этот флаг, чтобы указать Robo игнорировать определенные элементы пользовательского интерфейса (например, кнопку "выход"). Поддерживаются поля EditText , но не текстовые поля в элементах пользовательского интерфейса WebView .
Например, для пользовательской авторизации можно использовать следующий параметр:
--robo-directives username_resource=username,password_resource=password
Доступные команды и флаги
В интерфейсе командной строки gcloud Test Lab доступно несколько команд и флагов, позволяющих запускать тесты с различными параметрами:
Флаг 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 | Произошла ошибка в тестовой инфраструктуре. |