测试驱动开发(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. CSS优先级的及其衡量标准CSS权重

    一.背景 CSS有三大特性:层叠性.继承性.优先级. 而我们在给CSS定义样式的时候,经常出现两个及以上的规则应用在同一元素上,单该元素最终在浏览器呈现的效果是应用的哪个规则呢?这就要考虑优先级的问题 ...

  2. SQLServer之修改存储过程

    修改存储过程注意事项 只能修改先前在 SQL Server 中通过执行 CREATE PROCEDURE 语句创建的过程. Transact-SQL 存储过程修改为 CLR 存储过程,反之亦然. AL ...

  3. iOS 设置View阴影

    iOS 设置View投影 需要设置 颜色 阴影半径 等元素 UIView *shadowView = [[UIView alloc] init]; shadowView.frame = CGRectM ...

  4. Elixir 简介

    概述 Elixir 是一种基于 Erlang 虚拟机的函数式,面向并行的通用语言, 它是一门通用语言,所以不仅可以用在擅长的高可用,高并发场景下,也可以用在 web 开发等场景下. Erlang 诞生 ...

  5. #021 Java复习第一天

    上学期在慧河工作室学习简单过java到面向对象就停止了 现在有事情又要用到java发现全忘了..... 快速复习一下 网课PPT 计算机: 硬件 + 软件 主要硬件: cpu :cpu是一个计算机的运 ...

  6. Python开发【字符串格式化篇】

    1.百分号 __author__ = "Tang" # + 号 拼接 msg = "i am " + " tang" print(msg) ...

  7. Linux:Day13(上) CentOS系统启动流程

    CentOS 5和6的启动流程 Linux:kernel+rootfs kernel:进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs: glibc 库:函数集合,functi ...

  8. Linux:Day12(下) 进程、任务计划

    vmstat命令: vmstat [options] [delay [ count]] procs: r:等待运行的进程的个数: b:处于不可中断睡眠态的进程个数:(被阻塞的队列的长度): memor ...

  9. 网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)

    先看下效果 github上做的一个音乐播放器: https://github.com/SorrowX/electron-music 中文歌曲 英文歌曲(如果有翻译的中文给回返回出去) 韩文歌曲 来看下 ...

  10. P1577 切绳子

    P1577 切绳子 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位. 输入输出格式 输入格式: 第一行两个整数N ...