android - 使用顺序测试用例的最佳实践是什么?
问题描述
我知道,在测试自动化中,我们必须避免顺序测试用例。所以,运行测试用例的顺序并不重要。
我相信在某些情况下,顺序测试用例是不可避免的:
1.考虑一个场景,用户需要采取一些先前的步骤才能完成最终目标。例如,用户需要登录才能购买。
Given User is logged in
When User adds an item into its basket
And User Complete his purchase
Then He receives an Email
因此,在上述场景中,每个部分(Given
、When
、And
或Then
)都是单独的测试用例。但是测试用例的顺序仍然是至关重要的。
2.另外,Junit 团队提供了一个调用@FixMethodOrder(MethodSorters.NAME_ASCENDING)
这种用法的方法,但我不确定我们什么时候可以使用它?
那么,如何在 end-2-end 测试中编写独立的测试用例呢?
解决方案
测试应该是原子的,因为它们不应该依赖于先前测试生成的状态。这就是为什么应该避免顺序测试用例的原因。如果序列的任何部分失败,那么其余的测试都会失败,因此将它们分开真的没有多大意义(它们可能只是一个测试)。
如果您需要测试的先决条件,您可以将它们包含在: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 是否正常);等等。使用哪种策略取决于您的目标和场景的大小。我个人更喜欢大事的第二个选项,而简单/简短的第一个选项。
推荐阅读
- java - IBM-Worklight: Failed starting project
- javascript - Google Apps 脚本 - 几分钟的 IN 运算符
- selenium-webdriver - selenium browser launch by octopus
- c++ - 如何找到第一组?
- javascript - 如何在 Modal 中使用 $document
- typescript - ASP.NET Core Virual Application doesnt load typescript files When Host in IIS
- c++ - Select object in OpenGL when doing transformations in the vertex shader
- python - Heron TumblingWindowBolt 基于计数而不是秒
- autodesk-forge - 互连 Autodesk forge 和 Vault api
- mysql - MariaDB 服务器的运行速度比我们可以重现的任何东西快 10 倍。想法为什么?