盖房子时,工人师傅砌墙会先用桩子拉上吊线,以吊线为基准,以使砖可以垒的笔直。而测试驱动开发也是如此,先写一个测试,而后研发过程以此为基准,只编写能经过这个测试的功能代码。html
视频地址:https://www.zentao.net/xp/test-driven-development-80325.html/?from=upbky编程
顺序颠倒下,先垒砖,再拉吊线看墙面是否笔直,不直的话进行校订。这个过程就像传统的软件开发流程,先写功能代码,而后进行测试,有错误再一点点修改,所以,会严重影响研发效率。单元测试
代码整洁可用,是测试驱动开发所追求的目标。但有不少因素会妨碍咱们获得整洁的代码,甚至是可用的代码。测试
1. 只有自动测试失败时,咱们才重写代码;优化
2. 消除重复设计,优化设计结构.net
这两条规则实际上也蕴含了开发过程当中所经历的阶段。 测试驱动开发的整个流程正是将目标拆分,先达到“可用”目标,再追求“简洁”目标。设计
1. 首先思考并编写用于定义产品代码 行为的测试视频
2. 运行测试,发现新增的测试不能经过htm
3. 编写适当够用的代码blog
4. 运行测试,直至测试经过
5. 重构代码,以消除重复设计,优化设计结构
6. 运行测试,验证重构是否引入新的错误,直至测试经过且无需再重构
7. 最后重复上述步骤
测试驱动开发实际上是戴两顶帽子思考的开发方式:先戴上实现功能的帽子,在测试的辅助下,快速实现其功能;再戴上重构的帽子,在测试的保护下,经过去除冗余的代码,提升代码质量。
测试驱动开发,要求测试能够彻底自动化运行,在对代码进行重构先后,必须运行测试。这有助于编写简洁可用和高质量的代码,能快速响应变化,并加速开发过程。
定律一:在编写不能经过的单元测试前,不可编写生产代码。
测试驱动开发主张“测试先行”,这意味着咱们必须先写单元测试,而且该单元测试必然失败,才能编写生产代码。
定律二:只容许编写恰好可以致使失败的单元测试,编译失败也属于一种失败。
测试驱动开发鼓励“简单设计”,以很小的增量进行开发,遇到设计问题时可以及时解决,不要指望一个测试能实现多个功能。
定律三:只容许编写恰好可以使得失败的单元测试经过的生产代码。
简洁,尽最大可能减小没必要要的工做,也是敏捷基本原则之一。要避免盲目编写未来有可能须要的代码。
遵循了测试驱动开发的这三条定律,那全部代码都是可测试的了。“可测试”的另外一个词是“解耦”,为了单独测试模块,必须将其分离,因此测试驱动开发强迫分离模块,迫使你们建立更好、更少耦合的设计。
Kent Beck最先在其极限编程方法论中,向你们推荐“测试驱动”这一最佳实践。极限编程中全部实践方法并非独立的,而是相辅相成的。欢迎你们关注极限编程系列往期视频,了解更多极限编程实践方法。
更多精彩视频分享:https://www.zentao.net/page/college.html/?from=upbky