Cucumber 1 -- 什么是BDD、Cucumber?它们的关系是什么?

大家好,我是神韵,是一个技术&生活博主。出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎来点赞打卡,你们的行动将是我无限的动力。
本篇主题是:什么是BDD、Cucumber?它们的关系是什么?

下面我将简单介绍一下BDD和Cucumber两个概念以及它们的关系

一、什么是BDD?

BDD全称是Behaviour-Driven Development,即行为驱动开发,下面是官网的介绍

What is BDD?

BDD is a way for software teams to work that closes the gap between business people and technical people by:

  • Encouraging collaboration across roles to build shared understanding of the problem to be solved
  • Working in rapid, small iterations to increase feedback and the flow of value
  • Producing system documentation that is automatically checked against the system’s behaviour

We do this by focusing collaborative work around concrete, real-world examples that illustrate how we want the system to behave. We use those examples to guide us from concept through to implementation, in a process of continuous collaboration.

对应中文:

BDD 是软件团队的一种工作方式,它通过以下方式缩小业务人员和技术人员之间的差距:

  • 鼓励跨角色协作,以建立对要解决的问题的共同理解
  • 以快速、小规模的迭代工作,以增加反馈和价值流
  • 生成根据系统行为自动检查的系统文档

为此,我们将协作工作集中在具体的、真实的示例上,这些示例说明了我们希望系统如何运行。在持续协作的过程中,我们使用这些示例来指导我们从概念到实施。

BDD-行为驱动开发官网介绍非常难懂抽象的概念,特别是对没有用过这种工作方式来说,那根本就是一头雾水

我们对最后一句话进行解读,可分将BDD分为以下三个步骤

  1. 先描述产品行为(将协作工作集中在具体、真实的示例上)
  2. 产品行为其实就是提供自动化步骤(希望系统如何运行)
  3. 编写产品代码,以使得它能够通过行为的自动化测试(使用示例来指导我们从概念到实施)

上述三个步骤即整个流程中,产品代码的开发--步骤3,都是由行为驱动的--步骤1。因此,我们将这个流程,称之为行为驱动开发(Behavior driven development)

此外还要强调,BDD 是软件团队的一种工作方式,一种软件开发的过程,是关于发现、协作和示例,它具体实现是需要一些框架或者工具,比如Cucumber就支持BDD

当然,文字都是比较抽象的描述,如果用例子表述,那肯定就不会那么抽象。在介绍Cucumber第一个例子时,我顺带说明一下BDD(待补充..)

二、什么是Cucumber? 

什么是黄瓜,主要有三步介绍,一是对Cucumber的介绍,而是对它的语法Gherkin介绍,最后是对它的编码步骤定义Step Definitions介绍。

编写Cucumber过程,需要一个编写一个由Gherkin语言编写的可执行规范文件叫xx.feature(由测试case组成),这个文件就是BDD中的行为,然后由行为-feature驱动编码,即编写Step Definitions,编写Step Definitions由行为驱动的编码,整个过程就是BDD,然后需要提供一个主类启动类即可运行所有xx.feature写好的Case。(过程简化为编写xx.feature,编写Step Definitions,编写启动类)

下面是官网对Cucumber的介绍

好的,既然您知道 BDD 是关于发现、协作和示例(而不是测试),那么让我们来看看 Cucumber。

Cucumber 读取以纯文本形式编写的可执行规范,并验证该软件是否按照这些规范的要求进行操作。规范由多个示例或场景组成。例如:

Scenario: Breaker guesses a word
  Given the Maker has chosen a word
  When the Breaker makes a guess
  Then the Maker is asked to score

​每个场景都是Cucumber 需要完成的步骤列表。Cucumber 验证软件是否符合规范,并为每个场景生成一个报告,指示 ✅ 成功或 ❌ 失败。

为了让 Cucumber 理解这些场景,它们必须遵循一些基本的语法规则,称为Gherkin。 ​

上面提到的Gherkin就是编写Cucumber的语法,下面是官网的介绍

What is Gherkin -- 什么是小黄瓜?

Gherkin 是一组语法规则,使纯文本的结构足以让 Cucumber 理解。上面的场景是用 Gherkin 编写的。

小黄瓜有多种用途:

  • 明确的可执行规范
  • 使用 Cucumber 进行自动化测试
  • 记录系统的实际行为方式

下面是步骤定义介绍

What are Step Definitions -- 什么是步骤定义?

将 Gherkin 步骤连接到编程代码。步骤定义执行该步骤应执行的操作。因此,步骤定义将规范硬连接到实现。

┌────────────┐                 ┌──────────────┐                 ┌───────────┐
│   Steps    │                 │     Step     │                 │           │
│ in Gherkin ├──matched with──>│ Definitions  ├───manipulates──>│  System   │
│            │                 │              │                 │           │
└────────────┘                 └──────────────┘                 └───────────┘

步骤定义可以用多种编程语言编写。这是一个使用 JavaScript 的示例:

When("{maker} starts a game", function(maker) {
  maker.startGameWithWord({ word: "whale" })
})

总结:

Cucumber 是一个支持行为驱动开发(BDD)的工具,一个测试框架

三、BDD和Cucumber的关系

BDD 是软件团队的一种工作方式,一种软件开发的过程,是关于发现、协作和示例,但不是测试工具、框架,就是一种概念性的东西。而Cucumber是支持BDD的一个测试类框架、工具,也就是用Cucumber可以达到BDD的行为驱动开发的效果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值