本文档介绍了 Test Lab AVD,包括有哪些优势以及已知限制;还就有关如何在整个开发生命周期中测试应用提供了一些实用的建议。
虽然 Test Lab AVD 与 Android Studio AVD 类似,但两者之间还是存在一些差异。例如,Test Lab AVD 采用模拟数据连接,而非 WLAN 连接。
Test Lab AVD 带有 .arm
或 (Arm) 后缀,它们是一种高级模拟器,具有以下优势:
测试执行速度更快
屏幕尺寸和像素密度与 Android Studio AVD 一致
与其他类型的实体设备相比,带有 .arm
或 (Arm) 后缀的 AVD 具有以下优势:
优势 | 说明 | 使用场景 |
高可用性 | 使用虚拟设备进行测试时,您可以更快地运行测试并获得测试结果。虚拟设备是按需创建的,因此您的测试几乎可以立即开始,便于您快速验证您的应用。 | 适合测试应用的小规模更新或进行回归测试。 |
测试持续时间更长 | 在实体设备上测试时,每台设备只能持续测试 45 分钟;而虚拟设备支持长达 60 分钟的测试持续时间。 | 适合运行时间更长的测试。 |
费用更低 | 用于测试应用的每台虚拟设备的价格为每小时 $1。 | 适合用于进行涉及持续集成系统或签入代码之前的日常测试。如需了解详情,请参阅 Test Lab 的用量级别、配额和价格。 |
使用虚拟设备测试应用
使用虚拟设备测试应用的方式与使用实体设备的测试方式相同。在选择测试维度以配置测试矩阵时,直接选择虚拟设备即可。如需详细了解如何使用 Test Lab 运行测试,请参阅 Firebase Test Lab 测试入门 (Android)。
查看支持的型号和 API
如需查看 Test Lab 支持的 AVD 型号和 API,请运行以下命令:
gcloud firebase test android models list --filter=virtual
应用测试最佳实践
在虚拟设备上使用 Test Lab 测试应用时,您可以选择的选项更多。我们建议您遵循本部分中提供的最佳实践,在应用的整个开发生命周期内对应用进行测试。
使用 Android Studio 模拟器或连接的实体设备
开发应用时,可使用 Android Studio 模拟器或连接的实体设备来检查每个 build,以进行初始验证。如果您有插桩测试,也可以在 Test Lab 提供的实体设备或虚拟设备上通过 Android Studio 运行这些测试。
在参与共享项目时,使用 CI 系统对每次代码更改进行测试
如果您在参与大型项目,或者如果您参与的是使用 GitHub 或类似服务共享的项目,我们建议您使用持续集成 (CI) 系统。
在 CI 系统每次运行时或者在每次发出拉取请求之前,都在虚拟设备上测试您的应用。如需详细了解如何搭配 CI 系统使用 Test Lab,请参阅搭配持续集成系统使用 Test Lab for Android。
在发布重大应用更新之前,在实体设备上使用 Test Lab 测试您的应用
在发布涉及重大的界面和功能变化的应用更新之前,我们建议您在实体设备上使用 Test Lab 测试您的应用;这有助于确保您的应用在各款常用的实体设备上都能高效稳定地运行。此外,在实体设备上进行测试还可确保在测试中覆盖那些虚拟设备无法模拟的实体设备应用功能。如需详细了解这些功能,请参阅已知限制。
虚拟设备更新
Android 团队会定期添加新的虚拟设备映像,废弃旧映像并更新现有映像。我们会将这些更新应用到虚拟设备映像,以确保您测试的是反映用户体验的最新 Android 版本。
在极少数情况下,这些更新可能会导致测试意外失败。如果有已知的潜在破坏性更新,Test Lab 会在版本说明中添加相关信息。我们建议的最佳实践是,尽可能使用能够稳健应对这些变更的测试框架(例如 Espresso)。如果无法做到这一点,我们建议您以 Arm 虚拟设备为目标,这些设备的更新频率可能较低。
已知限制
虚拟设备目前无法模拟某些实体设备功能,或者只能有限地模拟。下表总结了虚拟设备上目前不能使用的功能或受限的功能。
功能 | 详情 |
应用二进制接口 (ABI) | 并非所有设备都支持全部 ABI。如果您使用 Android NDK 开发您的应用,请务必为目标设备支持的 ABI 生成代码。如需了解详情,请参阅 Test Lab 中的可用设备。如需详细了解如何管理 ABI,请参阅 Android ABI。如需了解设备支持哪些 ABI,请参阅检查可用的测试设备。 注意:如果测试矩阵中有测试被标记为无效,就可能会发生这种情况,因为您的应用依赖于设备 ABI 不支持的原生代码。 |
图形性能 | Nexus 和 Pixel 虚拟设备使用软件图形渲染功能;在这种情况下,图形密集型应用的性能会降低。因此,如果您的应用是图形密集型应用,请改用 SmallPhone.arm 和 MediumPhone.arm 型号,或者使用实体设备。 |
屏幕录制 | Nexus 和 Pixel 设备上的屏幕录制速度为每秒 1 帧。 |
Graphics API | API 级别 29 以下的设备不支持 OpenGL ES 3.x。一些新款设备可能无法与 OpenGL/Vulkan API 完全兼容。您可能会注意到图形上的细微差异。 |