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

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

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

  1. Скачайте Google Cloud SDK.
  2. в том числе инструмент командной строки gcloud CLI.

  3. Убедитесь, что у вас установлена последняя версия тега и в нем есть команда gcloud firebase:
          gcloud components update
  4. Войдите в gcloud CLI, используя аккаунт 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. Выбрав набор тестовых параметров, вы можете запустить тестирование с помощью команды firebase test ios run.Test Lab Для каждой комбинации параметров тестирования, которую вы хотите проверить, добавьте отдельный флаг --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 Web Token, используя закрытый ключ подписи, а также идентификатор ключа C7FD9DJAA8 и идентификатор команды 9CKCGNNUQN. Сгенерированные токены будут действительны в течение часа, и их нужно будет обновлять каждые 60 минут. Подробнее о подключении к APNs на основе токена…

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

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