Gherkin 用于测试值是否正确保存

Gherkin for testing that a value saved correctly

在我工作的地方,有很多测试用例需要 运行 验证在一个位于另一个之上的弹出对话框中修改的字段值是否正确显示在保存记录前后的另一个弹出对话框中。

例如,第一个弹出窗口是添加记录代码的地方,但还有另一个弹出窗口允许您搜索另一个代码并替换当前代码。

例如,场景可以写成这样:

    Given I have a saved record with code 'X'.
    When I change the code to 'Y'
    Then the modified code is displayed in the dialog
    When I save and re-open the record
    Then the modified code is still displayed in the dialog

但是,根据我的阅读,应避免在场景中使用多个 When-Then 子句。

我想可以这样写:

    Given I have a saved record with code 'X'.
    When I change the code to 'Y'
    Then the modified code is displayed in the dialog before the record is saved
    And the modified code is displayed in the dialog after the record is saved and re-opened.

注意:由于自动化测试人员对应用程序不是很熟悉,Gherkin 测试用例需要用测试数据拼写,而不是声明性的。

第二个选项的问题是Then子句合并了action,本身不是断言,所以在步骤实现中,Then子句会要求自动化测试人员编写一个动作来保存和重新打开记录,这有点像 When 语句。

在此先感谢您提供的任何帮助!

在教科书之外,这种事情经常出现。为什么不使用多组 whens 和 thens 的要点是,结果场景不能作为规范工作得很好,只能作为测试脚本。

拥有多组时间和时间的另一个缺点是测试失败的原因并不总是那么清楚。如果测试只测试一件事,那么您通常可以很容易地分辨出哪里出了问题。

但在我看来,没有一个适合所有人的答案。需要考虑的因素是:

  1. 你有多少时间看这个?
  2. 您可以使用的技能组合
  3. 你的测试需要多长时间 运行
  4. 您是使用小黄瓜场景来编写规范并自动化测试,还是只是编写自动化测试脚本?

所以首先,如果您没有使用场景来编写规范,例如BDD,那么唯一真正的缺点是可能不清楚测试失败的原因。在我看来,这通常可以通过仔细命名您的步骤来解决,而不是试图将时间和时间挤在一起。

其次,如果你的测试永远 运行,因为被测系统或其他原因,那么它真的值得 运行 用不同的断言进行两次测试就可以了按书?完全由你决定,人有不同的看法。

最后,最好处理这个问题的方法是将测试分成两部分,模拟开始的步骤,这样在第二个测试中你就可以当你重新打开它时,断言它有效。但是,如果你没有足够的技能来轻松地做到这一点,如果这真的是一个值得研究的大问题?同样,考虑到你有多少时间,这是否是一件值得花时间去做的大事?但是,需要考虑的一件大事是,这种事情将来是否会在您的测试系统中出现很多。如果可以,那么也许值得花时间...