本指南介绍如何使用 gcloud CLI 运行 XCTest 或游戏循环测试。
第 1 步:配置本地 Google Cloud SDK 环境
- 下载谷歌云 SDK。
- 确保您的安装是最新的并包含
gcloud firebase
命令:gcloud components update
- 使用您的 Google 帐户登录 gcloud CLI:
gcloud auth login
- 在 gcloud 中设置您的 Firebase 项目,其中PROJECT_ID是您的 Firebase 项目的 ID:
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
选择您的测试维度。
测试实验室让您可以在各种 iOS 版本、设备、屏幕方向和区域设置上运行测试。这些配置称为测试的测试维度。要查看每个维度的选项(例如,设备 iOS 版本支持的 Xcode 版本),请在以下命令中将
dimension
替换为models
、versions
或locales
:gcloud firebase test ios dimension list
屏幕方向稍微简单一些,因为它的唯一选项是
portrait
和landscape
。查看测试维度列表,然后选择一些您想要运行测试的组合。访问定价计划以查看您每天可以运行的最大组合数。
选择一组测试维度后,您可以让测试实验室使用
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 版本不兼容,您的测试可能会失败。要为您的测试指定支持的 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=11.3
测试特殊权利
要测试需要显式 App ID 的权利,您可以通过设置--test-special-entitlements
标志来实现。测试实验室使用新的捆绑标识符重新签署应用程序以支持特殊权利,因此请确保您的 zip 文件中没有包含对应用程序捆绑 ID 的直接引用的资源。推送通知
为了授权推送通知请求,用户可以使用私有签名密钥以及密钥 ID - C7FD9DJAA8和团队 ID - 9CKCGNNUQN创建 JSON Web 令牌。生成的令牌有效期为一小时,需要每 60 分钟刷新一次。阅读有关建立与 APNs 的基于令牌的连接的更多信息。
应用组应用程序组 ID 是普遍唯一的。这意味着当我们重新签署用户应用程序时,我们只能使用与测试实验室开发人员帐户关联的应用程序组 ID。如果您的测试依赖于应用程序组,您的测试将失败。
运行游戏循环测试
运行gcloud beta firebase test ios run
命令并使用以下标志配置运行:
游戏循环测试的标志 | |
---|---|
--type | 必需:指定要运行的 iOS 测试类型。您可以输入测试类型 |
--app | 必需:您应用的 IPA 文件的绝对路径(GCS 或文件系统)。此标志仅在运行游戏循环测试时有效。 |
--scenario-numbers | 您想要在您的应用程序中运行的循环(又名场景)。您可以输入一个循环、一个列表或多个循环或一系列循环。默认循环为 1。 例如, |
--device-model | 您要在其上运行测试的物理设备(找出您可以使用的可用设备)。 |
--timeout | 您希望测试运行的最长持续时间。您可以输入一个整数来表示持续时间(以秒为单位),或者输入一个整数和枚举以将持续时间表示为更长的时间单位。 例如:
|
例如,以下命令运行游戏循环测试,在 iPhone 8 Plus 上执行循环 1、4、6、7 和 8:
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 的更多信息,请参阅参考文档。
第 4 步(可选) :自动化您构建的未来测试
使用测试实验室编写 gcloud 命令脚本
您可以使用 shell 脚本或批处理文件来自动执行移动应用程序测试命令,否则您将使用 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
脚本退出代码
测试实验室提供了多个退出代码,您可以使用它们更好地了解使用脚本或批处理文件运行的测试的结果。
退出代码 | 笔记 |
---|---|
0 | 所有测试执行都通过了。 |
1个 | 发生一般故障。可能的原因包括:文件名不存在或 HTTP/网络错误。 |
2个 | 由于提供了未知的命令或参数,测试已退出。 |
10 | 测试执行中的一个或多个测试用例(测试的类或类方法)未通过。 |
15 | 由于意外错误,Firebase 测试实验室无法确定测试矩阵是通过还是失败。 |
19 | 用户取消了测试矩阵。 |
20 | 发生测试基础结构错误。 |
第 5 步:调查测试结果
测试开始时,您会收到一个指向“测试结果”页面的链接。测试可能需要几分钟才能运行,具体取决于您选择的不同配置的数量以及为测试设置的测试超时持续时间。测试运行后,您可以查看测试结果。请参阅分析 Firebase 测试实验室结果以了解有关如何解释测试结果的更多信息。
下一步
阅读 Google Cloud SDK 文档以探索普遍可用或处于测试阶段的测试选项。