Cucumber 小黄瓜一个单一的功能,多个角色

Cucumber 小黄瓜一个单一的功能,多个角色,cucumber,domain-driven-design,bdd,gherkin,user-stories,Cucumber,Domain Driven Design,Bdd,Gherkin,User Stories,作为我普遍使用的语言,我有一些短语,如: Feature : Display A Post In order to be able to check mistakes in a post As an admin or customer I want to be able to view the post Scenario : Display Post When : I select a post Then : the post should be viewed 这是一个正确的用户故事吗?这样

作为我普遍使用的语言,我有一些短语,如:

Feature : Display A Post
In order to be able to check mistakes in a post
As an admin or customer
I want to be able to view the post

Scenario : Display Post
When : I select a post
Then : the post should be viewed
这是一个正确的用户故事吗?这样的场景在UI级别可能有一些最小的差异。我是否应该违反并为其他角色重复该功能


随着时间的推移,不同的用户可能需要不同的需求,我认为这就是我们通常为每个用户角色编写用户故事的原因。因此,我应该担心不同角色的需求会随着时间的推移发生怎样的变化,或者我可以留下一个
用户故事(以及相同的测试代码、生产代码、数据库…)当他们的需求迫使我将他们分开时,我有多个角色和重构?

我不确定你这里的问题是什么,我将尝试猜测。首先,你的前三行只是一个描述,而不是真正的步骤。这允许添加不会运行的自定义文本

至于你的另外两个步骤,很难说是好是坏。正如您可能已经注意到的,Cucumber并不一定要有特定的场景流。Cucumber为您提供了设计和编写代码的自由,使其对您和您的业务逻辑更有意义

尽管如此,我认为重复类似步骤来测试另一个角色没有问题。为了使功能文件更加干燥,可以使用
场景大纲
选项。它可能看起来像这样:

Scenario Outline: Display Post as <role>
  When I select a post as <role>
  Then the post should be viewed

  Examples:
    |role |
    |role1|
    |role2|
场景大纲:将帖子显示为
当我选择一篇文章作为
然后应该查看该帖子
示例:
|角色|
|角色1|
|角色2|
在这种情况下,两个场景一个接一个地运行,
role
值根据示例列表进行更改


现在,关于你将来可能发生的变化。你不能总是预测将来会发生什么,除非不断改变当前的需求是你或你的团队的正常做法,否则我不会对此太担心。如果在将来的某个时候,当前场景将过时,您将对其进行审查并重写,或者相应地添加新的场景。

我不确定您的问题所在,并将尝试猜测。首先,你的前三行只是一个描述,而不是真正的步骤。这允许添加不会运行的自定义文本

至于你的另外两个步骤,很难说是好是坏。正如您可能已经注意到的,Cucumber并不一定要有特定的场景流。Cucumber为您提供了设计和编写代码的自由,使其对您和您的业务逻辑更有意义

尽管如此,我认为重复类似步骤来测试另一个角色没有问题。为了使功能文件更加干燥,可以使用
场景大纲
选项。它可能看起来像这样:

Scenario Outline: Display Post as <role>
  When I select a post as <role>
  Then the post should be viewed

  Examples:
    |role |
    |role1|
    |role2|
场景大纲:将帖子显示为
当我选择一篇文章作为
然后应该查看该帖子
示例:
|角色|
|角色1|
|角色2|
在这种情况下,两个场景一个接一个地运行,
role
值根据示例列表进行更改


现在,关于你将来可能发生的变化。你不能总是预测将来会发生什么,除非不断改变当前的需求是你或你的团队的正常做法,否则我不会对此太担心。如果将来某个时候当前场景将过时,您将对其进行审查并重写,或者相应地添加新的场景。

我认为这里的问题在于您的语言需要改进,以澄清您想在这里做什么以及为什么它很重要

在我看来,作为一名希望修正帖子错误的管理员,我需要的是能够修改帖子

类似的情况也适用于客户(应该是作者吗?)。如果你探究当一篇文章被写错时他们会做什么,那么你可能会发现不同的角色以不同的方式互动。您将开始询问如果客户和管理员进行修复会发生什么情况,以及当管理员进行了客户不喜欢的修复时客户如何响应,以及各种其他情况


如果你这样做,你可能会发现你的大部分重复都消失了,你会了解到在这个特定环境下客户和管理员行为之间的差异。

我认为这里的问题是你的语言需要改进,以澄清你想在这里做什么以及为什么它很重要

在我看来,作为一名希望修正帖子错误的管理员,我需要的是能够修改帖子

类似的情况也适用于客户(应该是作者吗?)。如果你探究当一篇文章被写错时他们会做什么,那么你可能会发现不同的角色以不同的方式互动。您将开始询问如果客户和管理员进行修复会发生什么情况,以及当管理员进行了客户不喜欢的修复时客户如何响应,以及各种其他情况


如果您这样做,您可能会发现您的大部分重复都消失了,并且您将了解到在这个特定环境中客户和管理员行为之间的差异。

如果一个功能中需要多个角色,那么这意味着它是一个史诗,而不是一个功能。必须分解每个功能,使其只有一个角色,并且可以向单个用户组提供单个价值。

如果一个功能中需要多个角色,则意味着它是一个史诗,而不是一个功能。必须分解每个功能,使其只有一个角色,并且可以向单个用户组提供单个价值。

对不起,这里看不到任何用户故事。@Eugene S:对不起,我刚刚添加了更多信息抱歉,这里看不到任何用户故事。@Eugene S:对不起,我刚刚添加了更多信息。@Eugene S:对不起,我刚刚添加了更多信息