Google 致力于为黑人社区推动种族平等。查看具体举措

通过 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

运行游戏循环测试

运行 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 版的测试选项。