📜  行为驱动的开发-Gherkin

📅  最后修改于: 2021-01-18 05:36:29             🧑  作者: Mango


Gherkin是一种语言,用于编写功能,方案和步骤。小黄瓜的目的是帮助我们编写具体的要求。

要了解具体要求的含义,请考虑以下示例-

应防止客户输入无效的信用卡详细信息。

如果客户输入的信用卡号长度不完全是16位数字,则当他们尝试提交表格时,应该重新显示该表格,并显示一条错误消息,提示他们输入正确的数字位数。

后者没有歧义,可以避免错误,并且更具可测试性。

Gherkin旨在创建更具体的要求。在小黄瓜中,上述示例如下所示:

特征

输入无效的信用卡详细信息时的反馈功能定义

在用户测试中,我们已经看到很多人谁犯错误文档

适用于以下所有场景的背景

鉴于我已选择要购买的物品,

我即将进入我的信用卡号码

方案-信用卡号太短方案定义

我输入卡号小于16个位数

其他所有的细节是正确的

提交表单步骤

然后应重新显示该表单

看到消息的正确的位数的通知我

小黄瓜格式和语法

小黄瓜文件是纯文本文件,扩展名为.feature。每行非空白必须以Gherkin关键字开头,后跟您喜欢的任何文本。关键字是-

  • 特征

  • 情境

  • 给定,何时,然后,但(步骤)

  • 背景

  • 方案大纲

  • 例子

  • “”“(文档字符串)

  • | (数据表)

  • @(标签)

  • # (评论)

  • *

特征

Feature关键字用于描述软件功能,并对相关方案进行分组。功能具有三个基本元素-

  • 关键字– Feature。

  • 功能名称,与Feature关键字位于同一行。

  • 一个可选的(但强烈建议)描述,它可以跨越多行,即包含关键字Feature的行与以Scenario,Background或Scenario Outline开头的行之间的所有文本。

除了名称和描述之外,功能还包含方案或方案大纲的列表以及可选的背景。

通常,通过以功能名称命名.feature文件,然后将其转换为小写字母并用下划线替换空格。例如,

feedback_when_entering_invalid_credit_card_details.feature

为了识别系统中的功能,您可以使用所谓的“功能注入模板”。

为了<满足一些目标>作为<用户类型>,我想要<功能>

说明

Gherkin文档的某些部分不必以关键字开头。

在功能,方案,方案大纲或示例之后的各行中,您可以编写任何喜欢的内容,只要没有一行以关键字开头。这是包括描述的方式。

情境

为了表达系统的行为,您需要为每个功能部件附加一个或多个方案。通常,每个功能部件会看到5至20个场景,以完全指定该功能部件周围的所有行为。

方案遵循以下模式-

  • 描述初始上下文

  • 描述一个事件

  • 描述预期的结果

我们从上下文开始,描述一个动作,然后检查结果。这是通过步骤完成的。 Gherkin提供了三个关键字来描述每个情境,操作和结果,并将其作为步骤。

  • 给定-建立上下文

  • 何时-执行动作

  • 然后-检查结果

这些关键字提供方案的可读性。

方案-从帐户中取钱。

  • 鉴于我的帐户中有$ 100。

  • 我索要20美元时。

  • 然后应免除$ 20。

如果彼此之间有多个GivenWhen步骤,则可以使用AndBut 。它们使您可以详细指定方案。

场景-尝试使用被盗卡取款。

  • 鉴于我的帐户中有$ 100。

  • 但是我的卡无效。

  • 我索要50美元时。

  • 这样我的卡就不能退还。

  • 并且应该告诉我与银行联系。

创建方案时,请记住“每个方案都必须有意义并且能够独立于任何其他方案执行”。这意味着-

  • 一个方案的成功条件不能取决于在此方案之前执行过其他方案的事实。

  • 每个方案都创建其特定的上下文,执行一件事,然后测试结果。

此类方案具有以下好处-

  • 测试将更容易理解。

  • 您可以只运行一部分方案,而不必担心测试集的破坏。

  • 根据您的系统,您可能能够并行运行测试,从而减少了执行所有测试所需的时间。

方案大纲

如果必须编写具有多个输入或输出的方案,则可能最终会创建几个仅因其值不同而不同的方案。解决方案是使用方案大纲。要编写方案大纲,

  • 方案大纲步骤中的变量用<和>标记。

  • 表格中的示例给出了变量的各种值。

假设您正在编写一个在计算器上将两个数字相加的功能。

功能-添加。

Scenario Outline: Add two numbers.
Given the input ""
When the calculator is run
Then the output should be "
Examples
| input    | output |
| 2+2      | 4      | 
| 98+1     | 99     |
| 255+390  | 645    |

方案大纲部分始终后面是示例的一个或多个部分,它们是表的容器。该表必须具有与方案大纲步骤中的变量相对应的标题行。下面的每一行将创建一个新方案,并填充变量值