BDD,有什么特色?

时间:2010-07-13 06:55:47

标签: bdd

我刚开始使用BDD并且我正在尝试构建一个小应用程序,因此我可以看到它在真实环境中工作,但我无法确定应该是什么功能。我正在建一个小商店。

我认为“比较产品”将是一个功能,“用户可以作为访客结帐”将是一个,但为了实现这一点,我首先需要列出产品。

我的问题是,“应该有一个产品清单”应该是一个功能吗?

谢谢!

7 个答案:

答案 0 :(得分:5)

它可能应该是一个功能,但请从用户的角度尝试措辞。这个产品清单为他提供了什么?

  • 用户应该能够概述所提供的产品
  • 用户应该能够按名称,价格,供货情况订购和重新订购产品。

答案 1 :(得分:2)

开始做BDD很难。唯一有助于对自己的能力和整个方法充满信心的是编写测试场景和执行它们的代码。我建议你不要让已经复杂和困惑的情况变得更难。选择您需要实现的任何任务,打开一个空白文本文件并尝试使用简单句子解释该行为。每个句子都应以三个关键字中的一个开头:给定然后。使用您喜欢的BDD框架编写将解析这些句子的代码并激发应用程序进入启动状态(给定),执行一些命令(何时)并断言转换状态(然后)。应用程序代码可以从单纯的模拟开始。用逐渐构建的代码逐渐替换那些模拟,并以更高的信心和质量水平增加您的应用程序。

答案 2 :(得分:1)

用户故事是一项功能。可以用格式表达的东西:

  • 作为角色
  • 我想做点什么
  • 这样目标

E.g。

  • 以用户身份
  • 我希望能够比较产品
  • 这样我就能以最佳方式选择满足我需求的产品

  • 作为嘉宾

  • 我想查看我的购物车
  • 这样我就可以完成购买了

当然,每个功能都必须由一系列Given-When-Then场景确认。

答案 3 :(得分:1)

你基本上都在问什么是功能。想一想,你有一个故事,一个故事描述了你(或其他人参与)你的应用所需的功能。通常它具有以下形式:作为用户,我想查看产品列表。您可以为此故事添加注释,以使其更清晰。但随后出现了特定的行为(最终你会反对) - 有无数的行为符合这个故事(想想产品的观点和呈现它们的许多方法)。您在BDD中的重点是找到应用程序所需的行为(我使用应用程序,而不是用户,因为有时您应该为用户做出决定) - 通过与尽可能多的人交谈,通过尝试填充和迭代结束了。

这就像是从上到下 - 总是试图专注于行为 - 随着时间的推移更加具体。如果你考虑一下,给定一个行为(意味着一组测试),就会有无数的实现。这就是为什么BDD的重点是通过实验和谈话来真正理解行为 - 总有一定程度的自由。

答案 4 :(得分:1)

更重要的是弄清楚用户想要对产品列表做些什么? 该功能将为用户提供有价值的东西。 所以在你的情况下,它将是

  • 从产品列表中选择要查看的产品
  • 从产品列表中选择要比较的x产品
  • 其他

答案 5 :(得分:1)

我会将一个功能归类为一组最小的故事,这些故事可以提供一些连贯的(商业)价值。

对于BDD框架,请参阅http://kernowcode.wordpress.com

答案 6 :(得分:0)

要确定,如果需求是明确的功能/用户故事,您可以使用基于任务的设计/文档的指南(例如http://www.sprez.com/articles/task-documentation-design.html)。这些概念承认系统的用户想要获得特定的结果。通常,了解某些事物(例如:哪些产品可用)只是购买/销售/建筑/等过程中的一个步骤。 BDD的一个很好的起点是在用户手册中编写您将用作章节的主题。这些主题通常是您将在软件解决方案中提供的功能。 支持这种规范方法的一个很好的框架是Concordion(http://concordion.org)。请查看“普通英语验收测试”(http://gojko.net/2009/09/01/acceptance-testing-in-plain-english-with-concordion-net/)的说明。