17 | TDD 就是先写测试后写代码吗?
郑晔
你好,我是郑晔!
到这里,我已经给你介绍了在真实项目中做好测试需要的基础知识。写测试远远不是用 xUnit 框架写代码就能做好的一件事,只有在工作方式、软件设计、编写代码、测试理念等方方面面都做好,我们才能做好测试。不过随之而来的是,我们有了一个强大的测试基础,这可以让我们放心大胆地不断向前,因为我们已经进入到编写高质量代码的正向循环之中。越写测试越安心,越安心也就越有时间编写高质量的代码。
有了这些基础,应对日常工作已经绰绰有余。不过在行业里总有人在探索着更好的做法,所以在最后的扩展篇,我将给你介绍 TDD 和 BDD 两项实践。在你学有余力的情况下,可以挑战一下,让自己再向前走一步。这一讲,我们先来说说 TDD,也就是测试驱动开发(Test Drvien Development)。
TDD 的节奏
或许你已经迫不及待地要举手了:“TDD 我知道,就是先写测试,后写代码。”但真的是这样吗?严格地说,“先写测试、后写代码”的做法叫测试先行开发(Test First Development),而不是测试驱动开发。
测试驱动开发不也是先写测试后写代码吗?二者之间有什么区别呢?
要回答这个问题,我们需要知道 TDD 的一个关键要素,TDD 的节奏:红 - 绿 - 重构。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
测试驱动开发(TDD)不仅仅是一种开发方式,更是一种思维方式,能够帮助开发者不断提高代码质量和开发效率。TDD的节奏是“红-绿-重构”,通过测试驱动开发,不仅能够完成功能,还能够不断改进代码质量。在TDD的过程中,需要先进行任务分解,把大需求拆成小任务,然后考虑代码的可测试性,编写出整洁的代码。TDD不仅在代码层面上写测试,更重要的是在开发过程中如何写测试。无论是否采用TDD的实践,从测试的视角出发看待代码都是非常有价值的一件事,这也是编写高质量代码的重要一环。通过TDD的思维方式,可以拓宽工作思路,不断提高代码质量和开发效率。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员的测试课》,新⼈⾸单¥59
《程序员的测试课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(10)
- 最新
- 精选
- 李威TDD是两头驱动:向前驱动出任务分解,软件设计,整洁架构;向后驱动出代码重构,整洁代码。
作者回复: 这个理解很好
2021-09-1032 - 阿姆斯壮早上下单购买了《修改代码的艺术》。看到了遗留代码的定义。才知道原来这些年自己写的代码,或者是项目中其他“大神”写的代码都是遗留代码。下定决心,为自己以后能高效工作。单元测试代码不能少。沉下心来,学好程序员必备的测试技能。
作者回复: 原来我也可以带货啊
2021-09-1324 - CV希望老师可以用一个简单的demo,来展示tdd的落地是如何进行的。理论非常动人,但是我个人觉得落地比较困难
作者回复: 你仔细看看实战,其实就是一个TDD的演示
2021-09-1221 - sylan215不知道开发同学能不能理解,我说一个测试角度的例子。 我面试时,会问一个简单的编码题,就是写一个函数,接收三个参数,分别是 2 个运算数和 1 个运算符,这个函数就把他们做个简单的运算,输出运算结果,其中,运算符只支持加减乘除四则运算。 大部分人写完后,我会继续让他写一下针对这个函数的测试点(测试用例的一句话版本)。 很简单吧? 但是会发现一个现象,比如大部分人设计用例时,都会有一条是「验证输入非法运算符时,输出提示错误」,但是他们的代码里面明明没有对这个逻辑的处理。 这我理解就是没有 TDD 的思想,TDD 除了想着功能要如何实现,还需要考虑会从哪方面「测试」,从而在编码时就可以考虑/设计的很完善。2021-09-1616
- aoe今天入门了TDD,第一次接触极限编程,感觉离大佬近了点2021-11-131
- terryking所以测试驱动开发,首先要有设计,然后再有任务分解,然后才有测试代码,然后再驱动前面的设计,向后驱动具体的实现,保证红绿闭环2022-11-21归属地:广东
- ifelse从测试的视角出发看待代码。--记下来2022-06-13
- ifelse以前不会也从来没写过测试,看了老师的专栏后,我已经在平时会刻意写一些单元测试了。2022-06-13
- 花花大脸猫虽然没有系统的学习过tdd,但是目前写单元测试的流程就是按老师所说。对于其中的任务分解其实还是认知不够明确,目前只能按照自己对于业务的理解主观的拆分,但是对于粒度的把握没有明确的概念,这块希望老师能解答下?2022-04-14
- linfei为了写好单元测试,我们需要解决的是代码设计中的依赖耦合问题。而TDD的重构环节,我们要解决的是代码的坏味道。坏味道就多种多样了,用代码扫描工具可以扫出很多来。那么是否有哪些类型的坏味道是需要重点关注的,会造成较大影响的,从而需要优先重构的呢?2022-04-13
收起评论