敏捷开发 - 开发实践:测试驱动开发(TDD)

TBD

什么是测试驱动开发(TDD)

测试驱动开发(Test Driven Development, 简称TDD)是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。

狭义的TDD和广义的TDD

TDD和传统开发测试有何区别

如何进行TDD

在做TDD时,一个周期(红-绿-重构)如下:

  • 写一个测试(红)
  • 让测试通过(绿)
  • 优化设计(重构)

然后重复这个周期。

TDD实践案例

进一步理解

我们通过几个问题进一步理解TDD。

TDD核心思想是什么?

TDD的核心思想可以总结为如下4个要点。

  • 测试先行

  • 迭代开发

  • 持续重构

  • 持续集成

为什么很多团队无法执行TDD?

软件开发领域常讲“没有银弹”,同样TDD也不是银弹;很多开发团队无法执行TDD主要来源于以下两个方面:

  • 有些场景并不适合TDD方式

  • TDD对团队本身有一定的要求

  1. 团队对质量管理的要求和认同:测试驱动开发只是一种敏捷开发方式,它是将测试提升到与开发同等重要的位置,以保证在敏捷的迭代开发中保持软件的质量。有些团队没有完善的软件开发质量体系和资源,没有将质量规范融入到整个开发流程中(也没有专人或团队来约束规范),甚至团队生存都存在问题,追求短平快更不会关注质量(@pdai: 想起一句经典台词:我都混到吃泡面了,我还在乎健康?);在这些情况下团队对质量管理缺乏认同,对开发测试的工作就变成了负担。
  2. 团队对需求和任务拆分的能力
  3. 团队对重构的理解和能力
  4. 团队对协作的理解和能力

AMDD:通过敏捷模型拓展TDD?

https://www.guru99.com/test-driven-development.html

参考文章

https://kentcdodds.com/blog/when-i-follow-tdd

https://blog.csdn.net/weiwei9363/article/details/117805722

https://www.guru99.com/test-driven-development.html

https://github.com/hxfirefox/blog/blob/master/TDD/TDD%E9%9A%8F%E6%83%B3%E5%BD%95.md

http://agiledon.github.io/blog/2013/12/25/thought-about-applying-tdd/

https://www.cxybb.com/article/zanfeng/119480625

联系我

添加@pdai微信

PS:添加时请备注Java全栈,谢谢!