Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

通过 gcloud CLI 进行测试

本指南介绍如何使用 gcloud CLI 运行 XCTest 测试或游戏循环测试。

第 1 步:配置您的本地 Google Cloud SDK 环境

  1. 下载 Google Cloud SDK
  2. 其中包括 gcloud CLI 工具。

  3. 确保您安装的版本是最新的,并且包含gcloud firebase命令:
          gcloud components update
  4. 使用您的 Google 帐号登录 gcloud CLI:
          gcloud auth login
  5. 在 gcloud 中设置您的 Firebase 项目,其中 PROJECT_ID 是您的 Firebase 项目的 ID:
         gcloud config set project PROJECT_ID

第 2 步:运行测试

运行 XCTest 测试

  1. 运行以下命令以上传测试的 .zip 文件(如果您尚未将应用打包,请参阅将您的 XCTest 测试打包):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. 选择测试维度。

    利用 Test Lab,您可以针对不同 iOS 版本、设备、屏幕方向和语言区域等配置运行测试。这些配置统称为测试的“测试维度”。要查看适用于各维度的选项(例如,设备的 iOS 版本支持的 Xcode 版本),请将以下命令中的 dimension 替换为 modelsversionslocales

    gcloud firebase test ios dimension list

    屏幕方向稍微简单一些,因为它只有 portraitlandscape 选项。

    浏览测试维度列表,并选择一些您想要测试的组合。访问定价方案,了解您每天可以运行的组合数量上限。

  3. 选好一组测试维度后,您可以使用 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

测试特殊权限

要测试需要明确应用 ID 的权限,您可以设置 --test-special-entitlements 标志。Test Lab 会使用新的软件包标识符为应用重新签名以支持特殊权限,因此请确保您的 zip 文件中没有直接引用应用软件包 ID 的资源。

推送通知

为了授权推送通知请求,用户可以结合使用私有签名密钥以及密钥 ID (C7FD9DJAA8) 和团队 ID (9CKCGNNUQN) 来创建 JSON Web 令牌。生成的令牌的有效期为一小时,并且每 60 分钟需要刷新一次。如需了解详情,请参阅基于令牌建立到 APNs 的连接。

运行游戏循环测试

运行 gcloud beta firebase test ios run 命令并使用以下标志来配置运行:

用于游戏循环测试的标志
--type

必需:指定您要运行的 iOS 测试的类型。您可以输入 xctest(默认)或 game-loop 测试类型。

--app

必需:应用的 IPA 文件的绝对路径(在 GCS 或文件系统中的绝对路径)。 此标志仅在运行游戏循环测试时有效。

--scenario-numbers

您要在应用中运行的循环(也就是场景)。您可以输入循环、循环列表或循环范围。默认循环为 1。

例如,--scenario-numbers=1-3,5 会运行循环 1、2、3 和 5。

--device-model

您要在其上运行测试的真机设备(了解您可以使用哪些可用设备)。

--timeout

您希望测试运行的最长时长。您可以直接输入一个整数来表示以秒为单位的时长,也可以输入整数以及枚举值来表示更长的时间单位。

例如:

  • --timeout=200 会强制您的测试在运行时间达到 200 秒时终止。
  • --timeout=1h 会强制您的测试在运行时间达到一小时的时候终止。

例如,以下命令会运行在 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 步(可选):自动执行您将来构建的测试

编写 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 发生了测试基础架构错误。

第 5 步:研究测试结果

测试开始后,您会收到指向测试结果页面的链接。测试可能需要数分钟时间,具体取决于您选择的配置数量,以及为测试设置的测试超时时长。完成测试运行后,您可以查看测试结果。如需详细了解如何解读测试结果,请参阅分析 Firebase Test Lab 结果

后续步骤

请参阅 Google Cloud SDK 文档,了解已正式推出Beta 版的测试选项。