В этом руководстве рассказывается, как запустить тест XCTest или тест игрового цикла с помощью интерфейса командной строки gcloud.
Шаг 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.Просмотрите список тестовых параметров и выберите несколько комбинаций, которые вы хотите протестировать. Максимальное количество комбинаций, которые можно запустить за день, указано в разделе Тарифные планы.
Выбрав набор тестовых параметров, вы можете запустить тестирование с помощью команды
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-файле нет ресурсов, содержащих прямые ссылки на идентификатор пакета приложения.
- Push-уведомления
apns-environment - Личная VPN
com.apple.developer.networking.vpn.api
Для авторизации запросов push-уведомлений пользователи могут создавать JSON Web Token, используя закрытый ключ подписи, а также идентификатор ключа 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, чтобы узнать о доступных вариантах тестирования, которые находятся на этапе общей доступности или бета-тестирования.