Тестирование с помощью Google Cloud CLI

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

Шаг 1 : Настройте локальную среду Google Cloud SDK

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

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

Шаг 2 : Проведите тест

Запустить XCTest

  1. Загрузите .zip-файл вашего теста, выполнив следующую команду (если вы еще не упаковали свое приложение, см. раздел Упаковка XCTest ):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. Выберите параметры теста.

    Test Lab позволяет запускать тесты на различных версиях iOS, устройствах, ориентациях экрана и локальных настройках. Эти конфигурации называются измерениями теста. Чтобы увидеть параметры для каждого измерения (например, поддерживаемые версии Xcode для версии iOS устройства), замените models , versions или locales на dimension в следующей команде:

    gcloud firebase test ios dimension list

    Ориентация экрана несколько проще, поскольку доступны только portrait и landscape ориентация.

    Просмотрите список тестовых параметров и выберите несколько комбинаций, которые вы хотите протестировать. Чтобы узнать максимальное количество комбинаций, которые вы можете запустить в день, посетите раздел «Тарифные планы» .

  3. Выбрав набор тестовых измерений, вы можете запустить тесты Test Lab с помощью команды firebase test ios run . Для каждой комбинации тестовых измерений, которые вы хотите использовать, добавьте отдельный флаг --device :

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    Ваш тест может завершиться неудачей из-за несовместимости версии Xcode, в которой он был создан, и версии Xcode по умолчанию, используемой Test Lab . Чтобы указать поддерживаемую версию Xcode для вашего теста, используйте флаг --xcode-version :

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    Чтобы вам было проще идентифицировать и находить тестовые матрицы в консоли Firebase , вы можете дополнительно пометить свою тестовую матрицу с помощью флага --client-details matrixLabel="<label>" в следующем примере:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

Специальные права на тестирование

Чтобы протестировать разрешения, требующие явного идентификатора приложения, можно установить флаг --test-special-entitlements . Test Lab переподписывает приложение с новым идентификатором пакета для поддержки специальных разрешений, поэтому убедитесь, что в вашем ZIP-файле нет ресурсов, содержащих прямые ссылки на идентификатор пакета приложения.

Поддерживаемые права:
  1. Push-уведомления apns-environment
  2. Персональный VPN com.apple.developer.networking.vpn.api
Push-уведомления

Для авторизации push-уведомлений пользователи могут создавать веб-токены JSON, используя закрытый ключ подписи , идентификатор ключа ( C7FD9DJAA8) и идентификатор команды ( 9CKCGNNUQN) . Сгенерированные токены будут действительны в течение одного часа и должны обновляться каждые 60 минут. Подробнее см. в статье «Установка подключения к точкам доступа на основе токенов».

Группы приложений

Идентификаторы групп приложений уникальны. Это означает, что при повторной подписи пользовательских приложений мы можем использовать только тот идентификатор группы приложений, который связан с учётной записью разработчика Test Lab . Если ваш тест использует группы приложений, он завершится неудачей.

Запустить тест игрового цикла

Запустите команду gcloud beta firebase test ios run и используйте следующие флаги для настройки запуска:

Флаги для тестов игрового цикла
--type

Обязательно : указывает тип теста iOS, который вы хотите запустить. Можно указать типы тестов xctest (по умолчанию) или game-loop .

--app

Обязательно : абсолютный путь (GCS или файловая система) к IPA-файлу вашего приложения. Этот флаг действителен только при запуске тестов игрового цикла.

--scenario-numbers

Циклы (или сценарии), которые вы хотите запустить в приложении. Вы можете указать один цикл, список циклов или диапазон циклов. Цикл по умолчанию — 1.

Например, --scenario-numbers=1-3,5 запускает циклы 1, 2, 3 и 5.

--device-model

Физическое устройство, на котором вы хотите запустить тест (узнайте, какие доступные устройства вы можете использовать).

--timeout

Максимальная продолжительность выполнения теста. Вы можете ввести целое число, чтобы обозначить продолжительность в секундах, или целое число и перечисление, чтобы обозначить продолжительность в более длительной единице времени.

Например:

  • --timeout=200 принудительно завершает тест, если время его выполнения достигает 200 секунд.
  • --timeout=1h принудительно завершает тест по истечении часа.

Например, следующая команда запускает тест игрового цикла, который выполняет циклы 1, 4, 6, 7 и 8 на iPhone 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

Дополнительную информацию о gcloud CLI см. в справочной документации .

Шаг 3 (необязательно) : автоматизируйте будущие тесты, которые вы создаете

Написание команд gcloud с помощью Test Lab

Вы можете использовать скрипты оболочки или пакетные файлы для автоматизации команд тестирования мобильных приложений, которые в противном случае выполнялись бы через командную строку gcloud. Этот пример bash-скрипта запускает XCTest с двухминутным тайм-аутом и сообщает, успешно ли выполнен тест:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

Коды выхода скрипта

Test Lab предоставляет несколько кодов выхода, которые можно использовать для лучшего понимания результатов тестов, запускаемых с использованием скриптов или пакетных файлов.

Код выхода Примечания
0 Все тестовые испытания прошли успешно.
1 Произошла общая ошибка. Возможные причины: несуществующее имя файла или ошибка HTTP/сети.
2 Тестирование прекращено, поскольку были предоставлены неизвестные команды или аргументы.
10 Один или несколько тестовых случаев (тестируемых классов или методов класса) в ходе выполнения теста не пройдены.
15 Из-за непредвиденной ошибки Firebase Test Lab не удалось определить, прошла ли тестовая матрица успешно или нет.
19 Тестовая матрица была отменена пользователем.
20 Произошла ошибка тестовой инфраструктуры.

Шаг 4 : Изучите результаты теста

После запуска теста вы получите ссылку на страницу с результатами теста . Выполнение теста может занять несколько минут в зависимости от количества выбранных вами конфигураций и установленного времени ожидания. После завершения теста вы можете просмотреть его результаты. Подробнее об интерпретации результатов теста см. в статье «Анализ результатов Firebase Test Lab .

Следующий шаг

Ознакомьтесь с документацией Google Cloud SDK, чтобы изучить общедоступные или находящиеся в стадии бета- тестирования варианты тестирования.