先介绍一下测试驱动开发(TDD)
从今年 5 月甲骨文裁员开始,腾讯、阿里、京东、今日头条、几乎所有一线大厂都在做敏捷转型。
很多程序员以为贴贴卡片,开开站会,熟练跑着敏捷的各种套路就已经很敏捷了,可这些问题依旧存在:
拿到一个需求,琢磨半天想不明白如何分解下手;
代码测试不充分,上线后被抓来处理问题,代码有没有坑自己不知道;
要改动老代码,不敢轻易下手改,每做点修改都很害怕。
有没有想过开发者的核心竞争力是什么,我拿什么吃开发这碗饭?
理解需求、拆分任务、编写测试、高质量的代码实现——很少有程序员意识到,我每天的具体工作才是我的基本功。
需求把握不准,写完 PM 不认;添加新功能就破坏旧功能,bug 越修越多;以上循环,就会陷进低效率的焦油坑。
而这正是测试驱动开发(TDD)要解决的问题。
很多人说写测试没时间、TDD 没用,就像 100 多年前有人嘲笑汽车没马车跑得快。
TDD 要达成的是这三个目标:
第一,准确把握需求,开发出来的功能一定是客户想要的;
第二,保障软件质量,开发出来的代码一定是有自动化测试覆盖的。
第三,测试驱动开发,提高至少 3-5 倍开发效率。
测试驱动开发(TDD)是敏捷开发的核心实践,TDD 就像脚手架,为代码提供保护网,他的核心在于严格规定开发节奏,一次把需求理清,一次做对、消除返工,不用调试就能获得反馈。
唯一的不爽,这是一个找虐的过程,他迫使你稳定小步前进,但一旦会用,节省出的时间会远大于编写测试代码而产生的工作量总和。
里边有三个关键:
第一步任务分解:测试先行,分离关注点,并用单元测试表达;
第二步单元测试:遵循 Given-When-Then 三段式,符合极限编程原则;
第三步小步快走:TDD 迫使你小步前进,所以每一步都必须先想好要达到什么效果,每一步都有充分的测试覆盖。
受益的形式可能是别人 5 天的活,你 2 天干完,就算强制 996,你也可以用剩下 3 天学点新东西。
TDD 应该和谁学?当然是找最精通 TDD 的先行者!我非常推荐熊节,8 月熊节带队,带领 890+开发者完成敏捷开发训练,训练结束,如果你觉得没有提高开发效率,无条件退全款。
本文转载自健荐公众号。
原文链接:https://mp.weixin.qq.com/s/Mp1fV1HkIAdmgmhke0Mkaw
评论