测试驱动开发(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. TCP/IP、UDP、HTTP、SOCKET详解

    文章大纲 网络OSI七层及各层作用 TCP与UDP基本介绍 TCP连接过程详解 SOCKET原理与连接详解     一.网络OSI七层及各层作用   应用层:文件传输,电子邮件,文件服务,虚拟终端 T ...

  2. nodejs 使用 js 模块

    nodejs 使用 js 模块 Intro 最近需要用 nodejs 做一个爬虫,Google 有一个 Puppeteer 的项目,可以用它来做爬虫,有关 Puppeteer 的介绍网上也有很多,在这 ...

  3. python爬虫实战:利用scrapy,短短50行代码下载整站短视频

    近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...

  4. Angualr学习笔记

    0.安装即环境初始化 下载node至windows,点击安装,所有环境变量直接OK: linux下载tar后,解压,在/etc/profile的path路径下增加node执行路径: export PA ...

  5. 【原】Java学习笔记005 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...

  6. telnet操作memcache

    1.使用方法 1. 连接到memcached telnet 192.168.1.100 11211 add name 0 60 5     [说明 add 是指令名  name 是key的名字 (是以 ...

  7. 英语进阶系列-A06-本周总结

    本周总结 目录Content 英语进阶系列-A01-再别康桥 英语进阶系列-A02-英语学习的奥秘 英语进阶系列-A03-英语升级练习一 英语进阶系列-A04-英语升级练习二 英语进阶系列-A05-英 ...

  8. 爬虫系列---selenium详解

    一 安装 pip install Selenium 二 安装驱动 chrome驱动文件:点击下载chromedriver (yueyu下载) 三 配置chromedrive的路径(仅添加环境变量即可) ...

  9. idea怎么配置spring

    前提基础: 1.idea软件并JDK成功能用 2.有tacate,并会导入. 3.了解jsp和mvc基本结构 详细介绍: https://www.cnblogs.com/wormday/p/84356 ...

  10. SDOI2019R1游记

    差点退役,真是开心 Day -2 吐了一晚上,差点死掉 被拉去医院打针,结果蛇皮的被扎了两针,真是好疼啊嘤嘤嘤 决定第二天在家里咕一天 Day -1 结果在家里也得做\(loli\)昨天的不知道从哪里 ...