Astrisk Blog

单元测试学习之路总结

• UNITTEST

之前为了在团队推单元测试,让研发能够更好地学习单元测试,总结下了下自己前几年学习单元测试的过程,并且挑选了一些自己看过的经典书籍或者一些相关的视频资料。

《.NET单元测试艺术》

这是本纯粹讲单元测试的书,也是唯一一本用C#来实现的单元测试书籍。作者重新定义了单元测试,更准确的说是优秀单元测试特性和价值。 书不但介绍如何从零开始用Nunit编写单元测试;也讲解如何解除代码依赖来实现单元测试,包含了STUB和MOCK;同时还特别用一章(第七章)讲解了优秀单元测试的支柱;附录A,设计和可测试性,也是值得细读和品位。同时书中还介绍了C#世界的优秀MOCK框架Rhino Mocks(优点是功能强大,缺点是语法比较麻烦,要是有段时间没用,可能需要重新温习);而且书中还讲解了管理和组织单元测试的技术以及如何确保项目中单元测试具有高质量。 总之,这是一本测试开发,白盒测试人员和开发必读的单元测试书籍。读完后使你对单元测试的价值有新的认识,并知道如何写出优秀的单元测试。

OO设计原则和《Head Frist 设计模式》

完成了第一步后,我们知道如何编写优秀单元测试和很多遗留代码为什么很难添加单元测试。但是我们新设计的程序或新编写的代码怎么才能具有测试性。既然我们使用的是面向对象的语言,那就不得不先了解OO设计原则和面向对象设计模式。关于这块,我也只是了解,只能给出相关的学习资料,不能给出太多意见。我是先去了解OO设计原则,再去看设计模式,我选的是《Head Frist 设计模式》,主要是这本书写的比较风趣,读起来比较轻松,易懂,适合入门者。 参考链接: http://www.codeproject.com/Articles/567768/Object-Oriented-Design-Principles http://blog.csdn.net/Eric_Jo/article/details/6818552 这个可以去网络搜索下,大把把的资料。

《面向对象分析和设计(第3版)》

经过第二步,我发现自己在写代码时,还是按照之前的顺序结构去实现,很难一开始就用面向对象的思想去思考问题,分解问题,抽象问题。这时候买了这本书,去学习怎么用面向对象的思想去分解问题,抽象和结构化程序设计,顺便把UML给了解了一下。虽然看的糊里糊涂的,但是还是有些收获。(尽管自己心里觉得是看明白的) MOCK中国,正好有这些视频教程,如果有时间,可以把书和视频结合学习,应该会轻松些。不过课程为12周,需要些毅力坚持哦,小伙伴们。课程链接:http://www.mooc.cn/course/250.html

接口编程

经过以上的学习,我们知道了代码应该依赖于接口和抽象,但是怎么样定义接口和使用接口编程,你是不是还有疑惑或者再寻找相关的例子,当然对程序猿来说,最好还要有code。那这个课程一定可以给你一些启发。本课程从C#的interface,Abstract Classes 和Concrete Classes的基础概念开始,一步步讲解用面对接口方式构建可扩展、可维护和可测试的应用程序。而且课程里面还包含了接口隔离原则、接口和抽象类对比、更新现有接口、依赖注入、MOCK等高级主题。特别是课程里面的Repository Pattern值得经常编写跟数据层交互代码的童鞋参考。 课程链接url:https://app.pluralsight.com/library/courses/csharp-interfaces/table-of-contents

《测试驱动的面向对象软件开发》

这是本TTD实践的指南书籍。虽然书里面的例子,是用Java来实现的,但是书中传播的思想,则不分语言,同样可以使用在C#编程中。抛开TTD的编程实践,书中的第六章(面向对象风格)、第七章(实现面向对象设计)以及第八章(基于第三方代码构建)能够给我们在程序设计提供一些思考,构建有层次感的代码,使应用的结构向“端口和适配器”架构发展。第四部分“可持续的测试驱动开发”用五章来讲解测试,如果实现测试的可读性、灵活性、表现力以及测试诊断。本书我也只是看过第一遍,里面很多精神没有领会,不过这个确实是本好书。同时关于TTD部分,零迭代创建行走骨架,一开始构建可交付程序实现真正的敏捷也是很有意思。

《整洁代码》和《重构 改善既有代码的设计》

这两本书就不需要更多的废话了,前者我看完了,后者看了一部分。里面提到的很多思想跟我们构建可测试性程序是一致的。不过书中的例子都是Java代码。

除了以上这些书籍,个人还看了很多的视频,blog,还有就是TDD的相关的书籍,后期也会把这些学习资料整理出来。