大家好,我是神韵,是一个技术&生活博主。出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎来点赞打卡,你们的行动将是我无限的动力。 本篇主题是:什么是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 solvedWorking in rapid, small iterations to increase feedback and the flow of valueProducing system documentation that is automatically checked against the system’s behaviourWe 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分为以下三个步骤
先描述产品行为(将协作工作集中在具体、真实的示例上)产品行为其实就是提供自动化步骤(希望系统如何运行)编写产品代码,以使得它能够通过行为的自动化测试(使用示例来指导我们从概念到实施)上述三个步骤即整个流程中,产品代码的开发--步骤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的行为驱动开发的效果。