《测试驱动开发》学习笔记

测试驱动开发首先是一种分析方法,它迫使程序员仔细思考要做什么和不要做什么,而不是如何具体的实现。特别是各种例外的情况,并用程序语言正式的写下来。这就好像在程序员的任务和程序员之间签订了一个清晰的正式合同。

测试驱动开发是一种设计方法。Unit Test测试是一段程序,而不是一个想法。程序员必须清晰的定义程序的界面才能写出它的Unit Test。而这时程序员是不知道也不需知道里面的具体逻辑是如何实现的。程序员只需要考虑Class的接口和功能。

测试驱动开发是一种质量控制方法。

测试驱动开发是一种重构和优化的方法。

测试驱动开发是把需求分析,设计,质量控制量化的过程。

测试驱动开发的优点:

快乐工作的基础就是对自己用信心,对自己的工作成果有信心。测试驱动开发提供的测试程序集就可以作为信心的来源。

在开发中采用TDD,可以有效的避免过度设计和开发。如果程序员不愿为一个Method,那么这个Methdo多半是不需要的。

对程序员来说,通过运行Unit Test和Function Test, 每天下班的时候都可以清楚的知道自己的代码是work的。

对管理层来说,通过Nightly Test的结果,每天一早都清楚的知道项目的质量和开发进度。

开发小组间降低了交流成本,提高了相互信赖程度。

为利用你成果的人提供Sample,无论它是要利用你的源代码,还是直接重用你提供的组建。

系统可以与详尽的测试集一起发布,从而对程序的将来版本的修改和扩展提供方便。

TDD给了我们自信,让我们见天的问题今天解决,明天的问题明天解决,今天不能解决明天的问题,因为明天的问题今天还没有出现(没有TestCase),除非有TestCase否则我决不写任何代码;明天也不必担心今天的问题。

大部分时间代码处在高质量状态。

事实上提高了开发效率。

发现比传统测试方式更多的Bug.

避免了令人头痛的调试和节约了调试的时间。

如何做测试驱动开发??

在开发一个新的功能之前:

首先确定你要做什么(不是要如何做!!)比如说一个论坛的增加用户的功能,我们需要有一个method来增加一个用户:

public void addAccount(Account account)

当然包括成功增加一个用户(在数据库中插入一条记录)还包括如果已经由一个相同的用户,应该返回一个用户已存在的消息。

然后为这个功能(method)写单元测试例子(Unit Test)单元测试例子要覆盖这个Method的做什么。所以我们至少有了两个测试例子:

Test Case 1:测试成功增加一个用户

Test Case 2:测试增加一个已存在的用户

其他边缘情况测试:

Test Case 3: 传入的Account对象为NULL

写Production代码:

我们清楚知道这段代码需要做什么。因为我们有另一段代码摆在那里,清晰的表名这段代码的Contracts。

运行Unit Test

如果顺利通过,你已经很好的完成了你的任务。

如果没有通过,修补代码知道能通过Unit Test为止。

                                                                                                                             lfm课件学习笔记

posted @ 2008-10-30 10:21  IT-CEO  阅读(347)  评论(0编辑  收藏  举报