自动化界面测试

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

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

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

运行界面测试

  • 要在 Android Studio 中运行插桩界面测试,您需要在单独的 Android 测试文件夹 src/androidTest/java 中实现测试代码。Android Gradle 插件会根据您的测试代码构建一个测试应用,然后将该测试应用加载到与目标应用相同的设备上。在测试代码中,您可以使用界面测试框架来模拟目标应用上的用户交互,以便执行涵盖特定使用场景的测试任务。
  • 您还可以使用 Robolectric 在 JVM 上运行界面测试。

架构和测试设置

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

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:通过用假对象替换其依赖项来测试界面。

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

为什么自动化测试界面?

一个 Android 应用可以针对数千种不同设备,涵盖多个 API 级别和设备形态,而且操作系统为用户带来的高度定制化意味着您的应用可能会在某些设备上渲染不正确甚至崩溃。

界面测试可让您进行兼容性测试,验证应用在不同上下文中的行为。您可能希望在以下方面有所不同的设备上运行界面测试:

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

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

界面测试的类型

本节介绍两种类型的界面测试:

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