Android 中应该测试什么

应该测试的内容取决于应用类型、开发团队、遗留代码数量以及使用的架构等因素。以下部分概述了初学者在规划应用测试内容时可能需要考虑的事项。

测试目录组织

Android Studio 中的典型项目包含两个目录,用于根据其执行环境保存测试。如以下所述,将测试组织到以下目录中

  • The androidTest directory should contain the tests that run on real or virtual devices. Such tests include integration tests, end-to-end tests, and other tests where the JVM alone cannot validate your app's functionality.
  • The testdirectory should contain the tests that run on your local machine, such as unit tests. In contrast to the above, these can be tests that run on a local JVM.

必要的单元测试

遵循最佳实践时,您应该确保在以下情况下使用单元测试

  • 单元测试 用于 ViewModel 或演示者。
  • 单元测试 用于 数据 层,尤其是存储库。数据层的大部分应该与平台无关。这样做可以让测试替身在测试中替换数据库模块和远程数据源。请参阅有关 在 Android 中使用测试替身 的指南
  • 单元测试 用于其他与平台无关的层,如 层,例如用例和交互器。
  • 单元测试 用于 实用程序类,例如字符串操作和数学。

测试边缘情况

单元测试应该侧重于正常情况和边缘情况。边缘情况是不常见的情况,人类测试人员和大型测试不太可能发现。示例包括以下情况

  • 使用负数、零和边界条件进行数学运算。
  • 所有可能的网络连接错误。
  • 损坏的数据,例如格式错误的 JSON。
  • 模拟保存到文件时已满的存储空间。
  • 在进程中间重新创建的对象(例如,设备旋转时的活动)。

应避免的单元测试

一些单元测试应该避免,因为它们的价值很低。

  • 验证框架或库的正确操作,而不是你代码的测试。
  • 框架入口点(如 *活动、片段或服务*)不应该包含业务逻辑,因此单元测试不应该优先考虑。针对活动的单元测试价值很低,因为它们主要覆盖框架代码,并且需要更复杂的设置。仪器测试(如 UI 测试)可以覆盖这些类。

UI 测试

应该采用几种类型的 UI 测试。

  • **屏幕 UI 测试** 检查单个屏幕中的关键用户交互。它们执行诸如点击按钮、在表单中键入和检查可见状态之类的操作。每个屏幕一个测试类是一个好的起点。
  • **用户流程测试** 或 **导航测试**,涵盖最常见的路径。这些测试模拟用户在导航流程中的移动。它们是简单的测试,有助于检查初始化时的运行时崩溃。

其他测试

还有更多专门的测试,例如截图测试、性能测试和猴子测试。你也可以根据目的对测试进行分类,例如回归测试、可访问性测试和兼容性测试。

进一步阅读

为了隔离测试,你通常需要将被测对象的依赖项替换为虚假或模拟的依赖项,通常称为“测试替身”。继续在Android 中使用测试替身中阅读有关它们的更多信息。

如果你想了解如何创建单元测试和 UI 测试,请查看测试 codelabs