关于单元测试本质的说明

关于单元测试,很多人对它都存在误解,更多的关注“测试”,而忽略了它更本质的一面,下面我就对单元测试的本质,谈谈看法。以下几段话是在《敏捷软件开发-原则、模式与实践》中摘录下来的:

1.     编写单元测试是一种验证行为,更是一种设计行为。

2.     单元测试的作用分为以下几方面:

Ø 编写单元测试第一个明显影响是程序中每个功能都有测试来验证它的操作的正确性。

Ø 还有一个更重要但不那么明显的影响,是首先编写单元测试可以迫使我们使用不同的观察点。我们必须从程序调用者的有利视角去观察将要编写的程序。这样,我们就会在关注程序的功能的同时,直接关注它的接口,通过首先编写单元测试,我们就可设计出便于调用的软件。

Ø 此外,通过首先编写单元测试,我们就迫使用自己把程序设计为可测试的,把程序设计为易于调用和可测试的,是非常重要的,为了成为易于调用和可测试的,程序必须和它的周边环境解耦。

上面的阐述与我们的实践体验是基本一致的,也就是“单元测试最重要、最本质的内容是设计”。不同的地方是:不一定非要通过单元测试这种形式来提高设计水平,只要你充分考虑使用者的要求,即使不使用单元测试也一样可以设计出良好良好的结构。同时我们提高了模板代码的比重,模板代码是经过精心设计、多处验证的“思想、结构、细节”的复合体,所以用它做出来的程序,错误会非常少,几乎可以无需专门的测试。并且模板代码是以过程为中心,服务于“框架模式,所以远非设计模式所强调的内容能替代。另外,模板代码是以开源的形式提供,强调“培训、运作,其“思想性、整体协调性、直观性、易接受性、灵活性、高度适应性、易改进性”都远非一般的工具所能比拟。在模板比较成熟以后也可以辅以一些代码生成工具来完成一些工作,这个时候做工具相对来说比较容易。所以模板代码并不排斥工具,只是它更关注反映整个“开发过程”,并随同“开发过程”的改进,用“代码”的形式来表达“改进后的过程”,强调“整体和谐”,而不是针对某一个方面做“最好的”。这遵循了一个指导思想:一个项目或团队要真正做好是由许多环节构成的,单一环节做得再好可能对事物本身也起不了太大的作用,我们必须权衡这些环节的投入与产出效益,力求管理中各环节的“和谐相处”,以“逐步渐进、平衡协调”的方式改善我们的过程。

 

 注:我们也可以这样理解“模板代码”的作用,“开发过程控制”服务于服务于“管理”,“架构模式”服务于“开发过程控制”,而“模板代码”是“架构模式的核心元素(不是所有元素)”,所以从这里我们可以看出“模板代码”是真正反应“管理中开发过程控制”的核心元素。如下图所示:



你可能感兴趣的:(关于单元测试本质的说明)