2

在编写场景时,是否有人强烈主张选择以下样式中的一种而不是另一种?

Feature: Search Product

As a customer
I want to search for a product
So that I can easily locate what I want to purchase

Scenario: Multiple Products Found (First Person Style)
Given the following products exist:
|Product      |
|Normal Orange|
|Large Orange |
When I search for "orange" <---
Then the system should display the following products:
|Product      |
|Normal Orange|
|Large Orange |

或者...

Scenario: Multiple Products Found (Generic Third Person Style)
Given the following products exist:
|Product      |
|Normal Orange|
|Large Orange |
When the customer searches for "orange" <---
Then the system should display the following products:
|Product      |
|Normal Orange|
|Large Orange |

或者...

Scenario: Multiple Products Found (Specific Person Style)
Given the following products exist:
|Product      |
|Normal Orange|
|Large Orange |
When "John" searches for "orange" <---
Then the system should display the following products:
|Product      |
|Normal Orange|
|Large Orange |

它们似乎都工作得很好——我想知道我是否遗漏了一个明显的陷阱,因为很多例子似乎都使用了参与者的特定值(不仅仅是输入/结果的特定值)。

我反对使用的唯一论点:

When the customer searches for "orange"

如果其他参与者也可以使用相同的功能,则必须定义单独的等效步骤。

就个人而言,我认为“我”读起来很好(尽管我觉得我不知道)。想法?

4

3 回答 3

3

无论哪种方式都很好,但是有细微的差别。

如果结果的好处是为了用户,我有时喜欢用第一人称来表达事情,如果结果的好处是为了用户以外的人,我喜欢用第三人称来表达。

例如,您可能有一个故事:

In order to prevent bots from spamming the site
As a moderator
I want users to prove that they are human.

相关的场景可以是:

Given a user is not registered
When they try to register
Then they should be presented with a CAPTCHA
When they fill in the CAPTCHA
Then they should be successfully registered

或者:

Given I am not registered
When I try to register
Then I should be presented... what, wait, no, I shouldn't!

在这种情况下,很明显与“我应该得到一个验证码”的想法存在认知脱节,因为它们很烦人,没有人想要它们。把这个场景放在第三人身上,很明显,好处可能不适合那个人。

我偶尔会为用户起名——例如,普通用户的 Ursula Usual 和管理员的 Andy Admin。以这种方式使用第三人称对于呼唤不同的角色和角色也很有用。

还有其他场景,角色相同,但两个不同的人扮演它。

Given Doctor Donald has filled out Priscilla Patient's prescriptions
When Doctor Diana looks for her file // <-- different doctor!
Then she should be able to find those prescriptions.

在其他参与者可以使用相同功能的情况下,他们的角色或权限的上下文将改变行为,并且无论如何该上下文都应该包含在场景中,即使它只是隐含在他们的名字中。

于 2012-10-10T20:26:19.543 回答
2

我认为只要故事对开发人员和非开发人员一样清晰,我认为I就可以使用。在顶部,您已经澄清了这I是一个customer. 我认为我们并不关心哪个特定客户在进行搜索。

于 2012-10-10T15:53:25.617 回答
1

我认为这基本上取决于场景。

如果该场景只涉及客户,那么“客户”可能是最合适的。

如果一个场景可能涉及除客户之外的用户类别,那么使用“John”(或“Jane”,如果您愿意的话)更通用,并减少对一类用户的关注。

一般来说,系统是为其他人使用而构建的,所以虽然我同意第一人称(“我”)风格读起来很好,但不使用它可能有很好的心理原因。

当然,我可能会完全糊涂——我对 BDD 还很陌生。

于 2012-10-10T15:57:40.660 回答