Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Начните тестирование с помощью интерфейса командной строки gcloud

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

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

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

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

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

Настройте интерфейс командной строки gcloud

  1. Загрузите Google Cloud SDK.
  2. Сюда входит инструмент командной строки gcloud.

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

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

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

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

    
    $ 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. Если вы не укажете версии ОС Android для тестирования, будет использоваться значение по умолчанию, указанное в столбце TAGS .

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

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

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

Теперь, когда вы знаете диапазон моделей устройств, версий ОС и локалей, доступных для использования при тестировании приложения, вы можете использовать эту информацию для указания тестовых устройств с помощью команды 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

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

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

Проведение ваших инструментальных тестов

Теперь используйте 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 чтобы узнать, как использовать эту функцию.

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

Примечание. Вы также можете управлять тем, как Test Lab запускает ваши инструментальные тесты, с помощью дополнительных флагов, которые не показаны выше. Например, вы можете использовать флаг --test-targets для тестирования одного класса или метода класса, используемого вашим тестовым APK. Вы также можете узнать, действительно ли ваш тест, который не прошел, был нестабильным или нет, используя флаг --num-flaky-test-plays ', который указывает, сколько раз следует повторить попытку выполнения теста, если один или несколько из его тестовые примеры терпят неудачу по любой причине. Чтобы узнать больше, см. 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 Test

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

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

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

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

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

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

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

  • Флаги теста Game Loop : набор флагов конфигурации, которые включают и управляют «демонстрационным режимом» для имитации действий игрока в игровых приложениях. Узнайте больше о запуске тестов Game Loop с помощью Test Lab .

  • Флаг Uniform 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 не смогла определить, пройдена ли матрица тестирования или нет, из-за непредвиденной ошибки.
18 Тестовая среда для выполнения этого теста не поддерживается из-за несовместимых размеров теста. Эта ошибка может возникнуть, если выбранный уровень Android API не поддерживается выбранным типом устройства.
19 Тестовая матрица была отменена пользователем.
20 Произошла ошибка тестовой инфраструктуры.