此页面提供了问题排查帮助,以及有关使用 Firebase Test Lab 运行测试的常见问题解答。此页面中还记录了已知问题。如果您找不到所需内容或者需要其他帮助,请加入 Firebase Slack 上的 #test-lab 频道,或与 Firebase 支持团队联系。
问题排查
为什么我的测试需要很长时间才能完成运行?
如果您在 Test Lab 目录中选择容量级别为“高”的设备,您的测试可能会较快开始;但如果所选设备的容量级别为“低”,则测试可能需要更长时间才能开始运行。此外,如果调用的测试数量远远超过所选设备的容量,则测试可能需要更长时间才能完成。
不过,在以下因素的影响下,在任意设备容量级别运行的测试都可能需要更长时间来完成:
- 流量(会影响设备可用性和测试速度)。
- 设备或基础架构故障(可能随时发生)。如需查看 Test Lab 是否有基础架构报错,请参阅 Firebase 状态信息中心。
如需详细了解 Test Lab 中的设备容量,请相应参阅 Android 平台和 iOS 平台对应的设备容量信息。
为什么我会收到不确定的测试结果?
出现不确定测试结果的原因通常是因为测试运行被取消或者基础架构存在错误。
基础架构错误是由内部 Test Lab 问题(例如网络连接错误或意外设备行为)导致的。在报告不确定结果之前,Test Lab 会在内部多次重试产生基础架构错误的测试运行;不过,您可以使用 failFast 停用这些重试。
如需确定错误的原因,请按以下步骤操作:
- 在 Firebase 状态信息中心检查是否存在已知的服务中断故障。
在 Test Lab 中重试测试,以验证能否重现错误。
尝试在其他设备或设备类型上运行测试(如果适用)。
如果问题仍然存在,请在 Firebase Slack 上的 #test-lab 频道中与 Test Lab 团队联系。
为什么启用分片后测试的运行时间延长?
如果您指定的分片数量超过 Test Lab 中可用的设备数量,分片就可能会导致测试的运行时间延长。为避免这种情况,您可尝试切换到其他设备。如需详细了解如何选择其他设备,请参阅
设备容量。
为什么我的测试需要很长时间才能启动?
在您提交测试请求后,系统会先对应用完成验证、重新签名等操作,为在设备上运行测试做好准备。通常,此过程会在几秒钟内完成,但可能会受到应用大小等因素的影响。
应用准备就绪之后,系统会安排测试作业并将其放入队列,直到有设备准备好运行测试。无论测试作业是正在队列中还是正在运行,在所有测试作业都完成运行之前,矩阵状态都将是“待处理”。
为什么我的测试需要很长时间才能完成?
测试作业完成后,系统会从设备下载测试工件、进行处理并将其上传到 Cloud Storage。此步骤的时长可能会受工件数量和大小的影响。
常见问题解答
Test Lab 的免费配额是多少?配额用完后,该怎么做?
Firebase Test Lab 提供了用于在设备上运行测试和使用 Cloud API 的免费配额。请注意,测试配额使用标准的 Firebase 定价方案,而 Cloud API 配额不使用此方案。
测试配额
测试配额的大小取决于用于运行测试的设备数量。Firebase Spark 方案为用户提供免费的固定测试配额。而对于 Blaze 方案,如果您的 Google Cloud 用量随时间增加,您的配额可能也会增加。如果您已达到测试配额,请等到次日再继续测试或升级为 Blaze 方案(如果您目前采用的是 Spark 方案)。如果您已采用 Blaze 方案,则可以申请增加配额。如需了解详情,请参阅测试配额。
您可以在 Google Cloud 控制台中监控测试配额用量。
Cloud Testing API 配额
Cloud Testing API 有两个配额限制:每个项目每天的请求数和每个项目每 100 秒的请求数。您可以在 Google Cloud 控制台中监控您的使用情况。
Cloud Tool Results API 配额
Cloud Tool Results API 有两个配额限制:每个项目每天的查询数,以及每个项目每 100 秒的查询数。您可以在 Google Cloud 控制台中监控您的使用情况。
如需详细了解 API 限制,请参阅 Test Lab 的 Cloud API 配额。如果您已达到 API 配额,请按以下步骤操作:
如何确定到达后端的流量是否来自 Test Lab?
您可以在后端对照我们的 IP 范围检查源 IP 地址,从而确定流量是否来自 Firebase 托管的测试设备。
Test Lab 是否支持 VPC-SC?
Test Lab 不支持 VPC-SC,后者会阻止在 Test Lab 的内部存储空间与用户的结果存储桶之间复制应用和其他测试工件。
如何在 Test Lab 中检测不稳定的测试?
如需在测试中检测不稳定行为,建议您使用
--num-flaky-test-attempts
选项。若为解决稳定性问题而重新运行作业,会计入相关费用或每日配额,就与正常的测试作业一样。
请注意以下几点:
- 系统在检测到失败时会重新运行整个测试作业。不支持仅重试失败的测试用例。
- 为解决稳定性问题而重试的运行作业亦会安排在同时运行,但不保证会并行运行,例如在流量超出可用设备数量或其他情况下。
在哪里可以找到设备详细信息,例如分辨率等?
详细的设备信息可通过 API 获取,并且可以通过 gcloud 客户端使用 describe 命令进行访问:
gcloud firebase test ios models describe MODEL
可以在 iOS 设备上的测试中使用分片功能吗?
iOS 版 Test Lab 并未对分片功能提供原生支持。不过,您可以使用 Flank 客户端对 iOS 设备上的测试用例进行分片。
此方法是通过在 .xctestrun
文件中设置 OnlyTestIdentifiers
键和值来实现的。如需了解详情,请参阅 xcodebuild.xctestrun
的 man
页面。
已知问题
登录人机识别系统
如果用户在登录屏幕上除了输入登录凭据之外还需要执行额外操作(例如完成人机识别系统验证),则 Robo 测试将无法绕过登录屏幕。
界面框架支持
Robo 测试非常适合使用 Android 界面框架中的界面元素(包括 View
、ViewGroup
和 WebView
对象)的应用。如果您对使用其他界面框架的应用(包括使用 Unity 游戏引擎的应用)执行 Robo 测试,可能会导致立即退出测试;也就是说,除了首屏,测试不会探索其他任何部分。