51Testing软件测试论坛

标题: 单元测试的基本方法 [打印本页]

作者: testing    时间: 2004-9-14 22:25
标题: 单元测试的基本方法
  单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。

单元测试任务


  单元测试任务包括:1 模块接口测试;2 模块局部数据结构测试;3 模块边界条件测试;4 模块中所有独立执行通路测试;5 模块的各条错误处理通路测试。


  模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:
  1 输入的实际参数与形式参数的个数是否相同;
  2 输入的实际参数与形式参数的属性是否匹配;
  3 输入的实际参数与形式参数的量纲是否一致;
  4 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;
  5 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;
  6调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;
  7 调用预定义函数时所用参数的个数、属性和次序是否正确;
  8 是否存在与当前入口点无关的参数引用;
  9 是否修改了只读型参数;
  10 对全程变量的定义各模块是否一致;
  11是否把某些约束作为参数传递。


  如果模块内包括外部输入输出,还应该考虑下列因素:
  1 文件属性是否正确;
  2 OPEN/CLOSE语句是否正确;
  3 格式说明与输入输出语句是否匹配;
  4缓冲区大小与记录长度是否匹配;
  5文件使用前是否已经打开;
  6是否处理了文件尾;
  7是否处理了输入/输出错误;
  8输出信息中是否有文字性错误;


  检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:
  1 不合适或不相容的类型说明;
  2变量无初值;
  3变量初始化或省缺值有错;
  4不正确的变量名(拼错或不正确地截断);
  5出现上溢、下溢和地址异常。


  除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。


  在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:
  1 误解或用错了算符优先级;
  2混合类型运算;
  3变量初值错;
  4精度不够;
  5表达式符号错。


  比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:
  1不同数据类型的对象之间进行比较;
  2错误地使用逻辑运算符或优先级;
  3因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;
  4比较运算或变量出错;
  5循环终止条件或不可能出现;
  6迭代发散时不能退出;
  7错误地修改了循环变量。


  一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:
  1输出的出错信息难以理解;
  2记录的错误与实际遇到的错误不相符;
  3在程序自定义的出错处理段运行之前,系统已介入;
  4异常处理不当;
  5错误陈述中未能提供足够的定位出错信息。


  边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。


单元测试过程


  一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。


  应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub),下图显示了一般单元测试的环境。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。


  驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法。


  提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。
作者: Fuli    时间: 2004-9-26 21:26
标题: 狂顶!!!!!!!!!!!!!!!!!!!!!!
狂顶!!!!!!!!!!!!!!!!!!!!!!
作者: time    时间: 2004-10-6 11:44
俺正要作模块接口测试呢~
作者: qingtian    时间: 2004-11-4 16:17
标题: !@#$$%
暴顶,我正在白盒学习中,太有帮助了,谢谢版主
作者: willing    时间: 2004-11-6 23:47
标题: 高!
谢谢谢谢
作者: beiyue    时间: 2004-11-12 14:09
标题: 谁来写个简单的测试模块和桩模块
看看他们如何工作的?
好好学习一下
作者: pktest    时间: 2004-11-16 14:23
标题: 不错!
顶!
作者: tempuser    时间: 2004-11-18 16:06
感谢ing
作者: cici3377    时间: 2004-12-8 19:42
单元测试都是白盒测试吗??
都需要看代码吗?

接口测试,具体应该怎么测??
作者: 小飞鱼    时间: 2004-12-9 17:16
Originally posted by willing at 2004-11-6 11:47 PM:
谢谢谢谢



这和你的被测对象有关啊
作者: 小飞鱼    时间: 2004-12-9 17:22
Originally posted by tempuser at 2004-11-18 04:06 PM:
感谢ing



很多书上都说单元测试用到的是白盒测试技术,但是我认为单元测试也要了解规格,而不是完全基于代码
作者: hehe    时间: 2004-12-15 10:57
太好了,对我这个刚入门的人很有帮助啊!!!
谢谢
作者: chyh    时间: 2004-12-26 16:02
好东西 对我这个初学者太有帮助了
作者: sunpgysz    时间: 2004-12-29 08:43
写的不错。
作者: hxb1118    时间: 2005-1-4 11:23
学习中
作者: AllenTing    时间: 2005-1-18 20:39
Originally posted by beiyue at 2004-11-12 02:09 PM:
看看他们如何工作的?
好好学习一下



顶!!
作者: neogeo2697321    时间: 2005-2-1 16:41
太好了!!谢谢!!
作者: 冰河    时间: 2005-2-1 16:47
标题: 谢楼主!

作者: baitest    时间: 2005-2-4 22:17
标题: 我自己觉得单元测试,是一种灰盒测试!

作者: xjtuzxq    时间: 2005-2-5 14:45
如何设计桩模块和驱动模块?

对这两个的设计一直比较迷糊
作者: Weiwei_Testing    时间: 2005-2-28 20:27
标题: 对单元测试又有了一层新的了解,谢谢!

作者: jessiebian_78    时间: 2005-3-7 16:15
标题: 求救winrunner 7.6的序列号!急急急!!1
1.首先请确定你已经卸载了旧版本的程序!
2.运行Setup目录中的文件进行安装!
Name:www.ttdown.com
Company:www.ttdown.com
Maintenance Number:0123-4567890124
3.重新启动电脑!
4.运行安装目录下WinRunner/arch/子目录下面的inst_key.exe程序!
5.点击Next,然后输入下面的信息:
First Name:www.ttdown.com
Last  Name:www.ttdown.com
Company   :www.ttdown.com
Maintenance Number:FF2VLB3CX43FE7GRYIB3W96MVFUFK7UX5IM6DTS2WL4YR8JS4N27M6DWEM9
6.再次点击Next,输入下面的license Code:
license Code:SYFVDM44F9WA76YE4N67L4MHSBUIEAR6IYUZNGA9O6I736DBJPIZCVOCPOUIPACDY22

我按照上述方法操作,但始终注册不成功。请赐教,请发送到我的邮箱中jessiebian@eyou.com 谢谢!!
作者: sxchang    时间: 2005-3-22 13:40
学习中
作者: mengyi    时间: 2005-4-20 13:34
我对测试感觉还是不太了解
作者: 2betrue    时间: 2005-7-19 15:35
Originally posted by Weiwei_Testing at 2005-2-28 08:27 PM:
  

license Code:SYFVDM44F9WA76YE4N67L4MHSBUIEAR6IYUZNGA9O6I736DBJPIZCVOCPOUIPACDY22(是错误的)

license Code:FF2VLB3CX43FE7GRYIB3W96MVFUFK7UX5IM6DTS2WL4YR8JS4N27M6DWEM9

**的没办法,讲究用用吧,呵呵;)
作者: xujante    时间: 2005-8-16 11:19
顶~~~~
作者: jingling8825    时间: 2005-9-22 11:08
标题: 新手上路请多关照
从黑盒测试转为白盒测试是否可以说明一个测试人员的进步?
作者: sunnyxjyc    时间: 2005-9-28 21:44
单元测试关注内容比较详细,要认真实践,^_^!
作者: sindy_yao    时间: 2005-10-18 10:47
不错!!!
作者: 阿土仔    时间: 2005-10-20 09:44
介绍得很详细啊,顶......
作者: zhong5320    时间: 2005-10-21 14:46
写不很好!值得学习!
作者: jing镜    时间: 2005-12-5 15:40
狂顶!!!!!!!!!!!!!!!!!!!!!!

作者: tiansm    时间: 2005-12-17 12:41
标题: 学习,
可以好好学了,
作者: angel20041021mm    时间: 2006-1-4 09:20
目前所在的项目对单元测试有要求,正好可以让开发人员看看这篇文章
作者: mylover002    时间: 2006-1-5 08:50
ding
作者: sz_fairy    时间: 2006-2-9 20:05
顶^……^
作者: 小小求学    时间: 2006-2-19 17:20
好好学习
作者: 雪儿185    时间: 2006-2-19 21:06
虽然我现在一直做的是黑盒测试,但是版主讲的这个单元测试方法很详细,让我学到了不少东西,谢谢你,辛苦了。
作者: sunboy91    时间: 2006-2-22 16:18
介绍的挺全面
作者: wmzhcx    时间: 2006-4-8 08:55
好,谢谢了!winrunner不好装,要有耐心啊
作者: 天生我才    时间: 2006-4-24 07:52
谢谢 获益匪浅 已经COPY
作者: 天生我才    时间: 2006-4-28 17:05
谢谢 学习
作者: 舍得    时间: 2006-5-9 11:53
正在学习中
可以在举点简单的小例子吗?谢谢!
作者: ldneliza    时间: 2006-5-22 10:56
仔细看过,还是很有收获的,谢谢。
作者: langchaogc    时间: 2006-7-28 22:40
标题: xiexie
谢谢,呵呵
作者: aliahua    时间: 2006-9-29 11:17
标题: 谢谢!
谢谢提供单元测试的方法!
作者: RuisTar    时间: 2006-11-8 14:05
公司刚有这方面的需求,学习
作者: oo_help    时间: 2007-1-4 14:40
在公司一直是做黑盒测试的,今年公司决定让我们也测白盒测试,以前一直没有接触过,听说蛮复杂的sdlkfj8 sdlkfj9 ,应具备哪些基础条件呢
作者: jiepeach    时间: 2007-3-1 14:52
小公司好难开展单元测试,目前只能开发人员自己写自己测,这样带来了好多问题。。。。想改进这种状况,但不知道从那入手,那位高人指点12
作者: mojinde    时间: 2007-3-27 12:47
顶,好
作者: windyfreeze    时间: 2007-4-20 16:55
谢谢啦
作者: dyq    时间: 2007-4-26 09:26
写得真好
建议加上一些例子就更完美了,
作者: wigglypuffy    时间: 2007-4-26 13:10
顶了再看~ 嘻嘻
作者: fyydnz    时间: 2007-4-26 14:18
好,有了初步的了解
作者: arvds    时间: 2007-5-23 09:51
顶,正为单元测试犯愁呢!
作者: rogerwuhan    时间: 2007-6-7 21:59
回复便于移动,顶
作者: musk    时间: 2007-6-12 15:47
收藏了。.学习
作者: chinalkl    时间: 2007-6-13 13:02
标题: 好东西,下了回家珍藏
sdlkfj3
作者: mirro30    时间: 2007-7-10 15:22
学习了
作者: softtester77    时间: 2007-7-20 00:05
高手写给测试桩,学习学习了!!!
作者: wpwpwpw8685    时间: 2007-7-28 16:51
很不错的。顶。
作者: micro_sandal    时间: 2007-7-29 10:17
正在开始准备单元测试
作者: homelover111    时间: 2007-8-1 13:49
标题: 回复 #1 testing 的帖子
不错
作者: zhongyuan    时间: 2007-8-5 09:44
持支持支持支持支持支持支持支持支持███████████████持支持
支持支持支持支持支持支持支持支██████████████████持支持
支持支持支持支持支持支████████████████持支持支持支持支持
支持支持支持支持███████持███持支█████支持支持支持支持支持
支持支████████████持支持支持支████持支持支持支持支持支持
支██████████████持支持支持支████持支持支持支持支持支持
支████████████持支持支持支持███████████持支持支持
支████████████持支持支持支██████████████持支持
支持██████████支持支持支██████持支持███████持支持
支持支持支持支持████支持支持支████持支持支持支█████支持支持
支持支持支持支持████支持支持████支持██支持支█████支持支持
支持支持支持支持████支持支持████支持████支█████支持支持
支持支持支持支持████支持支持████支持████支█████支持支持
支持支持支持支持████支持支持████支持███持支█████支持支持
支持支持支持支持████支持支持████支持███持支█████支持支持
支持支持支持支持████支持支持████支████持支█████支持支持
支持支持支持支持████支持支持████支████持支█████支持支持
支持支持支持支持████支持支持████支████持支█████支持支持
支持支持支持支持████支持支持████支████持支█████支持支持
支持支持支持支持████支持支持███持支████持支█████支持支持
支持██支持支█████支持支持███持支███支持支█████支持支持
支持██████████支持支持支██持支██持支持支█████支持支持
支持支█████████支持支持支持支持███持支持支持████支持支持
支持支持支███████支持支持支持支持███持████支持支持支持支持
支持支持支持██████支持支持支持支████持支█████支持支持支持
支持支持支持支持支███支持支持支持█████持支持███████持支持
支持支持支持支持支持支持支持支持██████支持支持支██████持支持
支持支持支持支持支持支持支持支██████持支持支持支███████支持
支持支持支持支持支持支持支持█████持支持支持支持支持██████支持
作者: stomry    时间: 2007-8-5 19:20
好东西

顶一个
作者: Ivyzhang    时间: 2007-8-10 09:06
我马上要做一个image button的测试,还不知道怎么下手???????????
作者: ashily    时间: 2007-8-13 15:26
谢谢,不错!
我目前也只是做黑盒测试,想做白盒测试不知还需要些哪方面的知识,望大家赐教!!
作者: 淼淼    时间: 2007-8-14 18:12
好文章!!!收藏着!!!慢慢学习!!!
作者: tgbangbang    时间: 2007-8-15 13:13
新手学习中,谢谢!
作者: kaidong12    时间: 2007-9-1 22:38
标题: 回复 #1 testing 的帖子
ding yi ge
sdlkfj6 sdlkfj6
作者: 381477795    时间: 2007-9-21 20:48
还可以,我们也在做单元测试,做起来有些是比较模糊的,白盒测试是很大一块内容,值得好好学习,
很多东西没有绝对的标准,插桩,路径的覆盖.复杂度算法,静态的审核代码,搭框架,模块集成的粒度,还是要多做的,有兴趣大家可以交流
作者: 381477795    时间: 2007-9-21 20:49
想做开发了

[ 本帖最后由 381477795 于 2007-9-21 20:50 编辑 ]
作者: eferrari    时间: 2007-9-27 16:36
好东西 对我这个初学者太有帮助
作者: 开着拖拉机上班    时间: 2007-10-5 10:00
先回帖子再看
作者: walkman2508    时间: 2007-10-8 02:15
挺好~还需要与实践相结合!
作者: s154098121    时间: 2007-10-13 09:55
标题: 好东西
谢谢 楼主了
作者: brucexx    时间: 2007-10-18 18:03
I'll try
作者: I_hui    时间: 2007-10-27 19:59
单元测试应该与驱动模块和桩模块 紧密联系吧!
作者: Raymondzfy    时间: 2007-10-30 15:53
好东东,谢谢楼主
作者: lip4330655    时间: 2007-11-7 17:25
标题: 好帖
楼主好帖,最好能加些例子~~~
作者: stjd139    时间: 2007-11-7 22:08
好东西啊
多谢LZ
作者: setfocus    时间: 2007-11-27 17:25
好莱坞好东西
作者: xiananni    时间: 2007-12-6 10:31
学习了~~~
作者: 青蛙    时间: 2007-12-6 12:49
bu cuo
作者: zhao.nina    时间: 2007-12-10 22:10
好东西,值得收藏,谢谢
作者: xinminghe    时间: 2007-12-16 22:38
长见识了!嘿嘿
作者: CCTV果冻爽    时间: 2008-1-26 15:46
不错
作者: 暗涧幽火    时间: 2008-1-28 18:09
很好啊,不错哦!
作者: zhangfengjay    时间: 2008-2-13 22:10
总结是很好
要是有一些具体的体子就更好了
作者: richiefu    时间: 2008-4-14 16:20
学习了,支持下
作者: aancting    时间: 2008-4-23 10:08
谢谢,正在做单元测试的准备工作。。。。。。。
作者: 夏日么么茶    时间: 2008-4-28 16:31
好贴!多谢了
作者: goodgoodsutdy    时间: 2008-7-22 15:45
lz写得真详细,学习。
作者: lovedemon    时间: 2008-9-4 12:03
顶一下,多谢
作者: 新手笑哈哈    时间: 2008-9-11 10:22
正在学习。。。。。。
作者: yiwanxinyue    时间: 2008-9-26 16:39
thank you!
作者: 2008_linc    时间: 2008-10-7 16:07
学习中  感谢!
作者: 红尾鱼鱼    时间: 2008-10-21 20:21
太感激了啊!顶顶顶!!!
作者: happygm    时间: 2008-11-3 20:27
看后经验值暴涨
作者: foxie    时间: 2008-11-20 16:11
Than you!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2