В этом руководстве рассказывается, как запустить тест с инструментированием, автоматизированное тестирование или тест игрового цикла с помощью 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Вы можете использовать идентификатор из любого из первых двух столбцов выходных данных команды (
OS_VERSION_IDиVERSION), чтобы позже запустить тесты для версии ОС Android. Если вы не укажете версии ОС Android, для тестирования будут использоваться значения по умолчанию, указанные в столбцеTAGS.Пример выходных данных

locales list– получить текущий список языков, доступных для тестирования.gcloud firebase test android locales listПервый столбец в результате выполнения команды,
LOCALE, содержит идентификатор, который можно использовать для тестирования региональных настроек. Если вы не укажете, какие языки нужно проверить, по умолчанию будет использоваться английский.
Шаг 3. Как провести тестирование
Теперь, когда вы знаете, какие модели устройств, региональные настройки и версии ОС доступны для тестирования приложения, вы можете указать устройства с помощью команды 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 \ --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.
Чтобы узнать, как анализировать результаты автоматизированного тестирования, ознакомьтесь с разделом Как анализировать результаты тестирования.
Как запустить инструментальный тест
Теперь с помощью инструмента командной строки 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 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 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 тестирования…
Настраиваемый вход и ввод текста с помощью автоматизированного тестирования
Автоматизированное тестирование автоматически заполняет экраны входа, на которых для аутентификации используется аккаунт Google, если вы не используете параметр --no-auto-google-login. Также он может проходить через специальные экраны входа, используя учетные данные тестового аккаунта, которые вы предоставите. Вы также можете использовать этот параметр, чтобы передавать собственный текст для других текстовых полей, используемых в приложении.
Чтобы заполнить текстовые поля в приложении, используйте параметр --robo-directives и укажите список пар key-value, разделенных запятыми. В каждой паре key – это название ресурса Android целевого элемента интерфейса, а value – текстовая строка. С помощью этого флага можно также указать роботу игнорировать определенные элементы интерфейса, например кнопку выхода.
EditText
поддерживаются, но не текстовые поля в элементах интерфейса WebView.
Например, для параметра customlogin можно использовать следующий код:
--robo-directives username_resource=username,password_resource=password
Доступные команды и флаги
В Test Lab gcloud CLI есть несколько команд и флагов, которые позволяют выполнять тесты с разными спецификациями:
Флаг 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 | Произошла ошибка инфраструктуры тестирования. |