行为驱动开发中的“特征”和“故事”之间有什么区别?

时间:2010-11-25 00:43:52

标签: cucumber bdd pivotaltracker

我正在开发一款产品,而我正在使用Pivotal Tracker来编写用户故事,但我对BDD和XP很新,而且对Cucumber来说也是新手。所以我对这个术语感到困惑。故事和黄瓜功能有什么区别?两者都是简单的描述,包括三个部分 - 演员,行动和商业价值。对?因此,如果我已经在Pivotal Tracker中编写了一个故事,我应该直接将其复制到Cucumber功能中吗?一个故事可以有多个功能吗?

你怎么看?

3 个答案:

答案 0 :(得分:4)

功能是一个功能齐全的功能,可以上线。例如,功能可能是用户配置文件,包括注册页面,验证,图片等。

在BDD术语中,故事是功能的一小部分,我们可以在其上得到反馈。例如,我们可能会在没有配置文件页面的情况下生成注册,并且无需验证。验证可能是另一个故事。图片可以是另一个。

考虑到体系结构,新技术,领域学习等,可能需要数周时间才能生成一些更复杂的功能 - 所以一个故事让我们可以更快地获得反馈。

您可能有兴趣了解功能注入 - 分析空间中的BDD。我们对故事和功能都使用了很多模板:

In order to <achieve a goal>
As <the stakeholder who wants the goal>
I want <something>

我倾向于不太担心我正在做的事情是一个功能还是一个故事,只要我尽快得到反馈。

答案 1 :(得分:2)

“故事”是一系列共同完成目标的开发任务。它是开发人员使用的设备。

“功能”是业务利益相关者希望在其应用程序中看到的功能。要实现一项功能,您可能需要一个或多个故事,因为通常情况下,如果一个故事“太大”,它会分解为更易于管理的小故事。

BDD是TDD(测试驱动开发)的变体。据我所知,BDD的语义比TDD的语义更少,因为你使用诸如“系统应该加载用户”之类的短语而不是“DAO加载后用户实例不应该为空” “ - 它们描述了系统行为(功能集),而不是实际实现的具体细节。最后,如果正确完成,他们都会测试相同的东西。

而且,就主题而言,故事的概念与BDD非常正确;有开发实践有故事,没有BDD。

答案 2 :(得分:0)

不幸的是,在这个空间中,功能是一个严重超载的单词,黄瓜功能与完全成熟的功能完全不同。

“黄瓜特征”与“黄瓜特征”之间最有趣的区别。用户故事是用户故事是历史文档,而功能描述应用程序的当前状态(假设该功能已经实现)。

这种差异(IMO)比粒度或大小的差异更重要。您可以拥有受许多用户故事驱动/启发的黄瓜功能,并且您可以拥有一个具有许多黄瓜功能的用户故事。

一旦可以运行Cucumber功能,它就是代码。这意味着它更容易被重构和更改。每次运行它时,它都会为您提供有关应用程序当前状态的信息。用户故事告诉您应用程序应该执行的操作。或者更准确地说,故事的作者认为应用程序应该在编写故事时做什么。