分析 Firebase Test Lab 结果

您可以通过多种方法来使用 Firebase Test Lab 对您的 Android 应用进行测试,包括命令行界面Android Studio、Firebase 控制台中的 Test Lab 界面,以及 Testing API。无论您选择哪种方法来启动测试,结果都会存储在您指定的 Firebase 项目中。除了上述工具外,您还可以使用 ToolResults API 浏览结果。本页面介绍了如何查看和分析这些测试结果。

主要概念

如需查看先前所有测试运行的结果,请在 Firebase 控制台中项目左侧的导航面板上选择 Test Lab。对于您使用 Test Lab 进行了项目测试的应用,此页面显示了所有测试运行结果。

如需查阅测试结果,您首先需要了解三个概念:

当您针对所选的设备和配置运行一项测试或一组测试用例时,Test Lab 会批量为您的应用运行测试,然后将结果显示为一个测试矩阵

设备 × 测试作业 = 测试矩阵

设备
运行测试的实体设备或虚拟设备(仅限 Android),例如手机、平板电脑或穿戴式设备。测试矩阵中的设备由设备型号、操作系统版本、屏幕方向和语言区域(也称为地理位置和语言设置)标识。
测试、测试作业
需要在设备上运行的一项测试(或一组测试用例)。您可以在每个设备上运行一项测试,也可以视需要对测试进行分片,并在不同的设备上运行其测试用例。
测试矩阵
测试矩阵中包含测试作业的状态和测试结果。只要矩阵中有任何测试作业失败,整个矩阵都会失败。

下文介绍如何浏览解读测试结果。

解读测试历史记录结果

您可以选择 Test Lab 前往测试结果页面后,来查看此前运行的测试的结果。

测试历史记录按应用分组。页面上只显示每个应用最近的五个测试矩阵;如果有更多可用矩阵,您可以点击位于应用测试列表底部的所有矩阵链接,查看该应用的完整测试矩阵列表。

解读测试矩阵结果

通过 Test Lab 界面开始测试时,您将被重定向到一个页面,您可以在其中查看测试矩阵,也可点击特定的测试作业以查看测试结果。Android Studiogcloud 命令也会提供测试矩阵结果页面的网址。

在典型的测试矩阵中,您可能会在十几台不同的设备上运行测试。每个测试作业的结果可能都不尽相同。测试矩阵中任意测试作业都可能得到以下结果:

  • 通过 测试已通过:没有发生任何失败。
  • 未通过 测试未通过:至少发生一次失败。
  • 无结论 测试已通过:测试结果无结论,可能是由于 Test Lab 发生了错误。
  • 已跳过 测试已通过:为矩阵中某些测试作业所选择的维度值不兼容。当您选择的设备与您选择的一个或多个 Android API 级别不兼容时,就会发生这种情况。

如需查看 Firebase 项目中给定应用的所有测试矩阵的测试结果汇总,请点击应用名称,如下例所示:

仅包含 4 个测试作业的测试矩阵结果页面示例 测试矩阵结果

您将转到您的应用的测试矩阵列表,您可以在其中点击任意测试矩阵的名称以查看测试矩阵结果,也可以点击应用的名称(如下面的红色框中所示),以查看与您的 Firebase 项目关联的其他应用的测试矩阵列表。

测试矩阵列表页面示例 测试矩阵列表

测试矩阵可能通过测试、未通过测试或无结论。如果测试矩阵中的任一测试作业未通过测试或无结论,测试矩阵就会显示为未通过测试或无结论。

解读 Robo 测试结果

如果您使用 Robo 运行测试,除了常规的测试指标之外,您的测试结果还会包含 Robo 抓取的界面视频和截图。这些视频和截图包含 Robo 在抓取过程中所采取的操作的画面提示,类似于 Android 中的“显示触摸操作”功能。您可以利用这些提示来把握 Robo 的测试过程,并重现您籍此发现的任何错误。

Robo 测试结果视频示例

Robo 测试结果

解读一项测试作业的结果

在测试矩阵结果页面中点击某项测试作业,即可查看该测试作业的结果。

测试作业结果页面示例 测试作业结果

在此页面上,您可以查看每项测试作业所需的时间。您还可以查看与测试 APK 中的方法相对应的特定测试用例的结果(对于插桩测试而言),以及包括测试日志、屏幕截图和视频在内的详细测试结果。对于 Robo 测试,详细的测试结果还会包括一份 Activity 地图,该地图以图形方式显示 Robo 测试所访问的界面路径。

经过归类的插桩测试结果

为了帮助您解释插桩测试结果,Test Lab 将每个测试分成了自己的详细报告页面,包括堆栈轨迹、日志和视频。 无论您是否使用 Android Orchestrator,此功能都有效。

测试用例结果页面示例 测试用例结果

解读无障碍功能结果

Robo 测试会使用 Android 无障碍功能扫描仪检测应用中的无障碍功能问题。请注意,您还可以在设备运行本地扫描。有关如何查看和解读 Robo 测试的无障碍功能扫描结果的说明,请参阅无障碍功能扫描仪使用入门

有关如何改进应用的无障碍功能的一般信息,请访问 Android 开发者无障碍功能文档

性能指标

在实体设备上运行的测试也会返回性能指标:

指标所需设备配置
应用启动时间API 19+
CPU 使用率API 21+
内存用量
网络活动
每秒帧数API 21 及更高级别,并且包含 SurfaceView
图形性能API 23+

图形性能详情

图形性能报告包含几个关键图形指标的相关统计信息:

  • 错过的 VSync 事件数:错过的 VSync 事件数除以呈现时间超过 16 毫秒的帧数。
  • 高输入延迟:所用时间超过 24 毫秒的输入事件数除以呈现时间超过 16 毫秒的帧数。
  • 界面线程速度缓慢:界面线程需要超过 8 毫秒才能完成的次数除以呈现时间超过 16 毫秒的帧数。
  • 加载命令速度缓慢:将加载命令发送到 GPU 所用时间超过 12 毫秒的次数除以呈现时间超过 16 毫秒的帧数。
  • 位图上传速度缓慢:位图需要超过 3.2 毫秒才能上传到 GPU 的次数除以呈现时间超过 16 毫秒的帧数。
  • 呈现时间:测试运行期间每一帧的呈现时间分布图。呈现时间超过 32 毫秒会觉察到界面变慢。呈现时间超过 700 表示存在冻结帧。呈现数据是通过 dumpsys graphicsstats 收集的。

详细测试结果

详细的测试结果会在您运行测试后保留 90 天,并存储在 Google Cloud Storage 存储桶中(但也可在 Firebase 控制台中看到)。在测试作业结果页面上点击测试结果,即可查看 Cloud Storage 存储桶中的详细测试结果。在详细测试结果保留期结束后,您仍然可以看到哪些测试通过/失败。

如果希望在 90 天之后仍然能够查看详细的测试结果,您需要使用 --results-bucket gcloud 命令行选项将这些测试结果发送到您拥有的 Cloud Storage 存储桶。随后您可以设置 Age(存在时间)设置,以确定结果在 Cloud Storage 存储桶中的存储时长。如需了解如何更改 Age(存在时间)设置,请参阅生命周期条件