本��南介绍如何使用 gcloud CLI ��行 XCTest 测试或游戏循环测试。
第 1 步:配置您的本地 Google Cloud SDK 环境
- 下载 Google Cloud 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
选择测试维度。
利用 Test Lab,您可以针对不同 iOS 版本、设备、屏幕方向和语言区域等配置运行测试。这些配置统称为测试的“测试维度”。如需查看适用于各维度的选项(例如,设备的 iOS 版本支持的 Xcode 版本),请将以下命令中的
dimension
替换为models
、versions
或locales
: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 版本与 Test Lab 使用的默认 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
为帮助您在 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"
测试特殊权限
如需测试需要明确应用 ID 的权限,您可以设置 --test-special-entitlements
标志。Test Lab 会使用新的软件包标识符为应用重新签名以支持特殊权限,因此请确保您的 zip 文件中没有直接引用应用软件包 ID 的资源。
若要对推送通知请求授权,用户可以结合使用私有签名密钥以及密钥 ID (C7FD9DJAA8) 和团队 ID (9CKCGNNUQN) 来创建 JSON Web 令牌。生成的令牌的有效期为一��时,并且每 60 分钟需要刷新一次。如需了解详情,请参阅基于令牌建立目标为 APNs 的连接。
应用组应用组 ID 是通用唯一标识符。这意味着,当我们对用户应用重新签名时,只能使用与 Test Lab 开发者账号相关联的应用组 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,请参阅参考文档。
第 3 步(可选):自动执行您将来构建的测试
编写 Test Lab gcloud 命令脚本
除了使用 gcloud 命令行运行移��应用测试命令外,您也可以使用 shell 脚本或批处理文件自动执行这些命令。下面的 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 文档,了解已正式推出或 Beta 版的测试选项。