自动化 UI 测试

测试用户交互有助于确保用户在与您的应用交互时不会遇到意外结果或不良体验。如果您需要验证应用的 UI 是否正常运行,则应养成创建用户界面 (UI) 测试的习惯。

UI 测试的一种方法是让人工测试人员对目标应用执行一组用户操作,并验证其行为是否正确。但是,这种手动方法可能非常耗时且容易出错。更有效的方法是编写 UI 测试,以便以自动化方式执行用户操作。自动化方法使您可以快速可靠地以可重复的方式运行测试。

UI 测试启动应用(或其一部分),然后模拟用户交互,最后检查应用是否做出适当的反应。它们是集成测试,范围可以从小组件的行为验证到遍历整个用户流程的大型导航测试。它们可用于检查回归并验证与不同 API 级别和物理设备的兼容性。

运行 UI 测试

  • 要使用 Android Studio 运行工具 UI 测试,您需要在单独的 Android 测试文件夹(src/androidTest/java)中实现测试代码。Android Gradle 插件基于您的测试代码构建测试应用,然后在与目标应用相同的设备上加载测试应用。在您的测试代码中,您可以使用 UI 测试框架来模拟对目标应用的用户交互,以便执行涵盖特定使用场景的测试任务。
  • 您还可以使用Robolectric在 JVM 上运行 UI 测试。

架构和测试设置

您的应用架构应允许测试替换其部分内容以进行测试替身,并且您应该使用提供实用程序以帮助进行测试的库。例如,您可以将数据存储库模块替换为其内存中版本,该版本向测试提供伪造的、确定的数据。

Production and testing architectural diagrams. Production diagram shows local and remote data sources providing data to repository, which in turn provides it asynchronously to the UI. Testing diagram shows a Fake repository which provides its data synchronously to the UI.
图 3:通过用伪造数据替换其依赖项来测试 UI。

推荐的替换依赖项的方法是依赖项注入。您可以手动创建自己的系统,但我们建议为此使用像Hilt这样的 DI 框架。

为什么要自动测试 UI?

Android 应用可以针对许多 API 级别和外形规格上的数千种不同的设备,并且操作系统为用户带来的高度自定义意味着您的应用可能会在某些设备上呈现不正确甚至崩溃。

UI 测试使您可以进行兼容性测试,验证应用在不同环境中的行为。您可能需要在以下方面不同的设备上运行 UI 测试

  • API 级别:21、25 和 30。
  • 区域设置:英语、阿拉伯语和中文。
  • 方向:纵向、横向。

此外,应用应检查超出手机的行为。您应该在平板电脑、折叠屏手机和其他设备上进行测试。阅读有关测试不同屏幕尺寸的更多信息。

UI 测试类型

本节介绍两种类型的 UI 测试

  • 行为测试分析 UI 层次结构以对 UI 元素的属性进行断言。
  • 屏幕截图测试拍摄 UI 的屏幕截图,并将其与先前批准的图像进行比较。