В этом руководстве описано, как запустить тест XCTest или тест игрового цикла с помощью интерфейса командной строки gcloud.
Шаг 1 : Настройте локальную среду Google Cloud SDK.
- Загрузите Google Cloud SDK
- Убедитесь, что ваша установка обновлена и включает команду
gcloud firebase:gcloud components update - Войдите в интерфейс командной строки gcloud, используя свою учетную запись Google:
gcloud auth login - Укажите свой проект Firebase в gcloud, где PROJECT_ID — это идентификатор вашего проекта Firebase:
gcloud config set project PROJECT_ID
Сюда входит инструмент командной строки gcloud.
Шаг 2 : Запустите тест
Запустите XCTest
Загрузите ZIP-файл вашего теста, выполнив следующую команду (если вы еще не упаковали свое приложение, см. раздел «Упаковка XCTest »):
cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
Выберите размеры для проведения испытаний.
Test Lab позволяет запускать тесты на различных версиях iOS, устройствах, ориентациях экрана и языковых настройках. Эти параметры называются тестовыми измерениями . Чтобы увидеть параметры для каждого измерения (например, поддерживаемые версии Xcode для версии iOS устройства), замените
models,versionsилиlocalesнаdimensionв следующей команде:gcloud firebase test ios dimension list
Ориентация экрана несколько проще, поскольку доступны только
portraitиlandscape.Просмотрите список параметров теста и выберите несколько комбинаций, которые вы хотели бы использовать для проведения теста. В разделе «Тарифные планы» вы можете узнать максимальное количество комбинаций, которые можно запустить за день.
После выбора набора параметров тестирования вы можете запустить тесты в 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-файле нет ресурсов, содержащих прямые ссылки на идентификатор пакета приложения.
- Push-уведомления
apns-environment - Персональный VPN
com.apple.developer.networking.vpn.api
Для авторизации запросов на push-уведомления пользователи могут создавать JSON-токены, используя закрытый ключ подписи вместе с идентификатором ключа - C7FD9DJAA8 и идентификатором команды - 9CKCGNNUQN . Сгенерированные токены будут действительны в течение одного часа и должны обновляться каждые 60 минут. Подробнее об установлении соединения на основе токенов с APN можно прочитать здесь.
Группы приложенийИдентификаторы групп приложений являются универсальными и уникальными. Это означает, что при повторной подписи пользовательских приложений мы можем использовать только тот идентификатор группы приложений, который связан с учетной записью разработчика Test Lab . Если ваш тест зависит от групп приложений, он завершится неудачей.
Запустите тест игрового цикла
Выполните команду ` gcloud beta firebase test ios run и используйте следующие флаги для настройки запуска:
| Флаги для тестов игрового цикла | |
|---|---|
--type | Обязательный параметр : указывает тип теста iOS, который вы хотите запустить. Вы можете ввести типы тестов |
--app | Обязательно : Абсолютный путь (GCS или файловая система) к IPA-файлу вашего приложения. Этот флаг действителен только при запуске тестов игрового цикла. |
--scenario-numbers | Циклы (или сценарии), которые вы хотите запустить в своем приложении. Вы можете ввести один цикл, список циклов или диапазон циклов. Цикл по умолчанию — 1. Например, |
--device-model | Физическое устройство, на котором вы хотите запустить тест (узнайте, какие доступные устройства можно использовать). |
--timeout | Максимальная продолжительность выполнения теста. Вы можете ввести целое число, чтобы указать продолжительность в секундах, или целое число и нумерацию, чтобы указать продолжительность в более длительной единице времени. Например:
|
Например, следующая команда запускает тест игрового цикла, который выполняет циклы 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 Test Lab не удалось определить, прошла ли матрица тестов или нет. |
| 19 | Пользователь отменил тестовую матрицу. |
| 20 | Произошла ошибка в тестовой инфраструктуре. |
Шаг 4 : Изучение результатов анализов
После начала тестирования вы получите ссылку на страницу результатов тестирования . Выполнение тестов может занять несколько минут, в зависимости от количества выбранных вами конфигураций и установленного времени ожидания. После завершения тестов вы можете просмотреть их результаты. Подробнее о том, как интерпретировать результаты тестов, см. в разделе «Анализ результатов Firebase Test Lab .
Следующий шаг
Ознакомьтесь с документацией Google Cloud SDK, чтобы изучить доступные или находящиеся в бета-версии варианты тестирования.