BDD功能的粒度应该是多少?

时间:2016-02-17 00:31:44

标签: bdd gherkin

让我们谈谈简单的事情。我们有一个TODO列表,我们想要将任务添加到列表中。功能是什么?这里的场景是什么?

a。)我们可能正在谈论一个类或一组服务 功能:待办事项列表 scenario1:向待办事项列表添加新任务 scenario2:尝试添加新任务,但由于缺少任务描述而失败

b。)我们可能正在谈论一种方法或单一服务 功能:将任务添加到待办事项列表 scenario1:添加新任务 scenario2:由于缺少描述而失败

2 个答案:

答案 0 :(得分:3)

我认为BDD的整个概念与类,方法或变量的数量无关。这完全与利益相关者的对话有关。

您所谓的功能,可能是首先触发该对话的事情。例如,我们有一个TODO列表,但如果它是空的,它对任何人都没用。因此,功能能力将任务添加到TODO列表中

从这里开始,对话开始了,很可能你会为你的场景提出“快乐的道路”:

Given that the TODO list is empty
When I add a new task "Buy Milk" to the list
Then the TODO list should have 1 task
And its description should be "Buy Milk"

然后你可能会开始向你的利益相关者提出更多问题:

  • 我是否需要登录才能将任务添加到TODO列表?
  • 我是否需要任何权限才能将任务添加到TODO列表中?
  • 是否有TODO列表可以容纳的最大任务?
  • 我可以在TODO列表中添加与现有任务描述相同的任务吗?

所有这些问题都将创建情景,您需要在利益相关者的帮助下在Gherkin中进行描述,然后对其进行编码以使其通过。

答案 1 :(得分:1)

我将它们称为BDD,尽管BDD也试图达到该功能背后的目的。无论如何,"添加任务"是这个功能,并且这两个方案成功且不成功。我可能还谈到成功添加任务意味着什么(它显示在列表中,是否有类别或是单个列表,它是在列表顶部还是底部?它是否有什么时候必须完成的时间限制?)我说的是未能添加任务意味着什么(它不在列表中,可能界面告诉你需要添加一个标题)。那么,为什么你要添加一个没有标题的任务呢?这是一个常见的用例吗?标题是否只是反映了身体?也许您想要使用列表的方式,它不需要标题? BDD是关于行为,而不是实现,所以无论你采用哪种方式都很好。