首页 > 其他分享 >BDD测试和TDD测试

BDD测试和TDD测试

时间:2023-01-30 15:02:27浏览次数:37  
标签:BDD 代码 TDD 测试用例 测试 编写

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,测试用例,测试,编写
From: https://www.cnblogs.com/VoidCom/p/17075937.html

相关文章

  • Qt应用程序使用OpenCV库测试视频捕捉实例程序源码
    intmain(){VideoCapturecap(0);if(!cap.isOpened()){return-1;}while(1){Matframe;cap>>frame;if(frame.......
  • 软件测试自我介绍
    面试官你好,我叫xxx,今年xx岁,老家是xxx。 20xx年毕业后一直从事软件测试工作,到现在已经x年了。到目前为止,经历过x家公司。第一份工作是在xxx公司,工作了大概x年,岗位是测试......
  • Swagger测试Restful API
    swagger出现背景我们构建RestfulAPI的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端,不同端由......
  • SpringBoot单元测试:@SpringBootTest
    接上一篇:SpringBoot整合SSM添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId......
  • python接口测试常见问题。
    一.入参问题1.body字段类型1.如果数据是从excel提取的那么中文数据会提示错误。解决方法#media_value['body']=media_value['body'].encode("utf-8").decode("latin1......
  • 登山扣上架亚马逊平台需要做什么安全标准测试呢?
    近期,亚马逊在严查登山扣及其相关产品,被抽查到没有相关认证的登山扣产品将直接被下架!而登山扣上亚马逊,需要做什么认证呢?什么是登山扣登山扣是扣子的一种,顾名思义其就是用来在......
  • 使用tinyxml2读取ATML测试数据
    源代码如下:#include<windows.h>#include"tinyxml2.h"#include<stdio.h>#include<string>#include<vector>//usingnamespacestd;usingnamespacetinyxml2;......
  • Vulnhub之Christophe靶机测试过程(未能拿到shell)
    Christophe识别目标主机IP地址(kali㉿kali)-[~/Vulnhub/christophe]└─$sudonetdiscover-ieth1-r192.168.56.0/24Currentlyscanning:Finished!|Screen......
  • 移动app测试有哪些基本流程?第三方软件测试机构收费标准
    随着科技的发展,人们现在对于手机的依赖度越来越高,各类app的产出层出不穷。因此软件企业要想在如此激烈的市场上取得一席之地,app软件的产品质量必须做到严格把控,而软件测......
  • 软件测试员如何在敏捷团队增加自己的价值?
    敏捷测试是遵循敏捷软件开发原理的软件测试过程。与传统的测试模型不同,敏捷测试方法遵循开发方法,在该开发方法中,客户和测试团队会逐步提出需求。因此,敏捷的测试团队都......