BDD测试和TDD测试

TDD

TDD是测试驱动开发(Test-Driven Development)的缩写,是敏捷开发中的一项测试技术,也是一种设计方法论。她的大概思路是:先针对每个功能点抽象出接口代码,然后编写单元测试代码,接下来再实现接口,最后运行单元测试代码,循环整个过程直到整个单元测试通过。

TDD步骤

测试驱动开发是一个过程,依赖于不断重复极短的开发周期。它基于极限编程(XP)的测试优先理念,倡导采用可高度信赖的简单设计。

流程并不复杂,由几个步骤反复进行:

  1. 编写一个测试
  2. 运行所有测试
  3. 编写实现代码
  4. 重构
  5. 运行所有测试

鉴于测试是在实现前编写的,因此它应该不能通过。如果通过了,就说明测试是错误的:要么它描述的功能早已存在,要么编写不正确。

TDD的好处

  1. 保证代码的质量
  2. 提高开发效率
  3. 能够更好的满足测试
  4. 减少自测的时间
  5. 能够成为更好的代码说明文档

总结

当然,并不是所有的项目都适合TDD这种模式。采用TDD测试应该具备一下几个条件:

  1. 项目需求清晰
  2. 开发人员对需求有足够的理解
  3. 业务模型不能过于复杂,模块之间的依赖性不能太强,过于复杂会导致拆分接口和编写测试代码工作量增大

BDD

BDD是TDD的一种衍生,她通过特定的框架,用自然语言或类自然语言,按照编写用户故事或用户用例的方式,以功能使用者的角度,描述并编写测试用例。她不是某种工具或技术,她是一种思想、一种协作方式。

BDD 工具

  1. Cucumber

BDD与TDD区别

  1. TDD更多的关注测试接口的实现正确性,BDD更多关注用户使用功能时的行为和结果是否符合预期
  2. TDD是使用编程语言来描述测试用例,而BDD是用自然语言来描述
  3. TDD的需求文档和测试用例是分别储存的,而BDD的需求文档就是测试用例

BDD的实现

  1. 确定沟通和协作方式,如:slack、Teams
  2. 确定工作流程,如:什么阶段开始写测试代码
  3. 选定BDD实现,如cucumber
  4. 设计用户场景
  5. 编写测试代码
  6. 持续执行和改进

BDD测试和TDD测试的更多相关文章

  1. python+selenium自动化软件测试(第10章):测试驱动TDD

    测试驱动开发模式,要求开发在写业务代码的时候,先写出测试代码,同时单元测试例子决定了如何来写产品的代码,并且不断的成功的执行编写的所有的单元测试例子,不断的完善单元测试例子进而完善产品代码, 这样随着 ...

  2. testem方便的web tdd 测试框架使用

    备注:    单元测试,对于日常的开发是比较重要的,testem 简化了我们的代码编写,以及运行.    主要特性:    a. 支持的测试框架有:jasmine quint mocha buster ...

  3. web测试与app测试的区别

    才开始做测试就接触的web端,后来也接触app端,所以在这里对于自己工作中所接触到的做一些总结(总要养成总结的好习惯). 对于web端和移动端app,功能方面的测试,例如测试设计方法这些都大同小异,都 ...

  4. (转)学习使用Jmeter做压力测试(一)--压力测试基本概念

    一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...

  5. Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。

    #29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...

  6. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  7. <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!

    原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0 ...

  8. app测试与web测试的区别

    1.从功能测试的来讲的话,在流程和功能测试上是没有区别的.系统测试和一些细节可能会不一样. 那么我们就要先来了解,web和app的区别. web项目,一般都是b/s架构,基于浏览器的,而app则是c/ ...

  9. Android渗透测试Android渗透测试入门教程大学霸

    Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...

  10. 【转】WEB测试到移动测试的转换

    移动互联网的发展毋庸置疑是必然的趋势,我们曾经传统WEB互联网测试的同学,也必然走上移动测试的道路,移动测试与pc测试到底需要怎样的思维转变才能更快的进入移动节奏呢?对比下WEB与移动的测试不同点: ...

随机推荐

  1. Apache IoTDB C# SDK Apache-IoTDB-Client-CSharp

    最近今天写了IoTDB的三篇相关文章,完成了安装部署和客户端连接: Windows Server上部署IoTDB 集群 DBeaver 连接IoTDBDriver 将IoTDB注册为Windows服务 ...

  2. 委派模式——从SLF4J说起

    作者:vivo 互联网服务器团队- Xiong yangxin 将某个通用解决方案包装成成熟的工具包,是每一个技术建设工作者必须思考且必须解决的问题.本文从业内流行的既有工具包入手,解析实现思路,沉淀 ...

  3. 在Spring Boot中整合Katharsis,来快速开发JSON API的Web应用

    1 简介 我们进行Web API开发的时候,经常会使用Json格式的消息体,而Json格式非常灵活,不同的人会有不同的设计风格和实现,而JSON API提供了一套标准.但它并不提供直接实现. Kath ...

  4. 【随笔记】T507 ADC SGM58031 16BIT 4Channel 调试记录

    文章介绍 本文主要描述在 T507 Android 10 Linux 4.9 平台下,调试 SGM58031 芯片的记录,实现单芯片实时采集外部四通道的电压数值. 芯片介绍 SGM58031 是一款低 ...

  5. 用GC的策略,管理团队的技术债务

    在数字化时代,每一个组织的经营都是建立在数字化的系统之上的,而数字化系统的构建,必然就会带来技术债务,这是每一个数字化团队都要面临的一个问题,如何有效的管控技术债务. 技术债务的产生,是技术团队不断迭 ...

  6. 12月22日内容总结——django中间件的三个了解要求的方法、基于django中间件的功能设计、cookie与session

    目录 一.django中间件三个了解的方法 二.django中间件五个方法的执行流程详解 三.基于django中间件的功能设计 功能设计介绍 如何利用字符串导入模块 功能模拟 四.cookie与ses ...

  7. JSP第一次作业

    1.环境搭建,运行出来一个JSP页面,显式hello <%@ page language="java" import="java.util.*" page ...

  8. GaussDB(DWS)现网案例:collation报错

    摘要:用户创建hash分布表,使用pbe方式执行使用分布列作为查询条件的语句时报错 本文分享自华为云社区<GaussDB(DWS)现网案例之collation报错>,作者: 你是猴子请来的 ...

  9. Docker命令的自动补齐

    Docker命令的自动补齐 背景 在linux下输入命令或文件都是可以自动补齐的,这个特性极大的提高了我们的效率,多数情况下我们很少用命令参数的自动补齐. 但对docker git这类参数特别多的命令 ...

  10. MySQL-SQL语句查询关键字

    1.SQL语句查询关键字 1.select:指定需要查找的字段信息,eg:select *,select name.同时select也支持对字段做处理,eg:select char_length(na ...