获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

使用 gcloud CLI 进行测试

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本指南介绍了如何使用 gcloud CLI 运行 XCTest 或 Game Loop 测试。

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

  1. 下载谷歌云 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. 选择您的测试尺寸。

    测试实验室可让您在各种 iOS 版本、设备、屏幕方向和区域设置上运行测试。这些配置称为测试的测试维度。要查看每个dimension的选项(例如,设备的 iOS 版本支持的 Xcode 版本),请在以下命令中替换modelsversionslocales

    gcloud firebase test ios dimension list

    屏幕方向稍微简单一些,因为它的唯一选项是portraitlandscape

    查看测试维度列表,然后选择一些您想要运行测试的组合。访问定价计划以查看您每天可以运行的最大组合数。

  3. 选择一组测试维度后,您可以让测试实验室使用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 测试的类型。您可以输入测试类型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 步(可选) :自动化您构建的未来测试

使用测试实验室编写 gcloud 命令脚本

您可以使用 shell 脚本或批处理文件来自动化移动应用程序测试命令,否则您将使用 gcloud 命令行运行这些命令。此示例 bash 脚本运行 XCTest,超时时间为 2 分钟,并报告测试运行是否成功完成:

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 文档以探索通常可用或处于测试阶段的测试选项。