51Testing软件测试论坛

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

作者: smartbaby    时间: 2004-8-10 10:50
标题: 单元测试的基本方法[转帖]
单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。
    单元测试任务
  单元测试任务包括: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错误陈述中未能提供足够的定位出错信息。
  边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。
作者: Fuli    时间: 2004-8-26 14:19
看了收益非浅!好帖!
作者: spark    时间: 2004-9-20 12:35
标题: 好,言之有物,从中受益良多

作者: Vicent    时间: 2004-10-8 01:15
够 "金"典!!! 谢谢!受教拉!
作者: littleqiang    时间: 2004-10-9 17:20
hao
作者: 阿蓝    时间: 2004-10-27 13:02
标题: 不错
谢谢
作者: 二牛    时间: 2004-12-1 11:35
正需要这方面的资料。感谢楼主。
作者: 烟酒情色    时间: 2004-12-15 16:36
很好,正好需要呢,谢谢了
作者: 箫澜子    时间: 2005-3-2 11:43
作单元测试谈何容易!最基础的是要弄明白所有的要测试的代码吧,这个恐怕就不是短时间里可以学会的!
路漫漫其修远兮也~~~~~~~
作者: dxyz_lee    时间: 2005-3-23 19:25
好贴!!
作者: asdgm    时间: 2005-3-31 16:20
标题: 不错

作者: someone5    时间: 2005-4-6 12:12
最近才开始接触这方面的东西,受教!谢谢!
作者: hyhking    时间: 2005-4-9 00:56
标题: sure
sure
作者: shengyan    时间: 2005-10-9 10:04
仔细看看!
作者: xwliu    时间: 2005-10-16 10:08
标题: DD
very good !
作者: sindy_yao    时间: 2005-10-18 10:46
看了一下,不错,又学到东西了
作者: zhou_zhou    时间: 2005-10-19 09:57
标题: 谢谢你了
谢谢.真的不错
作者: tla    时间: 2006-2-28 12:57
辛苦了
作者: zhangpc    时间: 2006-3-6 11:17
很有帮助
作者: londer    时间: 2006-6-7 10:59

会作已经很了不起了
还能总结的如此细致
厉害
高手中的高手
作者: qwdingyu    时间: 2006-6-15 11:58
看了收益非浅!好帖!
作者: baijing1018    时间: 2006-6-22 14:25
很感谢搂主 真后悔没早点来啊
作者: zhuisuicaiyun    时间: 2006-12-5 20:12
thanks
作者: wssgily    时间: 2007-1-26 10:54
什么时候才能做单元测试啊
作者: dyq    时间: 2007-4-7 13:29
写得好,谢了
作者: jump0001    时间: 2007-4-12 10:53
写的很好。
作者: wangle607    时间: 2007-4-25 17:08
又是照本宣科,能不能来点实例啊
作者: liulinzhu    时间: 2007-5-18 10:41
爽------就一个字
作者: 跟我去飞翔    时间: 2007-6-15 14:46
迎接测试时代的到来
作者: add1231    时间: 2007-6-18 14:38
正在学习ing
作者: huangly    时间: 2007-6-26 16:55
总结性很强,好帖!
作者: cangmang    时间: 2007-6-29 12:10
好文章,介绍的非常清楚明白.
作者: sycsccd    时间: 2007-7-4 18:00
标题: Thank You
Thank You ,新手入门
作者: kkrt20032003    时间: 2007-7-29 20:38
呵呵 马上要用到了  谢谢了 
作者: san3yue    时间: 2007-9-12 11:07
标题: 回复 #2 Fuli 的帖子
向lz学习
作者: belie    时间: 2007-9-16 13:42
学习ing!~~,谢谢!!
作者: ellse    时间: 2007-9-19 10:30
sdlkfj9 sdlkfj9 sdlkfj9 好难啊
作者: hdc163    时间: 2007-9-25 09:44
写的很好,但实际操作可能难得多,单元测试是测试中的难点,也最能体现高手的地方。
作者: 乖乖好乖    时间: 2007-10-3 22:26
谢谢啦.谢谢..
作者: kkrt20032003    时间: 2007-10-8 16:04
顶一个。 现在正在做这方面呢
作者: 水蓝色的夜    时间: 2007-10-21 21:05
还不是很了解单元测试,看看
作者: chenzhong24    时间: 2008-1-28 15:01
好东西 收了
作者: muerte    时间: 2008-4-18 18:11
厉害,我也顶,正在做单元测试呢,有一定的难度,首先要是阅读别人写的代码,这本身就是一件头疼的事情,然后在设计案例,不过.lz的思路挺清晰的,谢谢了,
作者: 淡淡绿茶    时间: 2008-6-12 13:33
单元测试好象很难..
作者: wulina    时间: 2008-6-16 13:17

作者: Seu_why    时间: 2008-7-8 10:55
看了收益非浅!好帖
作者: brianwang    时间: 2008-7-16 14:04
非常好,谢谢!
作者: lovedemon    时间: 2008-9-5 16:31
多谢多谢
作者: sageluo2008    时间: 2009-1-5 09:22
不错不错
作者: belie    时间: 2009-2-19 14:50
感谢分享!~
作者: xiaogan    时间: 2009-3-6 12:17
看过了!
作者: xinyuek    时间: 2009-4-7 16:02
还不完全哦。。
作者: yuanweizhi    时间: 2009-7-30 17:05

会作已经很了不起了
还能总结的如此细致
厉害
高手中的高手
作者: jingrujin    时间: 2009-8-5 20:06
谢谢分享
作者: uiui    时间: 2010-4-21 21:23

作者: 顾亭亭7094    时间: 2011-4-11 20:04
很好耶!学到了东西!!谢谢!
作者: wscqb    时间: 2012-5-9 15:47
看了收益非浅!好帖




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