BDD,什么是功能?

8

我刚开始学习BDD,正在尝试构建一个小应用程序,以便在实际环境中看到它的工作情况,但我很难决定什么应该成为一个特性。我正在构建一个微型商店。

我决定“比较产品”将是一个特性,“用户可以作为访客结账”也将是一个特性,但是要实现这一点,我首先需要列出产品。

我的问题是,“应该有产品列表”是否应该成为一个特性?

谢谢!

7个回答

5

这可能应该成为一个功能,但请从用户的角度来表述。这个产品列表能为他提供什么?

  • 用户应该能够获得所提供产品的概述。
  • 用户应该能够按名称、价格、可用性订购和重新订购产品。

2

开始进行BDD是相当困难的。唯一能帮助你增强信心并理解整个方法的是编写测试场景和执行它们的代码。我建议您不要让已经复杂混乱的情况更加困难。选择需要实现的任务,打开一个空白文本文件,尝试使用简单的语句来解释其行为。每个语句都应以以下三个关键字之一开始:given, whenthen。使用您喜欢的BDD框架编写代码,解析这些语句并刺激应用程序进入起始状态(给定),执行某些命令(when)并断言转换后的状态(then)。应用程序代码可以从纯模拟开始。逐步将这些模拟替换为逐步构建的代码,并以更高的信心和质量水平发展您的应用程序。


1
你基本上在询问什么是功能。想一想,你有一个故事,这个故事描述了你(或其他相关人员)想要的应用程序的功能。通常它的形式为:作为用户,我想查看产品列表。您可以添加注释以使其更清晰。但接下来就是具体的行为(最终您将对其进行测试)-符合此故事的行为有无限多种(考虑产品视图和展示它们的许多方式)。在BDD中,您的重点是找到适合您应用程序需求的行为(我使用应用程序而不是用户,因为有时您应该为用户决定)-尽可能与许多人交谈,试验并反复迭代。
就像从上到下一样-始终试图关注行为-随着您的深入,变得更加具体。如果您考虑一下,给定一个行为(意味着一组测试),有无限数量的实现方法。这就是为什么BDD的重点是通过实验和交流真正理解行为-总有一定程度的自由。

1
我会将特性定义为一组最小可用的用户故事,可以提供某些连贯的商业价值。
有关BDD框架,请参见http://kernowcode.wordpress.com

1

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

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

1

用户故事是一种功能。可以用以下格式表达:

  • 作为角色
  • 我想要做某事
  • 以便目标

例如:

  • 作为用户
  • 我想能够比较产品
  • 以便我可以选择最符合我的需求的产品

  • 作为访客

  • 我想结账我的购物车
  • 以便我可以完成购买

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


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/)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接