Android 使用顺序测试用例的最佳实践是什么?

Android 使用顺序测试用例的最佳实践是什么?,android,testing,automation,Android,Testing,Automation,我知道,在测试自动化中,我们必须这样做。因此,运行测试用例的顺序并不重要 我相信在某些情况下,顺序测试用例是不可避免的: 1.考虑一个场景,用户需要采取一些以前的步骤来完成最终的目标。例如,用户需要登录才能购买 Given User is logged in When User adds an item into its basket And User Complete his purchase Then He receives an Email 因此,在上述

我知道,在测试自动化中,我们必须这样做。因此,运行测试用例的顺序并不重要

我相信在某些情况下,顺序测试用例是不可避免的:

1.考虑一个场景,用户需要采取一些以前的步骤来完成最终的目标。例如,用户需要登录才能购买

   Given User is logged in
   When  User adds an item into its basket
   And   User Complete his purchase
   Then  He receives an Email
因此,在上述场景中,每个部分(
给定的
时,
,或
然后
)都是独立的测试用例。但测试用例的顺序仍然至关重要

2.另外,Junit团队提供了一个名为
@FixMethodOrder(MethodSorters.NAME\u升序)
的方法用于此类用途,但我不确定何时允许我们使用此方法


因此,如何在端到端测试中编写独立的测试用例?测试应该是原子的,因为它们不应该依赖于前一个测试生成的状态。这就是为什么应该避免顺序测试用例。如果序列的任何部分失败,那么其余的测试都会失败,因此将它们分开(它们可能只是一个测试)真的没有多大意义

如果您在测试中需要先决条件,您可以将它们包括在:1)所有测试之前,2)测试套件开始时,3)特定测试之前,4)特定测试内部。无论在何处/何时完成,重要的是您假设生成该状态所需的一切都按预期工作,因此您只需关注您正在测试的内容

现在,如果您想测试一个完整的系统流,我建议您将其放在一个独特的测试中。如果有变化,那么您将有多个测试

比如说,你想测试D,但D需要C,然后C需要B,最后B需要A;一种策略是生成一个测试,您将在其中执行a->B->C->D。另一种策略是生成多个测试,您将在其中测试各个步骤:测试1执行a;测试2执行A->B(但不关心A是否正常);测试3执行A->B->C(但不关心A和B是否正常);等等使用哪种策略取决于您的目标和场景的大小。我个人更喜欢第二个选项用于大型项目,第一个选项用于简单/简短的项目。

UI测试框架允许实现这样的核心用户旅程场景

如果您想要单元测试,那么您应该在每个测试开始时设置预期的先决条件。

所谓的“避免顺序测试用例”只适用于单元测试。这就是朱尼特和莫基托闪耀的地方。在这些情况下,我们只担心单元的正确性。我们不关心其他单元的失败或通过,我们将模拟其他单元的行为,这样我们就可以专注于测试当前测试的精确行为

你描述的案例不属于这一类。在您的情况下,您需要一个集成测试套件,因为您需要测试端到端的流。您可以使用以下工具进行集成测试

  • 黄瓜
  • Soap UI测试
  • 宁静