mysql,Linux,HighPerformance,ruby on Rails

2010年2月19日星期五

第一章体会,About Driving Code Through Tests

http://covers.oreilly.com/images/9780596523015/cat.gif
《Ruby Best Practices》是一本很棒的Ruby技术提升书籍。有了它,成为Ruby"大牛"只日可待啊。呵呵。
首先第一章(Driving Code Through Tests)就从测试开始,足以显示测试技巧的重要性。那个咱们扪心自问,你在写最近的代码中是否有使用过Test?你有哪些不爽的地方想解决?不管怎么说,我是带着这些问题去看的这章。

第一步,Designing for Testability,书中讲的就是如何测试,是不是遵循"Red, Green, Refactor",按此法来跑测试会有什么误解,书中有一个论断:how much work needs to be done between each phase of this cycle.实际上这是在遵循TDD开发过程中遇到的比较实际的,并且是程序员需要面对的问题。所以这才是最重要的,这是一本写给Coder的书,它不是"教条课本",对咱们大白话来说,实用主义,拿来用先看看吧。因为书中代码使用的是Ruby Core Library,Test::Unit,所以有通用性,大家直接可以上手。事实上,在新手阶段,使用好Unit已经是很好的开始,而使用RSpec这种更为人性化的"复杂"的多的Test FrameWork来说,你应该在Testing学习中使用UnitTest.

第二步,Testing Fundamentals,测试基础,没有人天生就会写测试代码。别看那些牛人发布在github上的代码,上来就有test代码(当然也有垃圾代码,小心),让我等除了膜拜之外,无从下手。那么TDD中测试的关系点在哪几点呢,书中给了详细解释。

第三步,Testing Exceptions,测试异常,这是我之前没有注意到的,就是一个知识点,就是要会使用assert_raises,assert_nothing_raised,个中体会这是行为测试里面的东西吧,细节啊,要注意。

第四步,Run the Whole Suite at Once,把多个Test打包,怎么实现的。这里有技巧。

第五步,高级测试技术,Using Mocks and Stubs,(题外话:这个术语翻译起来我感觉特别绕口,还不好理解。因为从原理上来说,这英文术语和它本来的原意是有一个联系的,不然人家用它干什么。但如果翻译成中文,那就煞笔了,从此诀别原来的本意了。建议还是背英文单词都比翻译从中文强。说白了,有些技术,你就看这关键的词,把自己的心得记下来,慢慢体会这也是一种积累。)那么什么是Mocks,Stubs?实话实说,我说不清楚,但Martin大叔有论断:Mocks Aren't Stubs,一大陀英文看着说来挺费事,更推荐台湾友人的中文心得Slide。反正说来说去,有一点我是明白的,Mocks多用,Stubs是老Test风格,仅此而以。但限于开源软件的多样性,不管别人的代码是使用什么风格,我认为只要管用就可以,因为有test,总是能读懂的,你说是吧。这种提到的问题是测试的可用性及覆盖率的问题,是属于高阶测试技术,一定要注意。详细的可看书中的观点。

第六点,高级测试技术,Testing Complex Output,我不认为这有多高阶,不过在开发OpenTaobao的Client代码时,确实遇到这个问题,并且我不知所措,最后情急之下,直接跑代码用肉眼来分析返回值,有点傻。:-(,看完这段内容后我终于知道问题出在哪里,以后我知道怎么作了。
在Testing Complex Output结尾的段落里有一小段高级测试技术的总结,都是精华。一定要关注。

第七点,Keeping Things Organized,管理测试代码,经验之谈,很好很实用。

That's All.

参考:
1. http://oreilly.com/catalog/9780596523015
2. http://blog.rubybestpractices.com/posts/gregory/015-rbp-ch1.html
3. http://www.martinfowler.com/articles/mocksArentStubs.html
4. http://www.slideshare.net/weijenlu/mock-arent-stub


--
tommy xiao
E-mail: xiaods(AT)gmail.com

没有评论:

发表评论