Gherkin/Specflow Given/When/Then语句中应该用什么人和语气?

What person and mood should I use in Gherkin/Specflow Given/When/Then statements?

我对人们用 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

写"user"好还是"I"好,写"should be"好还是"is"好,这样我的BDD场景就可以像这样正确表达了按照标准?

对任何文章的引用也会有很大帮助。提前致谢。

两者都是正确的,并且有不同的好处。

BDD 的发明者 Dan North 说他更喜欢第一人称 ("I"),因为这让他可以设身处地为用户着想。但是,他经常使用第三人称 ("he / she / the customer"),就像他在 his introductory article.

中所做的那样

first-person 的使用有助于使场景符合标准故事模板:

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 
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 .

因为 Suzanne 和 driver 以及 Uber 都涉及到这个场景,所以将它们放在第 3 个人中更有意义。

我更喜欢第三人称,尤其是对于有很多场景的大型产品,因为我觉得切换第一人称角色很混乱,而且它允许一致性。这也意味着您可以给场景中的演员取个好记的名字,并更轻松地谈论他们(例如"The one where Clarence Clumsy types his number in wrong")。

但是,请记住,当您与利益相关者交谈以掌握这些场景时,最重要的是对话。尽可能准确地记下他们的话,只有在你用 Gherkin 重新措辞时才会妥协。