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. 持续执行和改进

最新文章

  1. Qt 中使用Singleton模式需小心
  2. Java新集合
  3. C#联合Union的实现方式
  4. Windows硬件断点-实现单步异常
  5. [工作中的设计模式]观察者模式observer
  6. 记一个dynamic的坑
  7. CSS3实现文字描边
  8. C语言undefined behaviour未定义行为
  9. SQL Server 排名函数实现
  10. Android学习笔记-EditText(输入框)(二)
  11. this到底指向哪里
  12. 学习web前端技术的笔记,仅供自己查阅备忘,图片上传预览
  13. mybatis-generator自动生成代码插件
  14. laravel5.5+vue+Element-ui+vux环境搭建(webpack+laravelMix)(转)
  15. XMPP大杂烩
  16. ECharts注释
  17. mac 报错Root chmod operation not permitted on file
  18. Annoy 近邻算法
  19. [洛谷P2066]机器分配
  20. WPF绑定的ListBox获取ListBoxItem及GoToState应用

热门文章

  1. Java学习笔记:2022年1月7日
  2. AtCoder Regular Contest 148 B - dp
  3. CDH-hive内进行删除操作
  4. pymysql在读取bit类型时显示x00的解决办法
  5. 序列化框架-Kyro简述
  6. LTC2440串行SPI通讯时序
  7. 微软外服札记④——Spark中的那些坑...
  8. 定时调度插件------Sundial
  9. Azure Artifacts--全平台的程序包管理仓库(支持nuget)
  10. Nacos注册中心 (介绍与配置)