敏捷中国2009大会TDD workshop随笔

敏捷中国大会已经结束,我9月12日参加了会议,下午与一些嘉宾在TDD workshop进行了结对编程活动,有一点感想。

 

我本来没打算参加TDD workshop,是临时被拉过去的。一坐下来就感觉非常尴尬──没提前熟悉题目就要跟别人pair,而且得以我为主,给别人讲解,而题目是个Mars Rover,足足有半页纸。我强迫自己冷静了一些,跟pair一块粗略看了题目,然后就从最简单的测试开始做了起来。

测试──失败──实现──通过──重构,基本按照这样的节奏进行,随着功能逐渐添加,到最后竟然发现功能全部实现了,真是出乎我的意料,因为初看题目时觉得蛮复杂的。我和pair都很高兴,然后对代码中一些严重的smell进行了重构,运行所有的测试,通过。

期间还闹了不少笑话,今年做了一个Rails项目和一个.Net项目,算来已经大半年没用Java,仓促间竟忘了Java语法,在TDD驱动类的方法名总是大写,害得小强在后面吼了好几次“这是Java”...

 

Pair期间有些朋友问了一些问题,常见的如TDD的好处(Kent Beck的测试驱动开发专门讲这个的)等,怎么写页面的测试(可惜现场没有环境,只好简单讲了一下)。有意思的是某位朋友问我们是不是用Junit、Ant等,刚回答“是”,该朋友很高兴的说他们也是,然后他biabia就讲了很多,其实我很想对这位朋友说,如果还只是用了Junit/Ant,你们测试自动化的程度还很低...

后来想了想,觉得可以把测试与社会联系起来,比较有意思:

  1. 无单元测试,单纯靠QA手工来测,可以算原始社会,估计这样的开发团队也不多;
  2. 有一些单元测试,但是基本靠自觉,其他测试靠QA,这可算作奴隶社会;
  3. 有自动化的单元测试,甚至有自动化的功能、性能测试,可算作封建社会,可能很多团队就这样做的;
  4. 测试驱动开发+自动化的功能/性能/集成测试+持续集成+QA手工测试,这算资本主义吧,做到这一步,自动化水平已经很高了;
  5. 最后就是完全自动化的测试,不过单纯追求自动化,势必有较高的成本,会得不偿失,所以像共产主义一样空中楼阁。

如果再有这样的机会,希望TDD workshop能够编程XP workshop,辅以持续集成,另外整一些Web测试的框架给大家演示,效果会更好吧。

 

 

你可能感兴趣的:(编程,ant,TDD,敏捷开发,单元测试)