Catch up on highlights from Firebase at Google I/O 2023. Learn more

Протестируйте с помощью 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 устройства), замените dimension models , versions или locales в следующей команде:

    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=11.3

    Чтобы помочь вам идентифицировать и найти свои тестовые матрицы в консоли 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-файле нет ресурсов, содержащих прямые ссылки на идентификатор пакета приложения.

Всплывающее уведомление

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

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

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

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

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

Флаги для тестов Game Loop
--type

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

--app

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

--scenario-numbers

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

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

--device-model

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

--timeout

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

Например:

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

Например, следующая команда запускает тест Game Loop, который выполняет циклы 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

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

Шаг 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 не смогла определить, прошла ли тестовая матрица или нет, из-за непредвиденной ошибки.
19 Тестовая матрица была отменена пользователем.
20 Произошла ошибка тестовой инфраструктуры.

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

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

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

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