测试先行的12个好处

pdce 9年前

J.Timothy King写了一篇很不错的文章:“先写单元测试的12个好处”(Twelve Benefits of Writing Unit Tests First)。个人认为后半部分的文章有点多余。

然而,如果你还是不愿改掉你之前先写代码的老毛病,至今还认为个人习惯比先设计好的软件还重要,那我也只能叹息了。

J.Timothy King的文章写的有点弄巧成拙了,虽然单元测试的主张是重要,但是他的普遍接受已经是过去几年里软件开发市场上的进步了!

软件上的难题你是怎样解决的?开始会先做什么?在解决难题的时候会常问自己要编写怎样的代码才行,首先的重点是我要用什么样的方法才能解决这个问题。

每个人的思维里总是喜欢有一个假设,假设一些不会发生或是不存在的事情,我们已经有了判断的结果可还是要做上一些的事情,这种思维对于大部分人来也是难以改变的!

J.Timothy King罗列了12个方法,帮大家接受“测试先行”的观念:

  • 1.测试可证明你的代码是可以解决问题的
  • 2.一面写单元测试,一面写实现代码,这样感觉更有兴趣
  • 3.单元测试也可以用于演示代码
  • 4.会让你在写代码之前做好计划
  • 5.它降低了Bug修复的成本
  • 6.可以得到一个底层模块的回归测试工具
  • 7.可以在不改变现有功能的基础上继续改进你的设计
  • 8.可以用于展示开发的进度
  • 9.它真实的为程序员消除了工作上的很多障碍
  • 10.单元测试也可以让你更好的设计
  • 11.单元测试比代码审查的效果还要好
  • 12.它比直接写代码的效率更高

以上几条如果你有几条是认同的,那么至少有一半是正确的吧!对于同业都来说也是一个很大的进步吧。关于单元测试的重要性,个人是没有别的不同意见。

我一直觉得单元测试的倡导者在个人立场上有点急于求成了,总是希望从业者们会在短时间内改变开发软件的方式。特别是一些开发人员从来都没有用过,如果他们还没有打算把单元测试纳为每个开发项目的标准方法,个人觉得他们还不具备这个条件。

过于推崇单元测试也有可以会适得其反!如果真的变成我所说的那样,就真的是可惜了,关于软件测试这个问题来说,个人是认为测总是比不测的好。其实他也就是一种正式的随机测试,Fowler有段话说得非常好:

译者注:在软件测试中,除了根据测试样例和测试说明书进行测试之外,还需要进行随机测试,主要是根据测试者的经验对软件进行功能和性能方面的抽查。

译者注:Martin Fowler是世界级软件开发大师,在面向对象分析设计、UML、模式、XP和  重构等领域都有卓越贡献,现为著名软件开发咨询公司 ThoughtWorks的首席科学家。他的  多部著作,如《分析模式》、《UML精粹》、《企业应用架构模式》、《重构:改善既有代  码的设计》 等,都已经成为脍炙人口的经典。

总的来说还是望大家能够从新认识单元测试的价值和重要性。希望能改掉之前编写代码的老毛病,若能改变一些,可能在以后的工作中会有突飞猛进的效果,当然,也不能够急于求成,首先还是要先学会慢慢适应!

[原创翻译英文CC Licensed]

来自:http://www.techug.com/twelve-benefits-of-writing-unit-tests-first