В этом руководстве описывается, как запустить тест инструментария, робота или игрового цикла с помощью интерфейса командной строки 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
Сюда входит инструмент CLI 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), даты выпуска, а также то, является ли устройство физическим или виртуальным.
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 или инструментальных тестов.
Запустите роботизированный тест
Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в своем приложении. Используйте робот-тест, чтобы выполнить автоматическую проверку пользовательского интерфейса вашего приложения. Робо-тест проверяет приложение, выполняя статический анализ различных путей через пользовательский интерфейс приложения, а затем просматривая приложение в поисках сбоев и других потенциальных проблем.
Чтобы запустить роботизированный тест, выполните следующий пример команды:
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 поддерживает 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-теста
Робо-тест автоматически завершает экраны входа, в которых для аутентификации используется учетная запись 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 с помощью 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 | Тестовая среда для выполнения этого теста не поддерживается из-за несовместимости измерений теста. Эта ошибка может возникнуть, если выбранный уровень Android API не поддерживается выбранным типом устройства. |
19 | Тестовая матрица была отменена пользователем. |
20 | Произошла ошибка тестовой инфраструктуры. |