我的神呀,测试驱动开发真的有效!
上一篇 /
下一篇 2012-11-15 09:32:02
/ 个人分类:杂谈
raxLhh+U#P0 我们经常听到人们宣扬说,在开发软件时写测试代码(单元测试,功能测试等)
能有效的减少产品中的bug。如何验证这样的言论?通常,这些人都是已经在使用驱动测试开发(TDD)或行为驱动开发(BDD),而且,他们所在的公司在
诞生第一天起就有着很强的测试文化。然而,如何能测量不写测试程序造成的影响?如何能验证实践TDD能真正的减少bug的存在?我们能否在一段时间里停止
写测试程序,看看这对软件缺陷数有多大的影响?这方法看起来不太现实。51Testing软件测试网+i.zN;s2OC*P]n#r
51Testing软件测试网*F(vm_}'Z9}f9}hL%B 这篇文章里,我将通过分析当前我工作中的真实数据来回答这个问题。以前我们的系统没有测试代码,可一旦开始进行测试驱动开发,我就成为了这种开发方法的强力倡导者。
1jn^o/tbU
c)_+V3IP051Testing软件测试网Vc#A!ne9` jNl b 测试驱动开发前的背景情况
Qw i?,i/h0:l1U$NYL ]
m0 我做Web开发已经有10年了,从2009年起就开始耳闻驱动测试开发(TDD)。从那时开始我就打算要多学学这方面的知识。我在当时的公司里已经干了两年,现在已经是2012年,在这个公司总共工作了5年,从后3年开始实施测试驱动开发方法。
O_gp)K3M"[Q+P051Testing软件测试网`Rc
J"VIy6ZV?MB 这个过程非常有趣,因为如今我可以浏览我们的bug跟踪系统,汇总这段时间的缺陷统计数据,看看TDD对我们的程序代码质量有多大的影响。51Testing软件测试网Nw{G@Q
51Testing软件测试网\4X+WD
lH6sL 简单的说一下我们的软件技术构成:我开发基于PHP和Javascript的系统UI部分。我是UI部分的主要开发人员,这就是说,如果UI上有bug,我基本上要对此负责。UI跟后台的C++服务交互,这服务运行在Oracle数据库上,通过PLSQL代码处理数据。51Testing软件测试网JAB{+|1D4~{
b KD
2?C*~+P3Ah-x$]0 UI部分的PHP代码是唯一实施了测试驱动开发的地方。我们的Javascript代码没有测试程序。遗憾的是,公司里的程序员都没有测试驱动开发的实践经验。系统其它层面的代码都没有实施单元测试或功能性测试(公司有专门的QA团队在开发完成之后进行测试)。
x"X(FZm0p+?7Lv-K(]0 这使得我们的统计分析数据看起来非常的明显。我可以看到,随着时间的推移,我们的整个产品和UI模块的缺陷数字的变化。这使得我有办法来回答最初的问题,这个问题在此可以用这样的问题复述:使用测试驱动开发能使我负责的UI模块的缺陷数下降吗?
F]Fv?*I3Zg5z0p9npz%f%u!h0 测试驱动开发真的有效吗?
n^(TPJ4j2~ S051Testing软件测试网9Z;P1ZGB)LA7Y 下面这个图表是由我们的bug跟踪系统生成的。它向我们展示了UI部分的bug和整个产品的bug的对比比率。