我应该在Gherkin/Specflow的Given/When/Then语句中使用哪种人称和语态?

8

在使用Gherkin语言描述接受测试中的各种行为时,人们对于陈述语句的写法让我有些困惑。

有些文章使用"I",而有些文章则使用"User"。

相同的情况也出现在反应(Then)语句中:

Case 1 --> xyz page should be displayed
Case 2 --> xyz page is displayed

Ex 1:
Given statement abc
When user performs action A
Then screen xyz should be displayed

Ex 2:
Given statement abc
When I perform action A
Then screen xyz is displayed

在我的BDD场景中,为了符合标准,是写“用户”还是“我”,以及写“应该是”还是“是”更好呢?

如果能提供任何相关文章的参考,那就太好了。谢谢!


1
在一些文章中看到人们同时使用两种。 - Suraj Gupta
1个回答

10

两者都正确,并且有不同的优点。

发明BDD的Dan North表示他更喜欢使用第一人称(“我”),因为这样可以使他置身于用户的角度。然而,他在介绍性文章中经常使用第三人称(“他/她/客户”)。

使用第一人称可以帮助场景符合标准故事模板:

As <a stakeholder>
I want <something>
So that <goal>.

如果利益相关者是用户,那么在场景中再次使用"I"是有意义的。但是,有时候场景的结果并不真正符合用户的利益。
As the moderator of the site
I want users to prove that they're human
So that I can limit spam.

在这种情况下,将场景放在用户的角度看会有些奇怪,因为用户并不想填写验证码框。在这里我们可能会使用第三人称。
Given an odd-looking number "31" on a door frame
When the user identifies the number as "31"
Then the system should authenticate them as being human.

您可能会发现有多个利益相关者的结果都很重要。在这种情况下,使用第三人称来描述情境可以帮助发现可能未包含的其他结果或重要的利益相关者。

Given Suzanne searches for a taxi for 4pm to take her to hospital
And the estimated price is $23
When she books the taxi
Then she should get a confirmation email
And the driver should be notified of the trip
And she should be charged $23.

因为苏珊、司机和优步都参与了这种情况,所以把它们放在第三人称更加合理。我倾向于使用第三人称,特别是对于具有许多用例的大型产品,因为我发现必须切换第一人称角色会令人感到困惑,并且它可以保持一致性。这也意味着您可以给场景中的参与者取一个容易记住的名字,并更容易地谈论他们(例如,“克拉伦斯笨手笨脚错误输入号码”的场景)。然而,请记住,在与利益相关者交谈以获取这些场景时,最重要的是交流。尽可能准确地记录他们的话语,只有在重新使用Gherkin重新表达时才妥协语言。

那么关于if语句中的“应该显示”格式和使用“已显示”的格式,哪个更好呢?使用“应该”更接近期望结果,而使用“已”则更接近实际结果。 - Suraj Gupta
1
@SurajGupta,“should”允许质疑;我曾停止使用它,但几年前又将其加入到我的场景中。它鼓励人们问:“应该吗?总是吗?适用于所有情境吗?现在,在这个版本中?”它还有助于区分结果和上下文。一个场景的结果可能是不同场景的上下文,因此在大型代码库中非常有帮助。 - Lunivore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接