在各种敏捷开发实践中,测试驱动开发一直处在最核心的位置。TDD的核心在于严格规定开发节奏,一次把需求理清,一次做对、消除返工,不用调试就能获得反馈。这是一个找虐的过程,他让你在走每一步前都必须先想好要达到什么效果,每一步都有充分的测试覆盖。里边有三个关键:
第一步任务分解:测试先行,分离关注点,并用单元测试表达;
第二步单元测试:遵循 Given-When-Then 三段式,符合极限编程原则;
第三步小步快走:此处的坑在于很多人容易一下写多,破坏TDD节奏。
但一旦会用,节省出的时间会远大于编写测试代码而产生的工作量总和。
你有没有想过为什么明明都知道有用,但我们就是不爱写单元测试?
很多人说需求急、没时间,就算想测试也找不到接缝。为啥呢?因为你写代码的时候压根就没想一会儿怎么测啊大哥。
那怎么办,后面交付压力还跟着呢。要不就先这样吧,先放着,等过两天有空了我再补。
基本功不过关不能全赖程序员,但凭本能开发+单元测试不到位,两个加起来就是天坑。
现在有一个趋势,越是大厂项目就越要测试先行,你在小厂越不写测试,就离大厂的要求越远,强者愈强,几年下来差距就是这么拉开的。
我曾经翻译过《重构》这本书,10年里卖了80万册。我在ThoughtWorks做总监咨询师时主导了华为、中兴的敏捷开发转型,带过上百人技术团队,我最关心什么?是一个人的工作方式,是基本功,很落地、很具体。现在圈子里很爱说高大上的概念,我泼盆冷水,90%的时间你都是在写普通软件,应对普通难度的技术问题。决定你效率高低的到底是什么?
就是你的工作方式和基本功,把这两件事想明白,你就能超过很多同行。
2001年我们测试驱动开发(TDD)圈里一个朋友,大家一个礼拜的活他半天就做完了,剩下四天半他就在那儿上网、炒股,后来炒股还赚了不少钱。
有人说没时间搞测试,当时他直截了当的说这是伪命题。
“你写测试的过程本质上就是在描述,用无二意的清晰语言去框定精准需求,本来就该你做的事之前不做,现在做你觉得是增加工作量,这个就很搞笑了”。
测试驱动开发会逼着他追问需求细节,有三个好处:
我是熊节,前ThoughtWorks总监咨询师,拥有超过十五年IT行业的从业经验,在金融、政府、电信、物流等行业的信息化建设方面有着丰富经验。
我曾经负责架构和开发多个大型企业软件系统,领导过包括华为、中兴在内多个领先企业的敏捷转型。我早年翻译了《重构》、《最后期限》、《与熊共舞》、《软件工艺》,影响了超过150万国内开发者。当年跟着我的小兄弟现在有火币网的首席架构师、有硅谷企业的CTO,继续发(tian)光(tian)发(jia)热(ban)。2个月前我和极客学院合作,训练了200+位开发者,帮助他们掌握TDD、打好编程基本功。我想做的事是,第一,通过实战营能让大家看到不同程序员的基本功有很大差距。第二,我会让他们通过刻意训练掌握TDD,练好编程基本功,改善开发方式,让自己受益。受益的形式可能就是别人5天的活,他两天干完,就算公司强制996,他也可以用剩下3天学点新东西,为有一天不996做准备。第二期《敏捷开发实战营》将在8月8号上线,我会亲自带队,训练出一支能熟练应用TDD的敏捷开发团队,改进工作方式,提高编程基本功。不论你是工作1-3年的新人、3-5年的进阶者、还是leader级别,都能掌握测试驱动开发的基本节奏
用测试用例描述沟通需求
编写失败的测试,驱动产品代码
提高开发效率,打好基本功,成为国内开发快、质量高的那批工程师。我自己亲身用了10年测试驱动开发,深知TDD的好处。我的想法是尽量影响每一个程序员,先让一部分人练好基本功、代码又快又好,当这批人越来越多的时候行业风气就会改变,能力不行的人也会被带动。
如果你是1-3年新人,想获得更多机会,一定要一开始就有更高级的编程心法;
如果你工作了3-5年,想突破技术瓶颈,跳槽一线大厂,TDD就是你能拿出手和别人竞争的差异点;
如果你是技术leader,想整体提高团队效率,这套华为、中兴验证过的敏捷开发方法大概率也会适合你。
你的收益是:
可应用到工作的测试驱动开发方法;
完成敏捷开发核心实践;
完成3个项目,共计12个任务训练;
打好编程基本功,提高10倍开发效率。
训练营从8月8日开始,通过线上形式,一共3个项目,包含12个任务,采用图文、视频录播形式。
预计学习时长21天,即使你无法在指定时间完成训练,课程在1年内可以反复观看。说个细节,实战营里有一个项目叫Args,完成这个项目要多久?一般程序员需要4小时,我们做的最快的同学是27分钟。极客学院告诉我这就是宣传点,10倍提高开发效率。我一开始觉得夸张,直到有一天一个学员拿着这个项目找到一个经验很丰富的开发,对方一看,说,我估计两个星期吧,这个同学就震惊了,然后对方又补了一句,澄清需求大概就要1、2天。“最大的收获是学习了TDD编程思维,先确立目标再行动,一步步快速迭代,确保质量,还了解到了codingdojo这种编程方式,希望能一直坚持下去,不断提高效率(◔◡◔)”
“FizzBuzz练了大概15遍左右,最后控制在10min内,重新拆解细分后,敲代码时确实更清晰,体会:子任务的拆解很有用,第一次比较粗粒度,第二次梳理了类关系,还要继续练。”
“终于做完了最后一题,自我觉得可读性可以了,总结一下收获:1. 编码节奏和思路更清晰了,原来想很久才敢动手,现在5分钟提交一次,而且有单元测试保证,根本不用担心出错。2. 对任务的拆分有了更深刻的理解,真正落实成一行行测试。拆分了需求以后,保证了每一步都很小,同时也保证功能很单一,很难出现那种动不动几十行并且逻辑很复杂的代码。3. 有了单元测试保证,下一步追求更简洁,可读性更高的代码。感觉这么多天没有白练,编码能力有了很大的进步,感谢这个训练营,拯救了一个以为会写代码的我,以后会在工作中更多的尝试TDD,估计这辈子都离不开它了。”“从刚开始的蠢蠢欲动再到持之以恒,确实学到了很多东西,框定需求,识别坏代码,marserover时间花的比较多,代码里还充斥着switch,加强重构。”“1. 去除重复代码 2. 分割常量抽取 3. 函数替换循环不断优化!”事实上,如果不是一对一的电话调研,我很难相信第一期的同学里还有这么多高手——· 前百度教育事业部高级Java工程师 陆羽
· 极客学院技术总负责人 Kevin
· 学而思web开发工程师 李坤
· 小米金融高级前端工程师 李志明
· 华为高级 C++开发工程师 孟广明
· 飞羽科技有限公司CTO 小白
· 支付宝小程序 高级Python工程师秋叶
· 阿里巴巴-java工程师 李若舟
· 拉勾网Python工程师-zhangwl
除此之外我们还邀请了华为、ThoughtWorks、腾讯、阿里巴巴的HR驻场,为优秀学员提供内推机会。课程不限制开发语言,只要你有开发经验,无论从事的是Java、Web、Python、PHP……都能报名,这是具体项目内容:你将和来自各大IT公司的中高层开发者一起,共同成长,你的选择将让你成为未来中国互联网的中坚力量!
往期线下聚会 你能找到我吗?我经常引用的就是《灌篮高手》安西教练的话:“投2万个球吧。”你没有投2万个球,学多少招式都没有用,只有当你真正开始训练,你才能体会到编程效率提升10倍的感觉,这是飞一般的感觉。
第二期【敏捷开发实战营】
2. 8月8号开营,限时优惠,扫码立即购买。

限时扫码,一顿饭钱,就能提高开发效率,为自己买单。