前提

TDD: Test-driven development,是极限编程中倡导的程序开发方法,以其倡导先写测试程序,然后编码实现其功能得名。(维基百科)

内容

在三周内每周一进行的TDD培训,我对于TDD的认识比之前自己看的与琢磨的,更加深刻与清晰了,如今我想对于TDD应该是了解了一些了。

首先是单元测试的概念:单元测试

java中单元测试Junit使用:单元测试利器 JUnit 4

三步军规:1、写一个测试用例 2、快速添加恰到足够的代码使所有测试用例通过 3、重构。其实看似简单,但每句话都饱含深意。一个测试用例是因为我们要通过测试驱动出代码,其步伐不应该太大,以便于开发者专注于当前实现。快速是要求是我们的代码暴露于未经测试的环境的时间应该很短。恰到足够是要求“小步走”,写出的代码应该恰好使当前所有测试通过,主要是关注在业务上。所有是理所当然的要求。重构是最后的重头戏,有相当的技巧,追求的是代码的简洁利落。

测试代码书写步骤:1、构造环境 2、写测试内容 3、执行。

测试的广度与深度:开发中应该首要实现一个能用的东西,也就是深度。而后在进行一些功能的扩展,也就是广度。这其实也是敏捷方法提倡的,通过不断的迭代去开发我们的代码。也就就是我们要先提供给客户一个能用的东西,也许功能不是很完善,但是通过后面的开发来完善功能,来不断适应变更的需求。

测试的方向:在测试一个模块的是后要十分清楚我们能测试什么,该测什么。而不是稀里糊涂的无限扩展。有时候可能只需要来测试证明上下组建是通的,那就不需要做太多的横向扩展。测试应该从简单到全部,下一个测试可以根据上个的测试小步走来,而不是跨的太多,实现代码的范围也应恰好饱含测试,要做的就是测试代码能保证编码的正确。

分层与隔离:业务逻辑应该分层,以便于扩展可隔离测试,也就是常说的面向抽象编程而不是实现。分层也便于开发者实现隔离测试,来实现测试总线。

一些设计思想方法:(MVC,MVP 和 MVVM 的区别图示)。

重构方法:clean coding、代码大全。

参考的文章浅谈测试驱动开发(TDD)