从今天开始努力学习软件测试

单元测试

上一篇 / 下一篇  2007-05-07 09:06:23 / 个人分类:测试技术

单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。
&Nb]^jc0
单元测试任务51Testing软件测试网9cZ$kk!@(K$k ?8a
  单元测试任务包括:1模块接口测试;2模块局部数据结构测试;3模块边界条件测试;4模块中所有独立执行通路测试;5模块的各条错误处理通路测试。
L9a@'wE1IJ[&}0
  模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:51Testing软件测试网k'vX,k]m5}
  1输入的实际参数与形式参数的个数是否相同;
f w~6n5J-|9b)x0
  2输入的实际参数与形式参数的属性是否匹配;51Testing软件测试网op9c~zw
  3输入的实际参数与形式参数的量纲是否一致;
'b w]T|0
  4调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;
a&dV|fqIf/i0
  5调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;51Testing软件测试网p @|.X} e f*q K~
  6调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;
n;W,K)s;A}0
  7调用预定义函数时所用参数的个数、属性和次序是否正确;
a#y1lulg!C0
  8是否存在与当前入口点无关的参数引用;51Testing软件测试网E^]}e%B7H,?8y
  9是否修改了只读型参数;51Testing软件测试网N0b9L8x+e6qrH
  10对全程变量的定义各模块是否一致;
,w'|ie0Y E'S o4J:z0
  11是否把某些约束作为参数传递。
R1U5X.a E8d0
  如果模块内包括外部输入输出,还应该考虑下列因素:
|C^ F-~"g Y+d y6p0
  1文件属性是否正确;
V0A@_TG.G0f0
  2 OPEN/CLOSE语句是否正确;51Testing软件测试网-A|e(k$wE
  3格式说明与输入输出语句是否匹配;
&j!qF$pF A j0
  4缓冲区大小与记录长度是否匹配;51Testing软件测试网r)f/|O6Gg"N*KM
  5文件使用前是否已经打开;51Testing软件测试网W"b&~z)_*us
  6是否处理了文件尾;
r(j8A b ]Q fK0
  7是否处理了输入/输出错误;51Testing软件测试网G9S%_LA wM;k
  8输出信息中是否有文字性错误;51Testing软件测试网|/HHRgV]
  检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:
z4V Ea)i'F0r5r0
  1不合适或不相容的类型说明;51Testing软件测试网u J-h)Z4BT
  2变量无初值;51Testing软件测试网$cjM{7R%j l%Wn]!c
  3变量初始化或省缺值有错;
w?7SQks1p9zjw0
  4不正确的变量名(拼错或不正确地截断);51Testing软件测试网s V:Xc[-d;xq
  5出现上溢、下溢和地址异常。51Testing软件测试网md|,g9`j
  除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。
L@Ai2m ^:F)g4u-X0
  在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:51Testing软件测试网^_dvN`\R m
  1误解或用错了算符优先级;
]m.B"Z8vU6^.A D0
  2混合类型运算;51Testing软件测试网L(O2S]Sx1E
  3变量初值错;51Testing软件测试网1`\&i,nYB9}OO eI
  4精度不够;
@p q@/|2d0
  5表达式符号错。51Testing软件测试网;V-hMF \Sz~
  比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:51Testing软件测试网X4Tr-Sw
  1不同数据类型的对象之间进行比较;51Testing软件测试网$r;T8d'B%D!dg;K-e
  2错误地使用逻辑运算符或优先级
.\+iusiU9o!gI0
  3因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;51Testing软件测试网}D"wq"T~Bk_
  4比较运算或变量出错;51Testing软件测试网k9^u zLS L
  5循环终止条件或不可能出现;51Testing软件测试网 AP2C~:OI
  6迭代发散时不能退出;51Testing软件测试网!r9x;e h2~M1VU
  7错误地修改了循环变量。
r+e%xxg"tmK'\0
  一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:
m4~:q5x.J&`(kL'z^0
  1输出的出错信息难以理解;
n3S[,I Y:U/E)d0
  2记录的错误与实际遇到的错误不相符;
9fS,t:b$j E;\'j8d C0
  3在程序自定义的出错处理段运行之前,系统已介入;51Testing软件测试网&w(oMF L)Q%f-s.l:V
  4异常处理不当;
!q?"a](hHM h,{0
  5错误陈述中未能提供足够的定位出错信息。51Testing软件测试网k|'R9^2i8yl
  边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。51Testing软件测试网`D?'m6o-a C5n
单元测试过程51Testing软件测试网%oTXfq5a9D]Z
  一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。51Testing软件测试网h9?azm"i
  应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub,下图显示了一般单元测试的环境。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。51Testing软件测试网*Y,y&VP0n
  驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法。51Testing软件测试网-wR m,Y%n&]"wQ
  提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。

9c$sG6D_ M@[.z,R&V%^ a0

TAG: 单元测试 测试用例 其他 测试技术

 

评分:0

我来说两句

日历

« 2023-05-08  
 123456
78910111213
14151617181920
21222324252627
28293031   

我的存档

数据统计

  • 访问量: 8790
  • 日志数: 10
  • 图片数: 2
  • 书签数: 2
  • 建立时间: 2007-05-01
  • 更新时间: 2007-05-11

RSS订阅

Open Toolbar