如何使用Cucumber在功能级别编写验收测试?

时间:2016-08-29 17:06:52

标签: cucumber bdd agile acceptance-testing jbehave

JBehave是基于Java的&适用于Java应用程序。 JBehave还支持良好的HTML报告。但是,JBehave的问题在于它只支持Story级别而不支持Feature级别。

这里的任何人都可以帮我一个小的解释或文档,我可以理解Cucumber如何支持功能级别吗?

1 个答案:

答案 0 :(得分:1)

功能是功能的实现(功能可能需要多个功能)。

让我们看一下"故事"的Mike Cohn's description,因为它很不错:

  

用户故事简短,简单描述了一个功能   渴望新能力的人的观点,通常是   系统的用户或客户。他们通常遵循一个简单的   模板:

As a <type of user>, I want <some goal> so that <some reason>.

一个好的用户故事跟在INVEST principles之后,这就是我们开始进入场景的地方:

  • 独立,这意味着它可以自行交付

故事可能包含一个或多个上下文,其中该功能将起作用。背景本质上与其他情境无关。

  • 面议,所以你可以改写它

在处理故事时,您可能会发现需要考虑的其他背景或结果。作为功​​能核心的功能通常与&#34;当&#34;相关联。例如,如果我希望能够生成报告,那么&#34;当&#34;会是,&#34;当我生成报告时......&#34;

  • 有价值,因此它为利益相关者带来了价值

可能有几个利益相关者有不同的结果。例如,发送电子邮件说已经预订了出租车很重要,但是向驾驶员发送预订确认信息也很重要!通过考虑不同的利益相关者,我们提出了需要考虑的情景的结果。

  • 可估计,因此您可以估算尺寸

如果您无法估算大小,请尝试让一个方案正常运行。这是Kent Beck&#34; spike&#34;的功能等同物。顺便提一下,你需要估算的唯一原因通常是考虑到其他可以做的工作,确定它是否值得做,所以请相应地对待它。

  • 小,(快速编辑,因为我意识到我错过了这封信)意味着你应该有一定程度的确定性。

我实际上更喜欢人们知道他们对此有一定程度的不确定性,并希望尽快得到反馈。如果您真的确定它(例如:登录),那么它可以更大,因为您需要的反馈频率较低;你知道吗&#34;工作&#34;看起来像。

  • 可测试,这意味着相关描述必须包含足以测试它

示例成为测试,作为此分析的一个很好的副产品。

为什么我们首先要讲故事呢?为什么不提供整体功能呢?

事实证明,获得某些功能所需的工作最终会变得非常大,特别是如果您涉及到很多利益相关者,我们希望将它们切片以便我们从中获取价值早些时候,或者我们想要切片,以便我们获得反馈。

因此,故事可能是实际可以发布的功能的一部分,或者可能是为获得反馈而设计的。

情景是一种很棒的方式!该特征可以缩小到最有价值的背景,或者需要考虑其结果的不同利益相关者。小心不要消除有交易需求的利益相关者(ATM上的用户获得他们的钱;银行借记账户)或监管需求(银行进行重大投资;监管机构看到资本储备的变化)。

方案不是唯一获取功能反馈的方式。新UI?硬编码没有任何行为,并向人们展示。新报告?制作一个模拟副本。没有人处理的新饲料?制作一个尖峰,看看你是否可以从中获取你认为可以的信息。

否则,考虑需要考虑其结果的不同背景和利益相关者,并考虑其背景和结果的不同能力。功能实现了不同的要求,其行为通过您所导出的方案来说明。

由于故事是功能的切片,功能实现功能,因此这是典型的层次结构:

  • 利益相关者
  • 目标
  • 能力
  • 功能
  • 故事
  • 方案

如果您正在尝试制定如何将场景与故事和功能相关联,那么这不是一个糟糕的方法。如果你看Gojko Adzic's "Impact Mapping"Matt Wynne's "Example Mapping",你会发现它很熟悉(我想我们都听过Chris Matts的话)。

要小心,因为实际上这有点模糊;当你开始交付时,你会发现,所以不要提前打破一切。我发现功能可以制作出良好的计划级工件,并且通常很容易与#34; Epics&#34;相关联。他们还有自己的高级测试:&#34;我们的用户可以做他们需要的事情,我们需要考虑的背景,以及需要结果的利益相关者吗?&#34;

故事的诀窍是只考虑需要什么来提供价值,直到它实际交付......然后其余部分将是< em> next 需要的东西,等等。

有关更多提示,请访问capability-based planning and lightweight analysis上的我的博客,splitting up stories上的另一个博客。

对于Cucumber,按功能进行组织,然后(如果需要)按上下文进行组织,并使用故事编号标记您的签到(大多数CI工具,电子板和版本控制系统都支持此功能)。一个功能或故事可以创建更多场景。