В этом руководстве рассказывается, как запустить тест XCTest или тест игрового цикла с помощью gcloud CLI.
Шаг 1. Настройте локальную среду Google Cloud SDK
- Скачайте Google Cloud SDK.
- Убедитесь, что у вас установлена последняя версия и в ней есть команда
gcloud firebase:gcloud components update - Войдите в gcloud CLI, используя аккаунт Google:
gcloud auth login - Укажите проект Firebase в gcloud, где PROJECT_ID – это идентификатор проекта Firebase:
gcloud config set project PROJECT_ID
в том числе инструмент gcloud CLI.
Шаг 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 минут. Подробнее о том, как установить подключение к APNs на основе токена…
Группы приложенийИдентификаторы групп приложений уникальны. Это означает, что при повторном подписании пользовательских приложений мы можем использовать только идентификатор группы приложений, связанный с аккаунтом разработчика 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
Дополнительную информацию о 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, чтобы узнать о вариантах тестирования, которые общедоступны или находятся на стадии бета-тестирования.