打不死的心态活到老。

软件GUI测试中的关注点3

上一篇 / 下一篇  2007-11-07 12:01:53 / 个人分类:学习资料

51Testing软件测试网1}y+CrHG?#dT4d-Q

http://www.testage.net/html/17/n-140417-3.html51Testing软件测试网)N6{q:oj

51Testing软件测试网)r U5l7A&eF\[

B P Z dVq {#@ U051Testing软件测试网fL3}(E^ Z0c*ya6]

7、输出

:z)siEF3N P4W#Xh0

Et+^$t`!f/I0程序的输出应如输入一样完整。它要求更精确,尽量快速和能实现多路径及对输出内容更有效的管理,这四类标准几乎决定了输出功能的主要表现特性。

7]1ZT d.Q*P0

Z9m1N5X4?O:u,L01)不能输出某种数据51Testing软件测试网 G? SP ^P

51Testing软件测试网GA8I V? JvV3~

你应该能打印出你输入的任何信息,打印不出输入的内容对任何程序而言都是致命伤。51Testing软件测试网6i*EYPb,Kmk:P|.?

51Testing软件测试网6_2uI Y"GS`$Js

2)不能重定向输出

*m0Ul iz {1n d4G0

,xz8UY9\ A0你应该可以重定向输出。特别是,你应该能向磁盘发送一个很长的“打印输出”标记,并稍后打印该磁盘文件。程序不应该阻止你把数据输出发送到预料之外的设备,如绘图仪,磁带,打印机等。

{;u#B-P'k dF051Testing软件测试网7p c+^?h^+Bk!\

3)与一个后续过程不兼容的格式51Testing软件测试网 sB&E+]2Ue6|)Th

d!B/Z0?^0如果一个程序声明能够以第二个程序可以理解的格式保存数据,那么就应该测试它是否可以真正做到。这意味着购买或借用第二个程序的副本。使用第一个程序保存数据,用第二个程序读数据,同时看看第二个程序得到了什么,这是对此进行测试的最简单方法。

Fd0GqMZ!j{V-V0

r*Z%MYQ M {v04)必须输出的很少或很多

eh ?Y/~X){ {r051Testing软件测试网)C,@'y UP3rs

你应该可以修改报告,从而呈现你需要的信息。不得不在仅包含少量有用信息行的打印输出的大量页中找出所需信息,几乎和没有得到信息一样糟糕。

v"DV$}{b0

5Iq3] k*\o,X05)不能控制输出布局

%tJ%w0e6~:q051Testing软件测试网R b3Y7I HDS(gngX

你应该可以改变字体,对输出信息增加特殊标记来强调信息。你应该可以修改信息之间的间距,最低限度来说,程序应该可以以一种由合适文字处理进行修饰的格式把报告输出到磁盘文件。51Testing软件测试网&izk-~$E

8O#@sVkm J06)荒谬的精度输出级别51Testing软件测试网8I n'P!PMVt

3WXJ-Oc0要是说4.2加上3.1等于7.3000000或者说3.1111+2.11等于5.22110102都是很愚蠢的。在最终输出的结果中,程序应该按照规定的格式和精度输出最后的数据。

yA vPC9S0

Q:^7Qn#a07)不能控制表或图的标记

kr)WX,\O&_6?0

{&Vgoi}E0你应当能够改变字型,措辞及任何说明,包括标题,表格,图形或是图表中文本的位置。51Testing软件测试网;O,kmhknX

51Testing软件测试网:C Uv(n:[*Qd

8)不能控制图形的缩放比例51Testing软件测试网NwDs2{}4T2Bt6\w*i

v La/c8jG:oc0绘图程序应该提供默认的垂直和水平比例,不要告诉我你最后输出打印报表中的图形超出了整个页面或是只占据了整个页面的一角。

%s }*PI ms051Testing软件测试网,sp%nM5AH

二、错误处理

~%I"}5u6c;cQ+D0

c8P"H:J)Y g0在处理错误时发生的错误通常是最常见的缺陷。错误处理产生的错误包括:未预料到错误发生的可能性并防止其发生,没有注意错误状态,以及较严重的:程序可能与错误数据一起工作并最终产生错误结果的情况。51Testing软件测试网#N(b@el+i"e

:JBMT H_5z H01、错误预防51Testing软件测试网` A:V)^ku/O

1c#Y`FlnS r4u;l r0程序应具备这种能力:它能保护自己不受到系统其他部分的影响(包括有害输入和有害处理)。如果程序可能与错误数据共同工作,确保其在发生严重可怕的影响之前(如程序崩溃,数据丢失与错误,系统崩溃等),检查并消除这些问题。

V,Q7u'? yy#h$Q051Testing软件测试网\|'Bx-[{9Z

1)不充分的初始状态验证

v"t FQ}[A~051Testing软件测试网 {z4R L UO d U

如果内存的某个区域必须以其中所有位都是0开始,那么程序应该可以运行一个抽样检查,而不是假定已经存在0值。这会导致程序初始化时发生内存错,甚至不能启动。51Testing软件测试网2O6P^ uu d

(P3IGOz1HK'xI02)不充分的用户输入检查51Testing软件测试网q{ M{I

51Testing软件测试网w#s7Kv Hqw

此类问题非常常见,开发人员可能会在编写程序时遗漏掉大量这方面的问题。告诉人们输入1位到3位数是不够的,有些人可能会输入5位甚至更多,也有人 会输入特殊字符或是运算符,还有些人会按下功能键一次或多次,如果程序允许输入,那么程序就应能顺利应付,而不是一打非专业人士不能明白的提示甚至更糟的 情况。

hu`z*c$nl051Testing软件测试网"]3F:f6M MTX!vF

3)对受损数据不能充分预防

6sqo:{j`,F?q051Testing软件测试网T7[}$x'aa

没有人能保证磁盘上的数据是好的。可能是有人已经编辑过或者根本是有硬件问题。即使开发人员认定在保存前的文件是有效的,那么他也应该检查(校验)下次打开的是否是同一个文件。

q:s:K_W0

&e;jwz2Gn,W;N04)不充分的参数传递测试

` a7o InE ` @0C0

4C^ Y]!g&^d0一个子程序不应该假定得到了正确的调用(事实上,采用相反的想法可能会让测试进行得更加顺利一些)。它应该确保传递给它的数据在其可控制的范围之内。

)XB9Z \ y4z(d u7{Y051Testing软件测试网u(PM9?@-s+T

5)针对操作系统的预防不充分51Testing软件测试网f:epamM f/P

a1P'E9@2w4A;] t0操作系统存在缺陷――不光是过去,现在甚至将来也是,应用程序可能会触发其中存在的问题。如:如果开发人员知道,他把数据送到磁盘后很快又把数据送到打印机,会引起一些操作系统的崩溃,那么他就应该确保程序在任何情况下都不会这样做。51Testing软件测试网)S-k2L gL1n

5BHBbNLa`i|'s06)不适当的版本控制51Testing软件测试网 z({6] F:e0C

51Testing软件测试网d3T mQ6N [ s

如果可执行代码不止存在于一个文件中,那么有人会尝试把某一文件的新版本和老版本一起使用,客户对其软件升级使得这类问题时常发生,但是又不能明白出了什么问题。新版本应确保所有的代码都是最新的,当然也要对老版本有完整的备份。51Testing软件测试网_c+xx)fCr

%}^.v"i#y}+Z P07)针对恶意使用的不充分预防

de#KCN@ NQ051Testing软件测试网S Fa)l g

人们有时会有意无意的提供程序有害输入,或者尝试触发错误状况(特别是做测试的家伙们)。不要假定“任何有理智的人都不会这么做”,相信我:程序不完全是为了“有理智”的人开发的。51Testing软件测试网Wh+aO-q:p+\%L

51Testing软件测试网5mt?-c;|v

2、错误检测51Testing软件测试网,QoM"\5I0L r

51Testing软件测试网3I Mx/PD j gXH

程序通常有足够的可用信息来检测数据中或其操作中的错误。这部分内容将指导一部分常见的错误检测方式并对其进行归类。

^6]1C&E,?;Z#C0

4n8P6Iow\(j.PU01)忽视溢出

ad qI^051Testing软件测试网/o3CqsM

一个数值计算结果对于程序来说太大以至于无法处理时,就会产生溢出。溢出由较大数字相加和相乘或者被0除或是由于过小的分数除而引起。在有既定规则的情况下,溢出是很容易检测到的。

a7J`Ks ? R051Testing软件测试网TWpJ3z]!X

2)忽视不可能的值51Testing软件测试网7U RIvz[8M

51Testing软件测试网5N ^+PXH0orH

在计算机当中,几乎没有什么不可能发生的事。程序应该检查其变量,以确保它们在合理的界限之内,它应可以捕获并拒绝如2月31日这样的日期值。如果 当变量为0时,程序完成某动作,变量为1时完成另一工作,并假设其他所有值都是不可能,那么就必须保证变量只能为0或者是1,对其他所有值进行额外的处 理。在一个项目中,经过数年维护编程后,旧的假定就不一定安全了。51Testing软件测试网7WX L+g;S/J6P.]E8j

!o%B u"UW0Bs03)忽视看上去不真实的值51Testing软件测试网%QJW f\ s

51Testing软件测试网b.K\(k"G4l+P

有些人可能会从自己帐户里提取100,000,000,000的钱,那么就算他有这么多钱,也应该在通过交易之前向几个不同的人进行确认。这类看似荒唐的用例往往包藏着错误的祸心,应该小心应付。

0Iz,E3x&p#[P0

/[~Sf&m04)忽视错误标志51Testing软件测试网o2WT+GUs

v?y/Z*n V0程序调用了一个子程序,结果操作不成功,它在一个被称为错误标志的特殊变量中报告了该失败。与通常一样,程序能检查或忽略它,并把从例程返回的误用数据当作真实的进行处理。

@,R&W1RB dn051Testing软件测试网)I}T(EK4E

5)忽视硬件缺陷或错误情况

,qqor6D051Testing软件测试网R7EC3OZT

程序应该假定它能连接的设备是失败的,许多设备能够发送警告某件事情出错的返回信息。如果有设备这样做了,停止尝试与其交互,并向某人或更高级别的控制程序报告该事件。不能忽视该类情况以避免造成不必要的困扰。

#h G?o&{5E-_s|0

ND'_Ik%i#d@ lX06) 数据比较

\ vz5zd0

x%W0z{p:T w0结算银行存折时,你有一个你自己认为的余额数值,银行也会提供一个余额数值。在考虑了服务费,银行利息,最近帐单等等数据之后,两个数据不吻合,那么就要好好查一查了。在互相检查两个数据集或计算结果集时,也会产生类似的情况。

;p ~v(rO051Testing软件测试网9I$v%pws~

3、错误恢复51Testing软件测试网j;kN*Q ]C/}wE.W

51Testing软件测试网FL v6n#P.M9FZ6?1Zq

程序中存在错误,程序已经检测到了错误,而且现在正设法对其进行处理。许多错误恢复代码只是稍微进行了测试,或者根本没有进行测试。错误恢复例程中的缺陷可能比原始问题更严重。

9m-k ]jxm ^'Dhh!J0

y Y Z E4_01)自动错误更正

h;?S B-k q1X U0

B\Z;ZY&EN L1g0通过检查其他数据或规则集,有时程序不仅能检测错误,而且还能纠正错误,而用不着麻烦任何人。这样的程序是令人满意的,但仅当这种“纠正”是正确的情况时才是如此。

5JE"}A;F1X+V"m!G0

a)_ h+N[N.qq4l02)未能报告一个错误

"p0y_ T@B.CO051Testing软件测试网6EE1H#eg|!z t

程序应该报告任何检测到的内部错误,即使它能自动纠正错误产生的后果也一样。在稍微不同的环境下,它可能检测不到相同的错误。程序可以向用户报告这 一错误,也可以向一个多用户系统的操作员,向磁盘上的日志文件,或者是这些对象的任一组合报告错误。总之,不管怎么样,只要发生了,它就必须报告。

4P dQ-J-i2Qy0

|})^'Q v&]H03)未能设置一个错误标志

#Zevi%^5U0

z)R P%`Edp0某子程序被调用,但是结果失败,假定它在失败时设置了一个错误标志,它把控制返回给调用程序,却没有对这个标志进行设置,那么调用程序就会把无用数据当作有效数据传回去,这是应坚决避免的状况。这可能会造成数据冗余,脏数据或是直接导致当前操作失效,严重的则会引起崩溃。

q$Z5R @2t2e1H | n6Q4L051Testing软件测试网+O9?[]f;dYj }2Be

4)程序要走向何方?51Testing软件测试网3TZmN/k)}SQ'm

,M:e E Zr5GW0一部分代码失效了。它记录了错误,并设置了一个错误标志,接下来干嘛呢?尤其是经过了几个跳转的情况下,它如何才能得知程序中的什么地方返回了控制?

G.@"w"N(VY?051Testing软件测试网IL\.Z} N%A

5)中止错误51Testing软件测试网 m,[$Bb8W4uYa j

51Testing软件测试网0[ KL3d,y-_2T{

停止了程序,或者当它在检测到错误时自动停止了,那么它是否关闭了任何打开的输出文件呢?它是否在关闭时会记录退出的原因呢?在最普通的条件下,在即将结束之前它是否进行了整理或者它只是结束但可能留下一团混乱呢?这都是开发人员和测试人员需要考虑的问题之一。51Testing软件测试网{#Xw%F)['q,O)z-P

0UMno La'WE mE06)从硬件问题中恢复

7B}dTjqW[5O051Testing软件测试网*Jem/f+\3}'[,`GfU7^

程序应该适度地处理硬件故障。如果磁盘或其目录已满,你应该能够放入一张新的磁盘,而不只是关闭了你所有的数据。如果一个设备很长时间还没有准备好接收输入,你就没有应该假定它已经断线或断开连接而进行处理。程序决不能够让我们永远在那里坐等。

Uk@:{T,]{051Testing软件测试网 sB,C7R9k"P(a't

7)不能从遗失磁盘中退出51Testing软件测试网5b4y+Do,?

51Testing软件测试网,N#HU h KI9Z

假定你的程序要求你插入一张具有它需要的文件的磁盘,如果插入的磁盘不正确,它会再次提醒你,直到插入了正确的磁盘为止。然而,如果没有正确的磁盘,你就没有任何办法可以退出,除非你重启系统。不,这种做法是极端蛮横的,决不能允许出现这样的问题。

3k ^3w?;u%U w!d0

?@&@"Ps b-`04、边界相关的错误

F:q W zatB Z051Testing软件测试网k(ucu1a]/`

一个边界描述了程序的一个改变点,假定程序在边界的一边以某种方式做所有事,而在边界的另一边,它以不同的方式完成所有事。51Testing软件测试网_5tN;g3o

9|:d _bri\0rq$n.q VQ0边界相对立的两边的典型“东西”就是数据值。存在三种标准边界缺陷:

yDw/v|Jj k0边界情况的处理不当

dH.ilt8A$pk0如果一个程序把任何小于100的两个数相加,不接收任何大于100的数,那么当你恰恰输入100时它会做何反应?它又该怎么做?

8C{)\,r:Q4I2`0错误边界

kwD2Y6~ EJK$A0规格说明表示,程序应该把任意两个小于100的数相加,同时不接收大于95的数。51Testing软件测试网;^9ub qd_l"xD

边界外情况的错误处理51Testing软件测试网dX}u3Vz(i$qKB

边界某一边的值是不可能,不可信,不能接收,或是预料之外的,没有为其编写任何处理代码。程序是否成功拒绝了大于100的值?或者是否当它获取了一个大于100的值时就会崩溃?51Testing软件测试网1D?^"Y-v q W6\

51Testing软件测试网fFE'_d.D!X9V"[H

我们把边界的概念看得更广泛,边界描述了考虑一个程序以及它在其极限周围得行为得方式。存在很多种的极限:最大,最小,最新,最旧,最近,第一个等等。相同类型的缺陷可以伴随其中任何一种极限而产生,我们可以用相同或类似的观点考虑它们。

N+m}[hu~/w S0

.y"}(qn2Q!~ }&Fl(m0不同边界错误的考虑方式

Ayrk%l^051Testing软件测试网l7bRa Di

不同类型的边界,其考虑方式也是不同的,但是其思想基本上都相近:无外乎上溢出与下溢出。

S0kl6o y4w-W s2l0

!M(m5VIj:H*jSUY01)数值边界

s(F8eHI051Testing软件测试网"i$C'cK GSx

有些数值边界是任意的,如大于100;而有些则要描述自然极限,如三角形的特征和子母的ASCII码等。

#P }0Ic4J/OgUr051Testing软件测试网4rkNg,V&wy E"z%M

2)与一个边界相等

5U5z3rSt:tQ*` N"R9^051Testing软件测试网6x#U^.a^9Fs7]

在一个列表中的所有元素可能相同,也可能不同。如果你试着对任一列表进行排序,会发生什么?如果列表由数字组成,当你尝试计算平均值,标准偏差,对称系数时又会发生什么?(以上是概要统计概念,按算法,对称系数可能会计算为0或引起被0除的错误。)51Testing软件测试网6]^+}#e S4F

q u.{@i?;s6N/\/I03)多种多样的边界

H?VTC$G$I051Testing软件测试网7R zF'w3nF+T

一个输入串可以长达80个字符么?如果你输入79、80或81个字符会如何?程序是否在每种情况下都接收你的输入?一个列表可以只是一个元素么?没有元素可以么?仅含一个数值的标准偏差又是什么呢?

:~%Sd~(y%{'h3NC2cu051Testing软件测试网H,N9BE1~]oN2h

4)空间中的边界51Testing软件测试网6z/niG \9P k

)] u4g:V8`^0例如,如果一个绘图程序绘制了一个图形,并在其周围绘制了一个方框,那么该如何处理一个应当在方框外正确显示的点?51Testing软件测试网1j&t0D5k\,i9n(?m

3IH@.Juo/P"Sh)W4V05)时间的边界51Testing软件测试网,q!T"t8R5^A

51Testing软件测试网a O3mA|9`&b6R

假定程序显示了一个提示,停留60秒等待你回应。然后,如果你没有输入内容就显示菜单,如果正当它开始显示菜单时,你开始输入内容,会发生什么?51Testing软件测试网j u$Fn'aQf.@2o

M/} R_Y(fW0假定你在计算机仍然在从磁盘中装入程序时按下空格键,发生了什么事?空格键是被发送给操作系统,为正在装载的程序进行了保存,还是仅仅因为预料之外而导致计算机崩溃?

*YTv#U,KoE*xqN051Testing软件测试网XLr[ s(f6m

6)硬件相关边界51Testing软件测试网Lw0t\"|B

51Testing软件测试网4YZwa0s

如果一台主机可以连接100台终端,那么当你加入99,100,101台时会发生什么?如果你让100台终端同时登陆会怎样?51Testing软件测试网e1o4\@x9Fn z

A9P.krCl+Y&gJ v0如果磁盘已经塞满了会如何?如果一个目录能保存1000个文件,当你尝试保存第999、1000、1001个的时候会发生什么?如果打印机有较大的输入缓冲区,当你的数据填满缓冲区,但是却还没有更多数据要传递时,会发生什么?当打印机缺纸或颜料用完了又会发生什么?

/q9`.k1a/t'{7B051Testing软件测试网'Gi\'DN9J&j!@1n

5、计算错误

gg'`m U051Testing软件测试网U(D/HGv}i,mL

程序计算一个数据得到了一个错误的结果。发生计算错误通常因为下面三种类型的原因:51Testing软件测试网CL#u!Aeq3G#c

很差的逻辑:

^ON*`]L3Dy]0可能存在一个录入错误,开发人员可能会在编制程序时无意中错误简化了复杂关系地表达式,或者由于拼写错误或笔误导致。另外一种糟糕的情况则是设计错误,开发人员关于代码如何做的概念可能一开始就错了。51Testing软件测试网1Xn P:mK"m

很差的算法:51Testing软件测试网'W/S&iw$Hqq!bc

如果1+1=1,可以理解为一种特殊逻辑,但是如果把它作为数值运算,恐怕是没有人会同意的。无论何时,一个错误的算法总不会得出正确的结果。

6x)\s-uu:qv+{v0不精确计算: 由于使用了舍入的计算方法,很可能在计算时丢失精度。51Testing软件测试网kFs;r'H

【小结】

]-mH f~051Testing软件测试网M!f[C2t5z

这篇文章最早成形于2004年10月,当时正接手一个项目的黑盒测试工作。然而,在对软件项目实施黑盒测试的过程中,的确也看到了很多值得思考的地 方。作为一名刚进入测试行业的学步小儿,也谈不上有什么丰富的经验累积,唯希冀本文能给刚进入测试领域的同仁提供了一些有价值的参考。51Testing软件测试网*L\f`@zp


TAG: 学习资料

 

评分:0

我来说两句

Open Toolbar