本文档介绍了 Test Lab AVD,包括有哪些优势以及已知限制;还就有关如何在整个开发生命周期中测试应用提供了一些实用的建议。Test Lab AVD 与适用于 Android Studio 的 AVD 类似,但针对云测试性能进行了优化,因此两者之间存在一些差异。
Test Lab AVD 带有 .arm 或 (Arm) 后缀,它们是一种高级模拟器,具有以下优势:
测试执行速度更快
屏幕尺寸和像素密度与 Android Studio AVD 一致
GPU 支持的加速图形
下表介绍了使用虚拟设备的优势:
优势 | 说明 | 使用场景 |
高可用性 | 使用虚拟设备进行测试时,您可以更快地运行测试并获得测试结果。虚拟设备是按需创建的,因此您的测试几乎可以立即开始,便于您快速验证您的应用。 | 适合测试应用的小规模更新或进行回归测试。 |
测试持续时间更长 | 虚拟设备支持长达 60 分钟的测试持续时间。而在实体设备上测试时,每台设备只能持续测试 45 分钟。 | 适合运行时间更长的测试 |
费用更低 | 用于测试应用的每台虚拟设备的价格为每小时 $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 不支持的原生代码。 |
图形性能 | Nexus 和 Pixel 虚拟设备使用软件图形渲染功能;在这种情况下,图形密集型应用的性能可能会降低。因此,如果您的应用是图形密集型应用,请考虑改用 SmallPhone.arm、MediumPhone.arm 或实体设备。 |
Graphics API | API 级别 29 以下的设备不支持 OpenGL ES 3.x。一些新款设备可能无法与 OpenGL/Vulkan API 完全兼容,您可能会注意到图形上的细微差异。 |
Google Play 商店应用 | Arm 虚拟设备不支持 Google Play 商店应用。 |
增强现实 (AR) 功能 | 虚拟设备不支持测试增强现实 (AR) 功能。 |
较低的 API 级别 | Test Lab Arm 虚拟设备不支持低于 26 的 API 级别。 |