JBehave是基于Java的&适用于Java应用程序。 JBehave还支持良好的HTML报告。但是,JBehave的问题在于它只支持Story级别而不支持Feature级别。
这里的任何人都可以帮我一个小的解释或文档,我可以理解Cucumber如何支持功能级别吗?
答案 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工具,电子板和版本控制系统都支持此功能)。一个功能或故事可以创建更多场景。