测试驱动开发(TDD)
1、测试驱动开发,即Test-Driven Development(TDD),测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
2、TDD有广义和狭义之分,广义的 TDD 是 ATDD(Acceptance Test Driven Development),包括 BDD和 Consumer-Driven Contracts Development 等。这里说的是狭义上的TDD就是单元测试驱动开发,TDD 是开发人员去做的事,基本不需要和测试协作。
3、TDD的好处
  1)降低开发者的负担:通过明确的流程,让我们一次只关注一个点,减低思维负担;
  2)保护网:覆盖完全的单元测试,对产品代码提供了一个保护网,让我们可以轻松地迎接需求变化或改善代码的设计;
  3)提前澄清需求:先写测试可以帮助我们去思考需求,并提前澄清需求细节,而不是代码写到一半才发现不明确的需求;
  4)快速反馈:有很多人说 TDD 时,我的代码量增加了,所以开发效率降低了。但是,如果没有单元测试,你就要手工测试,你要花很多时间去准备数据,启动应用,跳转界面等,反馈是很慢。准确说快速反馈是单元测试的好处。
 
行为驱动开发(BDD)
1、行为驱动开发(Behavior-Driven Development)(简写BDD),在软件工程中,BDD是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。
2、BDD是TDD的延伸,它关注的核心是设计,其要求在设计测试用例的时候对系统进行定义,倡导使用通用的语言将系统的行为描述出来,将系统设计和测试用例结合起来,从而以此为驱动进行开发工作。
3、BDD描述的行为就像一个个的故事(Story),系统业务专家、开发者、测试人员一起合作,分析软件的需求,然后将这些需求写成一个个的故事。开发者负责填充这些故事的内容,测试者负责检验这些故事的结果.
通常会使用一个故事的模板来对故事进行描述:
Story

  As a标识出这个系统行为是为哪一个角色而定义的。
  I want和so that则指明了该角色想做的事, 以及想达到的目的。
  这三个断句定义了这个系统行为的参与者、范围。
  同样的一个Story,可能会有不同的场景。通过上面的模板描述了故事之后,再通过下面的模板对不同场景进行描述
 
Scenario

这些场景中的Given…When…Then…实际上就是设定该场景的状态、适用的事件,以及场景的执行结果。
通过这样的Story描述和场景设置,基本就完成了一个完整测试的定义。
4、BDD的好处
因为BDD其实更关注的是业务需求而不关注技术
  1)可以是更多的非程序员参与进测试用例的设计进来
  2)代码就是测试用例,非程序人员只需要按照一定的规则写测试用例,程序员不需要了解测试用例的设计只需要按步骤实现就好了。
 
Cucumber简介
1、Cucumber是BDD开发模式的一种自动化测试框架,是敏捷开发团队常用的一种测试框架;
2、Cucumber的测试用例一般由测试场景和测试步骤组成
3、Cucumber中的测试步骤是对测试场景描述的实现是,其测试步骤实现的语言也是支持很多种的,比如常用的c#, java, ruby, javascript(nodejs)等;
4、Cucumber本身是由ruby编写的。
5、Cucumber中的测试场景一般由纯自然语言来进行描述,Cucumber框架使用Gherkin语言描述测试功能,测试场景,测试步骤和测试结果,Gherkin语言支持40中自然语言,包括英文和中文。
 
为什么使用Cucumber
     a.  抛弃传统的类似QC的测试用例工具,将测试用例描述和测试用例执行整合在一起,即自然语言描述出来的测试用例可以直接被执行,而不需要人工的将自然语言转化为可运行的测试用例
     b.  Gherkin语言规则编写的测试用例,对于编写测试用例的人员没有技术要求,即测试人员可能精通业务逻辑,但不精通程序开发,或产品经理可以直接编写和管理测试用例,通常产品经理并不懂得开发技术
     c.  测试用例 + 测试执行 + 测试报告将高度整合,并且通过可持续集成的方法,易于开发人员了解测试人员测试点,根据测试用例,开发人员可以直接回测,并不需要了解测试框架的设计
 
Gherkin简介
1、Gherkin语言使用的是主要英文关键词Scenario、Given、when 、And、Then和But等,这些关键词可以转换成中文关键词,场景、加入、当、那么等。根据用户故事,需求人员或测试人员使用Gherkin语言编写好测试场景的每个步骤,Cucunber会一步一步地解析关键词右侧的自然语言并执行响应的代码。
关键词的含义如下:
1)Given:用例开始执行前的一个前置条件,类似于编写代码setup中的一些步骤
2)When:用例开始执行的一些关键操作步骤,类似单击元素等
3)Then:观察结果,就是平时用例中的验证步骤
4)And:一个步骤中如果存在多个Given操作,后面的Given可以用And替代
5)But:一个步骤中如果存在多个Then,第二个开始后面的Then可以用BUt替代。
2、使用Gherkin编写测试场景的操作步骤,并将执行步骤保存在以.feature为扩展名的文件中,每一个.feature文件都要开始于feature(功能),feature之后的描述可以随便写,直到出现Scenario(场景)。一个.feature文件中可以有多个Scenario,每个Scenario包含步骤step列表,步骤使用Given、when 、And、Then等关键词,Cucumber对这些关键词处理是一样的。
 

行为驱动开发BDD和Cucunber简介的更多相关文章

  1. 行为驱动开发BDD概要

    BDD脱胎于TDD 行为驱动开发(Behavior-Driven Development,简称BDD),是在测试驱动开发(Test-Driven Development,TDD)基础上发展而来的一种软 ...

  2. 【翻译稿】Behavior Driven Development (BDD)行为驱动开发

    这是一篇翻译稿,方便给不知道BDD的同学扫盲.原文链接:What is BDD (Behavior Driven Development)? | Agile Alliance Definition定义 ...

  3. 行为驱动开发iOS <收藏>

    前段时间在design+code购买了一个学习iOS设计和编码在线课程,使用Sketch设计App,然后使用Swift语言实现Designer News客户端.作者Meng To已经开源到Github ...

  4. [翻译]Behavior-Driven Development (BDD)行为驱动开发(二)

    测试驱动开发体现了开发人员对软件产品各部分运作方式的理解,而行为驱动开发则关注于开发人员对软件产品最终表现的行为的预期. 行为驱动开发 TDD更像是一种范式而不是一个过程.它描述了一种先编写测试,然后 ...

  5. 行为驱动开发(BDD)

    行为驱动开发(BDD) 引言 BDD是对TDD理念的扩展.BDD强调有利害关系的技术团体和非技术团队都要参与到软件开发过程中.可以把它看成一种强调团体间合作的敏捷方法.大多数采用某种敏捷方法的团队最终 ...

  6. Cucumber 行为驱动开发简介

    Cucumber 是一个能够理解用普通语言 描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具,用Ruby编写,支持Java和.Net等多种开发语言. 现在看看Cucumber中用到的术语 . ...

  7. 行为驱动开发(BDD) - 深入了解

    行为驱动开发(BDD) - 一个快速的描述和示例 BDD表示乙 ehavior ð里文ð才有发展.用于描述行为的语法是Gherkin. 这个想法是尽可能自然地描述一种语言应该发生什么. 如果你熟悉单元 ...

  8. Android HAL层与Linux Kernel层驱动开发简介

    近日稍微对Android中的驱动开发做了一些简要的了解. HAL:Hardware Abstract Layer 硬件抽象层,由于Linux Kernel需要遵循GPL开源协议,硬件厂商为了保护自己硬 ...

  9. 1、课程简介-Spring 注解驱动开发

    1.课程简介-Spring 注解驱动开发

随机推荐

  1. 作业三——安卓系统文件助手APP原型设计

    原型地址:https://modao.cc/app/X2totLUvbcxBwtJGk6AI04FZnGD4s08#screen=s43A40176351539085924682 MVP支持的浏览器: ...

  2. LSB和MSB

    最低有效位(the least significant bit,lsb)是指一个二进制数字中的第0位(即最低位),具有权值为2^0,可以用它来检测数的奇偶性.与之相反的称之为最高有效位.在大端序中,l ...

  3. Github上html页面(包括CSS样式和JS效果)如何显示出来

    在看Github上项目时,发现有的html页面效果能很好的展现出来,而有的则不能.对这个问题很好奇,因此研究了一下,最终做到了将页面展示出来的目的.下面以我的Github的开源项目bootstrap- ...

  4. windows 为qt5.7.1 安装openssl

    本人使用qt5.7.1+msvc2015写一个https的客户端程序,但是用到解析https协议时,报出如下错误 qt.network.ssl: QSslSocket: cannot call unr ...

  5. Ubuntu18.04 安装jdk1.8

    1.oracle官网下载压缩包,点击链接. 2.解压 1 tar -zxvf jdk-8u171-linux-x64.tar.gz 3.移动到制定目录 ##将文件从下载目录 挪到/usr/local下 ...

  6. golang http自动转为https 如何跳过证书检查

    func SendReq(req *http.Request,result interface{}) error { tr := &http.Transport{ TLSClientConfi ...

  7. docker 安装 mongodb

    1.docker search mongo 2.docker pull mongo 3.//docker run -d --name mymongo -p 27017:27017 -v /home/h ...

  8. Windows将自己的代码发布到Github上

    1.在GitHub上创建一个repository 2.在自己的电脑上选择工作的文件夹使用Git Bash clone刚刚创建的repository 3.此时本地git应该已经连接了GitHub,如果没 ...

  9. 2019-03-23 shell练习,日志统计

    [2019-03-10 17:44:55]1234567 paid 10 10000 cat test.txt |tail -n +1 |sed 's/]/ ]g' |awk '{count[$3]+ ...

  10. stm32之不定长接收

    使用STM32CUBE_MAX配置工程,可以简化编程工作量,但是这样我们会遇到一些麻烦,比如利用串口接收不知道长度的数据的时候,我们可能会无从下手,前段时间看到他人程序中的串口不定长接收,此次特意总结 ...