行为驱动开发BDD和Cucunber简介

测试驱动开发(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对这些关键词处理是一样的。
 

 

posted @ 2018-08-17 11:35  知了.Test  阅读(2275)  评论(0编辑  收藏  举报