有关编写场景(功能测试)的主要想法?

时间:2019-01-07 08:10:08

标签: testing automated-tests gherkin acceptance-testing

美好的一天,

我一直在考虑描述特征(Gherkin语法)的实质,却找不到最佳答案。

同一场景的两个示例:

Scenario: Creation of a new task
Given I see the button for the creation of a new task
 When I click the button in order to create a new task
 Then I see the task editor

Scenario: Creation of a new task
Given I see the button "Create task"
 When I click the button "Create task"
 Then I see page "Task editor" has been opened

我看到主要区别:

  1. 第一个变量与接口无关。但是,您必须使用选择器或类似工具来查找确切的元素,然后可以更改界面中的所有内容,并且这些测试不会失败(作为第二个变体)。

  2. 第一个变量不是声明性的。通常,您不能重用它来描述任何其他接口行为。

  3. 以我的口味,第二种变体更容易理解场景中发生的事情。

我认为,第二个变体更加灵活,可以让您更快地编写场景,但是同时存在问题:

  • 您必须在方案中包括接口数据。这不是一个好习惯。但是,通过这种(灵活性),您可以描述任何要测试的内容(例如,作为可见数据),因此此类测试更加准确,并且可以提供更高的质量。

  • 每次更改接口时,都需要修复测试。

那么,您能说一下,您对此有何看法?

我认为灵活性,速度,质量和可读性(第二个变体)比第一个变体(除了可读性和“稳定性”之外什么都没有?)要好得多,但我不确定。是的,您在场景中放置了一些数据,但是您几乎从不更改它们,即使您要更改它,它也可能以秒/分钟为单位固定。

您在项目中使用什么,为什么?

而且,主要问题是,哪种变体更好?

请告诉您想法。

1 个答案:

答案 0 :(得分:1)

在我们当前的公司(数十种服务,企业级,用BDD编写)中,我们从第一个变体开始。

Scenario: Creation of a new task
Given I see the button for the creation of a new task
 When I click the button in order to create a new task
 Then I see the task editor

我们认为这是更面向业务,更具描述性和更清晰的

但是几个月后,现实生活向我们表明,第二个版本更加灵活,使用该版本所产生的问题更少。

最后,我们将所有方案重写为第二版

Scenario: Creation of a new task
Given I see the button "Create task"
 When I click the button "Create task"
 Then I see page "Task editor" has been opened

到目前为止,我们很高兴使用它。

摘要: 基于使用BDD样式(以第一个测试)企业软件以团队形式使用两个版本的几个月时间:第二个版本获胜。即使使用BDD理论,第一个版本看起来也会更好。