我应该何时(而不是如何)测试 Android 上的 UI 组件?

When (NOT how) should I test UI components on Android?

我找到了很多关于如何使用 Espresso 框架和其他框架进行 UI 测试的 material。但是,我正在努力寻找任何信息来告诉我应该在多大程度上测试 UI:我应该编写测试每个 gridView 中每个可能的 GridItem 的测试吗?只是可点击的项目?我应该如何确定什么,以及我应该如何深入地测试任何给定的 Android UI?

对于这个问题,您应该假设您是开发者、所有者和设计者。

如果能得到在一般情况下优先考虑什么的东西就好了。

这个问题的任何答案都将基于意见,并且还取决于许多因素。让我给你一些我自己会考虑的因素。

单元测试:

要问的第一个问题是 UI 测试是否将是唯一的自动化测试。

如果您已经对您的代码进行了单元测试并且拥有可靠的测试套件,那么我不会在 UI 测试上投入太多时间。编写一些测试来检查 UI 元素与应用程序其余部分之间的基本集成,但不要尝试使用 UI 测试来测试内部逻辑 - 这是单元测试的目的。

如果您没有单元测试并且唯一的自动化测试将通过 UI 完成,那么您想要更深入。映射您的应用程序应执行的所有流程,根据测试复杂性对它们进行排序,并从最简单的开始为每个流程编写 UI 测试。您还需要衡量 UI 测试的覆盖率,以便您可以了解应用程序中未被测试的部分。

手动测试(QA):

下一个因素是您可以承受的手动测试量。

既然你提到这是一个单人秀,你可能无法在每次发布前分配几天时间进行手动测试。在这种情况下,进行更广泛的 UI 测试是有意义的。特别是对于涉及数据验证的流程——您真的不想确保(每个版本)注册流程不接受格式错误的 emails/usernames/passwords.

另一方面,如果您有专门的测试人员,则可以大大减少对 UI 测试的投资。我会说,在某些情况下,如果您有专门的测试人员和一套好的单元测试,您可以完全删除 UI 测试。

需求变化率:

UI 如果需求经常变化,测试是一个巨大的 PITA。特别是如果这些更改影响 UI/UX。

如果您的产品具有稳定的现有用户群,那么您可以添加更多 UI 测试,因为更改率可能相对较低,并且您希望保证现有功能不会中断。

另一方面,如果您只是引导应用程序或探索想法并且 UI/UX 非常不稳定,那么 UI 测试的维护将需要很多努力。

错误成本:

想想错误的代价是什么,并适当调整你的测试策略。

如果错误的代价只是糟糕的用户体验和轻微的不便,那么您不需要在 UI 测试上投入太多。如果错误的代价是个人数据被泄露,我会投入更多的资金进行测试。如果您的应用可能会导致人员受伤,请确保进行彻底测试,并有一个单独的团队来执行此操作。

一般备注:

对于质量保证,恕我直言,三种技术在 Android 上最有效:代码审查、单元测试和探索性手动测试。

UI 测试的效果不如上面三个。因此,如果您还没有掌握以上任何一项,那么您最好将时间投入到它们中,而不是 UI 测试。