认识 TDD

什么是TDD?

TDD 有广义和狭义之分,常说的是狭义的 TDD,也就是 UTDD(Unit Test Driven Development)。广义的 TDD 是 ATDD(Acceptance Test Driven Development),包括 BDD(Behavior Driven Development)和 Consumer-Driven Contracts Development 等。
本文所说的 TDD 指狭义上的 TDD,也就是「单元测试驱动开发」。

TDD 是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD 是 XP(Extreme Programming)的核心实践。它的主要推动者是 Kent Beck。

TDD 有三层含义:

  • Test-Driven Development,测试驱动开发。
  • Task-Driven Development,任务驱动开发,要对问题进行分析并进行任务分解。
  • Test-Driven Design,测试保护下的设计改善。TDD 并不能直接提高设计能力,它只是给你更多机会和保障去改善设计。

TDD 编码方式

  • 先分解任务,分离关注点(后面有演示)
  • 列 Example,用实例化需求,澄清需求细节
  • 写测试,只关注需求,程序的输入输出,不关心中间过程
  • 写实现,不考虑别的需求,用最简单的方式满足当前这个小需求即可
  • 重构,用手法消除代码里的坏味道
  • 写完,手动测试一下,基本没什么问题,有问题补个用例,修复
  • 转测试,小问题,补用例,修复
  • 代码整洁且用例齐全,信心满满地提交

TDD 的好处

降低开发者负担

通过明确的流程,让我们一次只关注一个点,思维负担更小。

保护网

TDD 的好处是覆盖完全的单元测试,对产品代码提供了一个保护网,让我们可以轻松地迎接需求变化或改善代码的设计。
所以如果你的项目需求稳定,一次性做完,后续没有任何改动的话,能享受到 TDD 的好处就比较少了。

提前澄清需求

先写测试可以帮助我们去思考需求,并提前澄清需求细节,而不是代码写到一半才发现不明确的需求。

快速反馈

有很多人说 TDD 时,我的代码量增加了,所以开发效率降低了。但是,如果没有单元测试,你就要手工测试,你要花很多时间去准备数据,启动应用,跳转界面等,反馈是很慢的。准确说,快速反馈是单元测试的好处。

TDD 的基本流程是:红,绿,重构。

更详细的流程是:

  • 写一个测试用例
  • 运行测试
  • 写刚好能让测试通过的实现
  • 运行测试
  • 识别坏味道,用手法修改代码
  • 运行测试
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文结构: 什么是 TDD 为什么要 TDD 怎么 TDD FAQ 学习路径 延伸阅读 什么是 TDD TDD 有...
    李浪溪_WaterLee阅读 76,963评论 16 168
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,846评论 19 139
  • 文/刘冉 最近几年“TDD已死”的声音不断出现,特别是David Heinemeier Hansson那篇文章——...
    ThoughtWorks阅读 1,874评论 0 9
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 22,470评论 7 278
  • 2018年4月6日 星期五 晴 今天,我们和天天一起去了昌平郊区延寿寺,在那里我们玩的很嗨。回到家我就更嗨了,一直...
    福叶子阅读 178评论 0 0

友情链接更多精彩内容