开篇词|为什么TDD是当前最具工程效能的研发流程?
隐式程序员测试(Implicit Developer Testing)
“测试应用”(Testing Application)
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
“跑一下”(Run it in a local testing environment)
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
“调试”(Debug)
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
测试驱动开发的核心逻辑
为什么要学习测试驱动开发?
学习测试驱动开发的难点在哪里?
开篇寄语
- 深入了解
- 翻译
- 解释
- 总结
测试驱动开发(TDD)是一种工程化的研发流程,以测试为里程碑点,帮助开发者把握整个研发过程。文章通过讨论“隐式程序员测试”(Implicit Developer Testing)的概念,揭示了在正常软件开发模式中,程序员实际上一直在进行各种形式的测试。验证测试与定位测试贯穿整个软件构造过程,构成了整个开发流程的骨架。TDD强调以自动化测试取代低效的手动验证和定位测试,将软件流程中的低效测试手段替换为可重复、高效的自动化测试,从而提高工程效能。TDD并非仅仅关于“怎么写测试”,而是关于工程化的研发过程,以测试为里程碑点,提高工程效能。文章深入浅出地解释了TDD的核心逻辑,为读者提供了对TDD的全面理解。 在学习测试驱动开发时,可能会遇到一些困难,如测试从哪里来、写什么样的测试能够驱动功能进展、以及如何在不同场景下应用TDD。作者以视频展示为主,文字讲解为辅,通过编码练习和实战项目环节,帮助读者深入理解TDD的核心理念与方法。作为TDD的实践者,作者强调TDD对于提高工程效能的重要性,并鼓励读者分享对TDD的看法和实践体会。 总之,本文通过深入讨论TDD的核心概念和方法,以及作者的实践经验,为读者提供了全面的TDD理解和学习指导。文章内容丰富,适合对测试驱动开发感兴趣的技术人员阅读。
2022-03-1680人觉得很赞给文章提建议
《徐昊 · TDD 项目实战 70 讲》,新⼈⾸单¥98
全部留言(38)
- 最新
- 精选
- 🐑置顶TDD专栏福利大合集: 1、打卡赢好礼(4月23日-5月10日):正在进行中,学习专栏第1-10讲并在留言区打卡,结束后奖励; 2、代码亲手评(5月底):预计打卡结束后启动,完成前10讲的打卡,即可提交代码练习作业,徐昊老师会亲自点评; 3、线上带你练:根据专栏更新节奏和老师时间安排确定,徐昊老师会线上带四个同学手把手地改代码,敬请期待! 具体活动介绍见 👉 http://gk.link/a/11jPi2022-04-281
- 俊伟之前拜读《测试驱动开发》觉得这种方法真了不起,之后在工作中也是一直坚持实践。实践TDD真的可以让开发效率变快。现在写代码,早就把Postman之类的工具抛到脑后了,完全通过单元测试来构建可靠的应用。个人感觉使用TDD是一个先慢后快的过程,开头可能会慢一点,但是越往后测试越多,代码写的越快,真的很神奇。
作者回复: good for you
2022-03-1716 - 术子米德🤔☕️🤔☕️🤔 * TDD带给我的最大改变,那就是先去设定验收的形式和手段,即确定验收的边界,然后整个实现都在趋近这个边界。这种方法刚开始用,很难受,原因在于自己经验不足,不知道怎么验收自己的成果。随着经验的增加,知道如何准确验收自己的成果,就会自然而然TDD。如果是分派任务给大家,个人实践下来,TDD也是优质武器,就是在分配前,对将来交付的内容有验收的预期,会极大提高交付的质量,更不会在交付时带来惊吓级别的惊喜。 * 所以说,TDD在开发初级,会有难受,在开发中级,会自然形成。如果某个所谓的资深,还在说TDD的优劣势,尤其各种不对付,那么大概率他没有体验过一把交付无缺陷的代码,更大概率他卖下过巨量技术债务,要么他本人还在还债,要么已经把债务转嫁给某些无辜开发。
作者回复: you got it
2022-03-276 - CV对于tdd的理念非常认可,但实际工作中接触的很多都是老项目,一个方法几百行起步,各种反射、静态方法,想写测试感觉都无从下手,更别说tdd落地。希望老师可以讲讲老项目如何开展测试工作
作者回复: 可从任务分解入手
2022-03-204 - tdd学徒很硬核 还配有字幕 感觉可以不用录音 文字加视频就好了
编辑回复: 嗯录音是专栏的交付形式之一,在这个专栏里,我感觉可以不用听录音,看文字和视频就够了
2022-03-1722 - 钱忠飞请问课程中有springboot下tdd落地的内容吗?
作者回复: 没有 有自己实现一个简单的spring的内容
2022-03-172 - Sarah内容非常的不错,在工作中也一直在实践,并尝试跟测试用例结合,以达到减少手动测试的目的。 对于这个学习形式,个人认为音频加视频的形式,有点打断学习的体验了,感觉可以都用视频的形式就好,不然要一直音频和视频之间切换,体验感不佳
编辑回复: 我觉得,音频都可以不用听,看文字稿➕视频就好咯
2022-03-162 - 爱乐之城老师讲的这三类场景日常前端开发中也会碰到,甚至更频繁,比如页面的展示就可以算是「跑一下」验证。请问老师对于前端该写哪些范围的测试,有建议或者单独的章节来讲吗?
作者回复: 后面会有建议
2022-03-181 - Geek_fa4b49非常高兴徐老师能给大家一个如此基础又如此重要的课程,几乎所有公司都在强调单元测试的重要性,但是我看过很多代码,基本都没有单元测试,好一点的团队是刚开始有单元测试,后面就没有继续维护了。大家都这么重视单元测试,但是为什么都没有坚持下来呢?主要是单元测试成为了项目开发的累赘,没有用TDD。如果是先写代码,再写单元测试,很容易给人一种多余的感受,而且为了测试而测试,就会导致测试无群无尽,甚至连整数的边界都纠结要不要一块测试了。如果用TDD,从test case的角度去设计测试,就不会存在这样的问题。 文章的一个观点非常重要,我们并不是写测试想取代测试人员,而是我们换了一种高效的测试方法而已。我们让测试粒度更细,测试自动化,提高测试的效率。无论如何程序员自己的白盒测试都是要做的,那我们使用TDD这种好的工程实践方法,可以使我们变成高效可靠的程序员。
作者回复: 定位测试 白盒还是别做了
2022-03-1721 - 临风工作快一年了,刚开始就知道了TDD,但是一直没有得其要领。后面也接触到了alpha测试,有了自己对开发测试的思考,但始终没有找到一个最佳实践,而自己对测试的理解也在一次次的开发中不断的变化。一开始初生牛犊不怕虎,看到质量较差的代码就想重构、重写,到后面逐渐不敢去碰了,保证自己的代码质量就行了。看着那些老代码,有种心有余而力不足的感觉。自己开发的代码一般都会有测试代码的覆盖,但并不是按照TDD的流程,交付时间又紧张,如果不写测试用例,就能更早是转测代码,有时也会怀疑自己写这些测试用例真的有意义吗,是不是只是自己的自我感动罢了?这次课程,感觉是打了瞌睡来了枕头,非常感谢老师和极客时间这个平台,希望未来自己能真正用好TDD,提高代码质量。
作者回复: 早转测试意义不大 减少返工是目的。毕竟做的极端,可以一行代码都不写就转测试
2022-03-20