Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

В этом руководстве описывается, как запустить контрольно-измерительные приборы, тесты Robo или Game Loop с помощью интерфейса командной строки gcloud .

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

Прежде чем вы начнете

Если вы еще этого не сделали, добавьте Firebase в свой проект Android .

Шаг 1. Настройте интерфейс командной строки 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
    

Шаг 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 содержит версии операционной системы, поддерживаемые устройством.

    Пример вывода

    gcloud firebase test android models list output

  • models describe : Получите больше информации о конкретном Android MODEL_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 .

    Пример вывода

    gcloud android versions list

  • locales list : получить текущий список локалей, доступных для тестирования.

    gcloud firebase test android versions 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 не указано. Вы можете увидеть полный набор параметров командной строки для запуска тестов, набрав: 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

--type instrumentation является неявным, если тестовый APK был указан с --test . В качестве альтернативы указанию всех этих аргументов в командной строке вы можете дополнительно указать свои аргументы в файле аргументов в формате 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:

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

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

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

Command test results

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

Пользовательский логин и ввод текста с помощью Robo test

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.

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