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

В этом руководстве описано, как запустить тест XCTest или тест игрового цикла с помощью интерфейса командной строки 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 lets you run tests on a variety of iOS versions, devices, screen orientations, and locales. These configurations are known as the test's test dimensions . To see the options for each dimension (eg, supported Xcode versions for the device's iOS version), substitute models , versions , or locales for dimension in the following command:

    gcloud firebase test ios dimension list

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

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

  3. Once you've chosen a set of test dimensions, you can have Test Lab run your tests using the firebase test ios run command. For each combination of test dimensions you'd like to test on, include a separate --device flag:

    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...

    It is possible that your test will fail due to an incompatibility between the Xcode version with which the test was built and the default Xcode version used by Test Lab . To specify a supported Xcode version for your test, use the --xcode-version flag:

    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

    To help you identify and locate your test matrices in the Firebase console, you can optionally label your test matrix using the --client-details matrixLabel="<label>" flag in the following example:

    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"

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

To test entitlements that require an explicit App ID, you can do so by setting the --test-special-entitlements flag. Test Lab re-signs the application with a new bundle-identifier to support special entitlements, so make sure there are no resources in your zip file containing direct references to the app's bundle identifier.

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

For authorizing push notification requests, users can create JSON web tokens by using the private signing key along with the Key ID - C7FD9DJAA8 and the Team ID - 9CKCGNNUQN . The generated tokens would be valid for one hour and need to be refreshed every 60mins. Read more on Establishing a Token-Based Connection to APNs.

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

App group IDs are universally unique. This means that when we re-sign user apps, we can only use the app group ID that is associated with the Test Lab developer account. If your test relies on app groups, your test will fail.

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

Выполните команду ` 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

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

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

Создание скриптов для команд gcloud с помощью Test Lab

You can use shell scripts or batch files to automate mobile app testing commands that you would otherwise run using the gcloud command line. This sample bash script runs an XCTest with a two-minute timeout, and reports if the test run completed successfully:

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 : Изучение результатов анализов

When the test starts, you receive a link to the Test Results page. Tests can take a number of minutes to run, depending on the number of different configurations you have selected and the test timeout duration set for your tests. After your tests have run, you can review test results. See Analyzing Firebase Test Lab Results to learn more about how to interpret your test results.

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

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