Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Начните тестирование с помощью gcloud CLI

Firebase Test Lab предоставляет облачную инфраструктуру для тестирования приложений Android, включая полную интеграцию с интерфейсом командной строки gcloud (CLI). В этом документе описана установка и настройка, необходимые для начала работы с Test Lab из интерфейса командной строки gcloud.

Полный список команд gcloud вы можете использовать со своим приложением для Android в Test Lab, см. В справочной документации по gcloud firebase test android .

Создать проект Firebase

Если у вас нет проекта Firebase для вашего приложения, перейдите в консоль Firebase и нажмите « Создать новый проект», чтобы создать его сейчас. Вам понадобятся права владения или редактирования в вашем проекте.

Вы можете использовать Test Lab для ограниченного числа ежедневных тестовых выполнений в планах Spark и Flame. Чтобы использовать Test Lab без ограничения суточной квоты, вы должны перейти на план Firebase Blaze.

Настройте CLI gcloud

  1. Загрузите Google Cloud SDK.
  2. Это включает в себя инструмент CLI gcloud.

  3. Убедитесь, что ваша установка обновлена:
    gcloud components update
    
  4. Войдите в CLI gcloud, используя свою учетную запись Google:
    gcloud auth login
    
  5. Установите ваш проект Firebase в gcloud, где PROJECT_ID - это идентификатор вашего проекта Firebase:
    gcloud config set project PROJECT_ID
    

Настройте свой тест

В этом примере вы проведете несколько тестов в простом приложении для заметок под названием «Блокнот».

  1. Загрузите двоичный файл APK для приложения «Блокнот» ( app-debug-unaligned.apk ) и соответствующие инструментальные тесты ( app-debug-test-unaligned.apk ), представленные в каталоге NotePad / app / build / output / apk / apk блокнота. ZIP

  2. Получите текущий список устройств Android, доступных для тестирования, следующим образом:

     
    $ gcloud firebase test android models list
     
    gcloud firebase test android models list output Первый столбец выходных данных команды, MODEL_ID , содержит идентификатор, который можно использовать позже для запуска тестов на конкретной модели. В столбце OS_VERSION_ID перечислены версии операционной системы, поддерживаемые этим устройством. Если вы не укажете, какие MODEL_ID (ы) проверять, используется значение по умолчанию, указанное в столбце TAGS .

  3. Узнайте больше о конкретном Android MODEL_ID с помощью команды firebase test android models describe MODEL_ID , как firebase test android models describe ниже:

     
    $ gcloud firebase test android models describe Nexus5
     
    Приведенный выше пример команды предоставляет подробную информацию о модели Nexus5 , включая марку, производителя и поддерживаемые уровни API, а также является ли модель физической или виртуальной.

  4. Получите текущий список версий ОС Android, доступных для тестирования:

     
    $ gcloud firebase test android versions list
     
    gcloud android versions list Вы можете использовать идентификатор из любого из первых двух столбцов вывода команды ( OS_VERSION_ID и VERSION ), чтобы позже запустить тесты для версии Android OS. Если вы не указываете версии ОС Android для тестирования, используется значение по умолчанию, указанное в столбце TAGS .

  5. Получите текущий список локалей, доступных для тестирования:

     
    $ gcloud firebase test android locales list
     
    Первый столбец выходных данных команды, LOCALE , содержит идентификатор, который вы можете использовать позже для запуска тестов для локали. Если вы не укажете локали для тестирования, в качестве локали по умолчанию используется английский. Вывод команды здесь не показан, потому что доступны сотни локалей.

Запуск тестов

Теперь, когда вы знаете диапазон моделей устройств, версий ОС и локалей, доступных для тестирования вашего приложения, вы можете использовать эту информацию для определения тестовых устройств с помощью команды gcloud firebase test android run и флага --device . Эта команда и флаг используются независимо от того, используете ли вы Robo-тест для автоматического тестирования вашего приложения, или же вы используете тесты инструментальных средств, написанные специально для тестирования вашего приложения.

Выполнение теста Robo

Даже если у вас нет инструментальных тестов, вы все равно можете искать ошибки в своем приложении. Используйте Robo-тест для автоматического просмотра пользовательского интерфейса вашего приложения. 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

Параметр --type robo является неявным, если не --type значение --type . Вы можете увидеть полный набор параметров командной строки для запуска тестов, набрав: gcloud help firebase test android run . В качестве альтернативы указанию всех этих аргументов в командной строке вы можете при желании указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files чтобы узнать, как использовать эту функцию.

См. Раздел « Анализ результатов вашего теста », чтобы узнать, как исследовать результаты теста из теста Robo.

Выполнение ваших контрольно-измерительных приборов

Теперь используйте gcloud командной строки gcloud для запуска тестов Espresso приложения Notepad на указанных вами конфигурациях устройств 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

--type instrumentation является неявным, если тестовый APK был указан с --test . В качестве альтернативы указанию всех этих аргументов в командной строке вы можете при желании указать свои аргументы в файле аргументов в формате YAML. Запустите gcloud topic arg-files чтобы узнать, как использовать эту функцию.

CLI gcloud поддерживает Android Test Orchestrator . Для Orchestrator требуется AndroidJUnitRunner v1.0 или выше. Чтобы включить его, используйте gcloud firebase test android run с
--use-orchestrator флаг. Чтобы отключить его, используйте флаг --no-use-orchestrator .

Примечание. Вы также можете контролировать, как Test Lab выполняет ваши тесты инструментов, используя дополнительные флаги, которые не показаны выше. Например, вы можете использовать флаг --test-targets для тестирования отдельного класса или метода класса, используемого вашим тестовым APK. Вы также можете узнать, был ли ваш тест, который не удался, действительно ненадежным или нет, с помощью флага '--num-flaky-test-попытки', который определяет количество повторных попыток выполнения теста, если один или несколько из его контрольные примеры не проходят по любой причине. Чтобы узнать больше, смотрите gcloud firebase test android run .

Отчеты о покрытии кода для контрольно-измерительных приборов

Test Lab поддерживает инструменты отчетности покрытия кода EMMA и JaCoCo . Если у вас есть какой-либо инструмент, интегрированный в сборку для вашего приложения, вы можете получить отчет о покрытии кода для тестов Test Lab, выполнив команду gcloud firebase test android run со следующими аргументами:

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/coverage.ec" \
  --directories-to-pull /sdcard

Когда Test Lab завершит выполнение ваших тестов, найдите отчеты о покрытии кода в Google Cloud Storage:

  1. Откройте ссылку консоли Firebase, gcloud инструмент gcloud напечатал над таблицей результатов теста в вашем терминале.
  2. Щелкните по выполнению теста в списке по этой ссылке, чтобы открыть страницу сведений о выполнении.
  3. Нажмите Результаты теста, чтобы перейти в корзину Google Cloud Storage с результатами теста этого выполнения.
  4. Откройте artifacts/coverage.ec чтобы увидеть отчет о покрытии кода.

Проанализируйте результаты своего теста

Через несколько минут основной отчет о результатах вашего теста будет напечатан инструментом gcloud:

Command test results

Вывод вашего тестового прогона командной строки также содержит ссылку для просмотра результатов теста. Чтобы узнать больше о том, как интерпретировать эти результаты, см. Анализ лаборатории тестирования Firebase для результатов Android .

Пользовательский логин и текстовый ввод с тестом Robo

Robo test автоматически завершает экраны входа, которые используют учетную запись Google для аутентификации, если вы не используете параметр --no-auto-google-login . Он также может заполнять пользовательские экраны входа в систему, используя предоставленные вами учетные данные тестовой учетной записи. Вы также можете использовать этот параметр для предоставления пользовательского ввода текста для других текстовых полей, используемых вашим приложением.

Чтобы заполнить текстовые поля в вашем приложении, используйте параметр --robo-directives и предоставьте разделенный запятыми список пар key-value , где key - это имя ресурса Android целевого элемента пользовательского интерфейса, а value - текстовая строка. , Вы также можете использовать этот флаг, чтобы сказать Robo игнорировать определенные элементы пользовательского интерфейса (например, кнопку «Выход из системы»). Поля EditText поддерживаются, но не текстовые поля в WebView пользовательского интерфейса WebView .

Например, вы можете использовать следующий параметр для пользовательского входа в систему:

 --robo-directives username_resource=username,password_resource=password
 

Доступные команды и флаги

В CLI Test Lab gcloud есть несколько команд и флагов, которые позволяют запускать тесты с различными спецификациями:

  • Флаг Android Test Orchestrator : флаг для включения Orchestrator, инструмента, который позволяет вам запускать каждый из тестов вашего приложения в отдельном вызове Instrumentation . Тестовая лаборатория всегда запускает последнюю версию Orchestrator.

  • Флаги тестирования Game Loop : набор флагов конфигурации, которые включают и управляют «демонстрационным режимом» для имитации действий игрока в игровых приложениях. Узнайте больше о проведении тестов 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 Произошла ошибка тестовой инфраструктуры.