四、考察第三步——收获价值
传统的方式,在产品生产出来之后,紧接着的是大量的测试,其中也包括单元测试;最后收获了产品、一大堆源代码和文档。而TDD的方式,既省去了单元测试的过程,同时还收获了另外一样上帝赐予的礼物——测试类或测试套件。
测试类绝对是一件奇妙的礼物。必须认识到它的价值不只是在于“发现价值”的阶段,它同样是我们的“收获”。
第一:比代码更好的文档、比文档更好的代码
有了它,不用钻进浩如烟海的文档里,四顾茫然了。文档的文字描述既不准确,容易产生歧义,又容易产生文档同步的问题。也许它能促进你对业务和架构的理解,但对于程序本身,你无法从文档中得到基本的启示。
那么看程序的源代码吗?你会在众多的类对象和方法中绕来绕去,最后一头雾水,精疲力尽之后,还是一无所获。
而看测试代码就不同了,你不需要了解每个方法的具体实现,因为测试代码是从客户的应用角度来书写的,看完测试代码,你会很轻松地理清程序结构的脉络。
第二:新兵训练营的绝佳教材
也许你的项目组新进了员工,如果他熟悉TDD,那么,这些测试类是他熟悉项目的最好文档;如果他还没听说过TDD,不用着急,先把这些测试类给他。只要他不是程序设计的新手,我想这个新兵会很快熟悉项目组开发的方式。再让他写几个测试样例,他会立即投入到TDD的怀抱中来的。
第三:满载而归的信心
项目开发中,成员最宝贵的除了认真、努力、团队精神之外,就是信心了。这里所谓的信心,并非是对自己能力充满乐观的估计和客观地评价后,表现出来的精神面貌,而指的是程序员对代码正确性的信心。无论这些代码是自己写的,还是他人写的,只要严格按照TDD的要求进行,你都会对它们充满信心。虽然不能保证没有bug,但必须承认的是通过单元测试,我们已经将bug降低到最小了。
五、结论
中国企业在企业运行价值链上,走好了利润最低的第二步,却忽略了“发现价值”和“收获价值”对于一个企业的重要性。韩国三星在几年之前还是一个亏损600多亿美元的企业,如今它已经成功地扭亏为盈,并跻身世界五百强。原因很多,但不可忽视的是,他在价值链的首尾两步中作得很好。从高端产品中发现价值,找到了目标市场;从品牌创造中收获了价值,走向了世界。
我不是说软件开发一定要采用TDD的方式,它自然也有很多缺陷。然而,我们在开发的过程中,同样要重视设计的“发现价值”阶段,然后在收获产品的同时,不要忽略了还应该收获其他同样值得珍视的“价值”。从这一点来看,也许TDD更符合这种价值链的模式。而我们程序员千万不要舍本逐末,过于偏执地重视“生产价值”,以致于在软件开发方法上,总是落后于人,进而受制于人!
最后,谨以我之愚见,思考TDD的方式,认为TDD内力精深,大约分为四种无上之力:
1、驱动力——驱动程序代码编写;
2、学习力——新兵训练营之绝佳教材;
3、自信力与他信力——bug降到最低;
4、控制力——与重构紧密接合,牢牢控制开发过程。
文章来源于领测软件测试网 https://www.ltesting.net/