学习TDD:TDD的好处
上一篇 / 下一篇 2012-06-21 10:12:47 / 个人分类:杂谈
2d `6W\.V4z{p0 TDD的哲学为我们解答了这个问题:先编写测试用例(没有代码之前这些测试用例一个也通不过),然后再写代码让这些测试用例通过。更进一层的讲就是:编写足够的测试用例使测试失败,编写足够的代码是测试成功。我们编码的目的更加明确的。51Testing软件测试网$D,j$B'}"Z
51Testing软件测试网7cir(_,dTDD是大名鼎鼎的极限编程的一个最重要的设计工具之一(另一个是重构(Refactoring),这是它的荣誉,下面我列举几点它实际的好处。
e Fd5XC051Testing软件测试网 P*VL F2trTDD带来的好处有:
.Bt QlhtA051Testing软件测试网9Z'S#Mh0ZA1i;qs!f1、你会更加站在用户的角度去看你将要完成的产品,你要尽可能想到用户所有进行的操作。而不是从程序员的角度想用户应该会如何去使用我们的产品。51Testing软件测试网_?Y%_}/~v'n#U
-W,N)j"p?D5{0me0 2、测试用例是在对功能进行测试。在写代码之前先写测试用例,可以对我们编写代码提供指导性的参考。防止我们漏掉一些功能。51Testing软件测试网"t!\O1zNun
51Testing软件测试网F)ZB5X5DAwL\3、它使我们对自己代码有了信心,因为我们事先设计好的所有测试用例都Pass了。
H[7Z"o D*M.if0wd)Px(la%P7r0 4、如果在更改代码后测试用例不能通过,我们可以根据不能通过的测试用例精确的定位问题,并轻而易举的解决的这个bug。
u}(N2eIa0^w5e9y7Q0 5、哈!我们的一整套完备的测试用例在这里替我们把关(把的什么关?),我们就可以十分安全的使用极限编程的另一个最重要的工具——重构。重构改变的是 代码的内部结构,而不会改变外部接口功能。知道在做重构时测试用例是把的什么关了吧!很明显,测试用例是保证我们在进行重构时,不会影响到代码的外部接口 功能。所以我刚刚说,我们进行的重构是十分安全的。
l)c$M DNR0[3e*bI0u0 6、基于第5点,我们找到了重构的信心,必要时候你还可以痛痛快快的并且满怀信心的对代码做一场大的变革。这样我们的代码变得干净了,扩展性、可以维护性以及易理解性纷至沓来。51Testing软件测试网`nW1gl:b
.Bk6_m5XM,l0 TDD有这么多好处,但它也不是免费的午餐,它需要我们有设计完备的测试用例的能力(这项能力是长期理论与实践的结合体),否则你将会吃了亏编写了一大堆测试用例,却没测到点子上。可怕的是,你还对你“测试通过”的糟糕的代码满怀信心。
+{|wdnbm+Dsz0%s{W PCf"C8I0 TDD的主旨是高效,可能这个高效不是非常高的开发速度。
BJ+S7@R;G2LYnTF0$p'Z c!?qI[0 通常的软件开发过程是先写功能,然后再写测试。甚至有时候只进行某些方面的测试,或者有省事的就略去了某些细小功能的测试,或者是忘了对这些模块的测试。
Iw6Y,so5DJ"q051Testing软件测试网7bs+c*p SAX这些看起来对软件影响不大,但是似乎有点过于自信了。因为我们是人,不是神,所以难免会出一些这样或那样的错误,而这些小的问题在项目整合起来以后进行排错是非常令人头疼的。
}#\(sse-e-W0E!Xa.uo0 TDD的思想是以测试推动开发进程。因为我们在软件开发之前,每个程序单元的功能都已经确定了。程序员在理解完整个程序需求以后,直接进行开发,有可能 会因为种种原因考虑不很周全,似乎功能实现的没有问题了,但是其中却可能隐藏着非常可怕的Bug。TDD促使开发人员先根据程序单元的功能编写测试代码, 就像是先建一个模型,然后向里面浇注合适功能的代码。最后满足所有的测试验证了,才能正常通过测试,这个程序单元才算完成。51Testing软件测试网&Bh([3_Y)aB)\
s;@ n7s0KLPSm0 这样消除了开发人员主观性的对程序单元健壮性的评估,更客观的验证每一个程序单元的功能实现以及可能出现的Bug。
wSag[)} p-N051Testing软件测试网([ l*Fg)U}W4x当然,这些操作都需要有大量的代码支持,所以费事是在所难免的,但是这点“费事”与健壮性非常强的代码相比,有些人还是偏向于使用TDD。
[ IX/e~g1K%x"V/o0mf{b ~9e^)\0 首先站在客户方代码的立场,可以获得更好的api。51Testing软件测试网G&v9zR([p s:IX%Of