Test Driven Development

2010-09-30  宋桂芬 

原理:测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。
测试驱动开发的基本过程如下:
1) 明确当前要完成的功能。可以记录成一个 TODO 列表。
2) 快速完成针对此功能的测试用例编写。
3) 测试代码编译不通过。
4) 编写对应的功能代码。
5) 测试通过。
6) 对代码进行重构,并保证测试通过。
7) 循环完成所有功能的开发。
为了保证整个测试过程比较快捷、方便,通常可以使用测试框架组织所有的测试用例。一个免费的、优秀的测试框架是 Xunit 系列,几乎所有的语言都有对应的测试框架。
测试用例的编写就用上了传统的测试技术。
• 操作过程尽量模拟正常使用的过程。
• 全面的测试用例应该尽量做到分支覆盖,核心代码尽量做到路径覆盖。
• 测试数据尽量包括:真实数据、边界数据。
• 测试语句和测试数据应该尽量简单,容易理解。
• 为了避免对其他代码过多的依赖,可以实现简单的桩函数或桩类(Mock Object)。
• 如果内部状态非常复杂或者应该判断流程而不是状态,可以通过记录日志字符串的方式进行验证。
620°/6111 人阅读/9 条评论 发表评论

袁军  2010-09-30

不知道说的是撒子!看不懂!


宋桂芬  2010-09-30

袁军: 不知道说的是撒子!看不懂!
如果你知道一点白盒测试用例的设计方法,再看两眼关于测试驱动开发(TDD)的文章,你就明白我在说什么了


吴小香  2010-10-07

真正做起来还是比较有困难的呀!


宋桂芬  2010-10-07

吴小香: 真正做起来还是比较有困难的呀!
呵呵,我只是了解一下,实际没有做


徐明明  2010-10-09

如果是用XUnit来做的话,差不多等详细设计出来就能开始写测试代码了。
但是一般没这么好的事情啦,大家也知道,很多情况下“详细”设计是非详细的,甚至是没有的。所以如果测试需要做这类白盒测试的话,得随时和程序员沟通了。


徐明明  2010-10-09

不过一般没这种情况吧。。。


宋桂芬  2010-10-09

徐明明: 不过一般没这种情况吧。。。
嘻嘻,俄只是了解一下,其实具体的TDD是不太明白滴,嘿嘿,见笑了


吴锋军  2010-11-18

慢慢学习。共同进步。


苗田丽  2010-11-19

您这里所说的TDD ,处于整个软件开发过程,比较上游的位置,一般在设计阶段这样做,而且我里的测试也不是由测试人员来做的。


登录 后发表评论