love fish大鹏一曰同风起,扶摇直上九万里

常用链接

统计

积分与排名

friends

link

最新评论

读 TDD 的总结

TDD 的总结

				
						读完TDD(测试驱动开发),发现其中主要就是在反复说了这么两件事情(也就是两个简单的规则):一、在写任何代码之前,写一个会失败的自动测试程序,即单元测试;二、消除重复设计,优化设计结构,即重构。整本书都围绕着这两个规则来进行说明,告诉读者到底要如何这样做?又如何分阶段应用这些规则?这两条简单的规则可以运用多深?
				
		
				
						第一部分通过一个简单的实例来告诉读者如何使用TDD,如何反复通过不可运行/可运行/重构/不可运行/可运行/重构来进行开发;第二部分告诉读者如何使用单元测试,怎样组织单元测试;第三部分则是将TDD分解成较小的步骤来进行详细说明,根据我对本书的理解,我认为需要完全将TDD运用到日常的开发行为中,则要按照以下非常细小的步骤进行:
				
		

1.       获得任务。即项目经理安排的任务。任务往往不止一项。将它们写入周工作计划表或者月工作计划表。

2.       选择任务。每天开始工作之前,将今天将要解决的问题写入工作计划列表。并选择自己最有把握完成的任务作为当前任务。

3.       分析并分解任务。将当前任务分解成一个个相对简单的问题,分解的问题最好是能在十多分钟之内能完成,并将它们写入工作列表。如:若要实现多币种相加,则可以分解为:实现相同币种之间的相加,不同币种之间的互换,最后才能实现不同币种之间的相加。

4.       写测试列表。将分解后的问题所对应的测试写入测试列表。

5.       选择测试。从测试列表中选择自己认为最有把握实现的一项。如:“同币种相加”对我来说是最有把握实现的一项,因此我最先来实现它,即先从它的测试程序开始编写。

6.       编写测试数据。写一个容易让人理解的必须实现的测试数据列表,尽量使用显然数据。如:用 String 表示 IP 地址 "255.255.255.255" 转换为 int ,在我们写测试数据时应这样写: (255 << 24) + (255 << 16) + (255 << 8) + 255 ,而不是写“ -1 ”。

7.       编写测试。选择一项最容易让测试通过的测试数据加入测试方法。断言优先,然后加入为了让断言通过编译的一切准备条件。

8.       运行测试,不可运行状态。

9.       编写方法注释,把所有想到的该方法要实现的功能写上。

10.   编写功能代码,使之达到可运行状态。

11.   重构,消除重复设计。

12.   往测试方法中增加一个新的小测试。

13.   运行测试,不可运行状态。

14.   修改功能代码,使之达到可运行状态。

15.   重构。消除重复设计。

16.   重复 12-15

17.   当无论如何也不能让该测试通过的时候,认真想一想是不是哪里出大问题了,如果实在想不出来的话,就将现有代码扔掉,重新开始。

18.   所有测试都运行通过之后,仔细检查所有代码,看是否还有值得重构的地方,并重构。

19.   提交 (check in)

20.   再选择测试列表中的下一个测试。重复以上步骤。

21.   当一天的工作结束时,若有某个任务未完成,则留下一个不完整测试,以便于次日能迅速回忆起当时写该代码时的想法,并接着写下去。

posted on 2007-01-18 15:54 liaojiyong 阅读(333) 评论(0)  编辑  收藏 所属分类: Testing


只有注册用户登录后才能发表评论。


网站导航: