我是这样理解TDD(测试驱动开发)的

2010-05-24  苗田丽 


TDDTest Driven Development.

软件测试最早提出在软件工程中的瀑布模型,需要在开发编码之后对软件进行测试
后发现软件测试应该提前,与开发同步,也就有了V&V模型
之后又有人提出,测试应该在开发之前!于是就有了测试先行的概念,TDD也就诞 生了。

TDD到底是什么呢?

我们来看一个比喻:

  • 工匠一:先拉上一根水平线,砌每一块砖都与水平线比较,使得每一块都保持水平。
  • 工匠二:先把一排砖都砌完,然后再拉上一根水平线,看哪些砖有问题,对有问题的砖进行调整。我们就是在按工匠二的方法干活,甚至有时更笨,把整面墙都砌完了,直接进行集成测试,经常整面墙推到重砌。

 

TDD类似工匠一的做法:

  1. 在问题出现之前,分析、预见可能出现的问题。工匠一、二都知道砖有对不齐的可能,做为测试人员我们都知道,软件或多或少会有问题,如果能在开发之前预见开发过程中会出什么样的问题,测试将会有质的改变。
  2. 开发人员根据测试人员所预见的问题开发,防止这些问题的发生。这是测试过程质的改变,测试不再是去找bug,而是引导开发避免问题的发生。测试的流程和作用也发生了改变,测试不是再等墙砌完了,推了再砌,而是和开发一起努力,争许一次把墙砌好,要以最小返工率为目标。
    或者说 我觉得TDD应该努力做到QA(质量保证),而不是仅仅是QC(质量控制),所以TDD不是预见可能出现的问题,而是保证软件开发过程向着正确的方向前进。

你觉得呢,谈谈你的看法吧!



533°/5240 人阅读/9 条评论 发表评论

程艳  2010-05-24

理解得不错。。学习啦


李维敏  2010-05-25

学习了


熊志男  2010-05-25

很好啊


刘凯君  2010-05-25

学习中


曾晨  2010-05-25

所谓的测试引导开发!受教了


苗田丽  2010-05-25

曾晨: 所谓的测试引导开发!受教了
有什么见解,欢迎拿出来讨论


曾晨  2010-05-25

大家做测试的都知道 在中国测试行业并不受重视 第一在中国测试行业起步比较晚,测试理论测试技术远落后于西方国家 第二就是测试人员的职业技能方面比较欠缺(不否认也有很多测试牛人)在测试人员与开发人员没有同等地位的情况下 导致测试引导开发只是空话 我们既然短时间内改变这种现状 那么我们就只能慢慢积累一些经验(我们公司是做一些公共测试用例,如界面、登录退出、安装卸载等,做一些成熟产品的自动化测试脚本) 然后去影响开发人员 让他们在开发软件的时候去注意些什么 哪些是我们和客户关注的 在一定程度上减少这种常见问题的返工率 若真要做到引导 那么就去找个高级测试工程师 做白盒吧


曾晨  2010-05-25

讲到这里也简单讲下集成测试的方法,所谓的集成测试有两种方法:增量式和非增量式
非增量式指:把所有模块按设计要求一次全部组装起来,然后进行集成测试,这是比较常见的方式,我们公司就是用这种方式进行测试的。
增量式又分为两种:自顶向下集成和自底向上集成
自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。
自底向上测试是从软件结构最低层的模块开始组装测试。因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。
增量式没怎么研究过,可能部门发展到灰盒测试的时候才会考虑这两种方式,不过很多公司的笔试题会问到这些


王少平  2011-12-02

学习了。。。
TDD不是预见可能出现的问题,而是保证软件开发过程向着正确的方向前进。

解了我的困惑。


登录 后发表评论