2010-07-13 184 views
7

我刚刚开始使用BDD,并且正在尝试构建一个小应用程序,以便我可以在真实环境中看到它的工作原理,但我在确定应该是什么功能时遇到了困难。我正在建一个小商店。BDD,什么是功能?

我决定“比较产品”将是一个功能,“用户可以结账作为客人”将是一个功能,但要做到这一点,我首先需要列出产品。

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

谢谢!

回答

4

它应该可能是一个功能,但从用户的角度来看它可能会用到。这个产品清单给他提供了什么?

  • 用户应该能够得到所提供的产品的概述
  • 用户应该可以订购和重新排序名称,价格,可用性产品。
2

开始做BDD是相当困难的。唯一能帮助你对自己的能力和整个方法感到自信的方法是编写测试场景和执行它们的代码。我建议你不要让复杂和混乱的情况更难。选择你需要实现的任何任务,打开一个空白的文本文件,并试图用简单的句子来解释行为。每个句子应从三个关键字中的一个开始:给出,当时然后。使用你最喜欢的BDD框架编写解析这些句子的代码,并且激发应用程序进入开始状态(给定),执行一些命令(何时)并断言过渡状态(然后)。应用程序代码可能仅仅从模拟开始。逐渐建立代码逐渐替换这些模拟,并以更高的置信度和质量水平扩展您的应用程序。

1

用户故事是一项功能。东西,可以在格式来表示:

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

例如

  • 作为用户
  • 我想能够比较产品
  • 所以,我可以选择相应的产品满足的最佳途径

  • 担任嘉宾

  • 我我的需要想结算我的购物车
  • 这样我就可以完成购买

每个功能都必须通过一系列Given-When-Then场景进行确认。

1

你基本上在问什么是功能。想一想,你有一个故事,一个故事描述了你(或其他人参与)想要为你的应用程序提供的功能。通常它的形式是:作为用户,我想查看产品列表。你可以在这个故事中添加注释,以便更清楚。但是接下来会出现具体的行为(最终你会对此进行测试) - 符合这个故事的行为数量是无限的(考虑产品的视角以及展示它们的方法)。在BDD中,您的焦点是找到适合您应用程序需要的行为(我使用应用程序而不是用户,因为有时候您应该为用户做出决定) - 通过尽可能多地与尽可能多的人交谈,尝试一些东西并迭代结束了。

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

1

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

  • 选择一个产品从产品
  • 列表查看选择x产品从产品
  • 其他
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/)。