功能测试常用的策略和方法
上一篇 / 下一篇 2009-05-22 20:27:36 / 个人分类:其它
lp1?Q:Lv\,i8?0 黑盒测试(Black-boxTesting,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。51Testing软件测试网f0b-U5S(vj
)v^%y:C3gf&n|!cq4r0 采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。51Testing软件测试网},A;T3gY6vV/D ?@+s
51Testing软件测试网F E@ @d [|FN黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。
&|rPnIi0L t-[h ~2q0`'u'}0 黑盒测试试图发现以下类型的错误:51Testing软件测试网G.t.t["eA[
I v {^ Y!G6_#}0 1)功能错误或遗漏;51Testing软件测试网$Ge/z5[QEsB'j
51Testing软件测试网F4G.}5im H$N2)界面错误;
I B N'J:vx/HS0.gL9D+O b ^3S0 3)数据结构或外部数据库访问错误;
!}Q7Rb0`051Testing软件测试网~6Iw g2ia4)性能错误;51Testing软件测试网+kvF~y_8M|V
\7v.]-OS0 5)初始化和终止错误。51Testing软件测试网Qm;q}A8tt
Ya#w.T:~9sRy{eX0 一、黑盒测试的测试用例设计方法51Testing软件测试网/W'I'UEtDuQq'x
-A3W$U-~5\c,T ]S*W7w0 · 等价类划分方法
,O Ouc]NS P5sq O6N0(O+s&~!UA$Kn H/ji0 · 边界值分析方法51Testing软件测试网-R v[uG
51Testing软件测试网j w5\k&PFB h0r'PI{ H· 错误推测方法51Testing软件测试网;qvhmlS.A~"pA
51Testing软件测试网[zCI"?p/h· 因果图方法
3^FHaNX(j051Testing软件测试网+W]'J&j:f uod9MW· 判定表驱动分析方法51Testing软件测试网)B6?;e,F J
b*rG?3mp DsK0 · 正交实验设计方法
z!U'h P2@.ED!h0o,Wq5c4t)bY0 · 功能图分析方法
,}6rh+H9T"i/?'k051Testing软件测试网M/AQn0Z9b&Ef等价类划分:51Testing软件测试网[?DAl:\
{)nX.k1u o8x0 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
F6L1bb2Ty(K051Testing软件测试网?:M6tco f\*J(Q C1) 划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。51Testing软件测试网3|0l_ q3y1MZo e%|
51Testing软件测试网AWa]:{d{有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
1dR*q,M6A2T B0I1TR|SY;vv V8sI1w0 无效等价类:与有效等价类的定义恰巧相反。51Testing软件测试网^:h4r&?dU7Qw q:m
q$r0G W f2rZwu3\0 设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。51Testing软件测试网} u mGU0VR#B Z:~
OB'cde*k+u]xz(l0 2)划分等价类的方法:下面给出六条确定等价类的原则。
)EW'[%R0I051Testing软件测试网6j#fg#oj6_/p r① 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。51Testing软件测试网9L;xD9pL?;P?N
51Testing软件测试网5c9` kZHhr,YS Al/@② 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。
|"jz4~$q*T051Testing软件测试网:hS n6vuIL}"wU③ 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。51Testing软件测试网 Bj6i }"X%v}
51Testing软件测试网!i@uj CYD"D-P④ 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。51Testing软件测试网vXane'd}&o6A
\2E7n \-^6txy0 ⑤ 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。51Testing软件测试网c]?`?fKc
51Testing软件测试网6Saf$NAV&^5d⑥ 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。51Testing软件测试网E4Tm H:z nsn"zu
51Testing软件测试网_ q$e iQgezh3)设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类:51Testing软件测试网6VXYCL@}(G:v|
2al4XW$Y&W7_[)M)m-ZK0 输入条件 有效等价类 无效等价类51Testing软件测试网2wz&r$rF(C#Pk\PT
51Testing软件测试网 BV V:L-il8JY;J然后从划分出的等价类中按以下三个原则设计测试用例:
0x U+O#lJ,e9md(VI9i0ZI&f!m3kN!x8e:W0 ① 为每一个等价类规定一个唯一的编号。
pE6jl/f4j/V$[051Testing软件测试网\L^/`.o9H4d}② 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步。直到所有的有效等价类都被覆盖为止。
z'~$Eqw6t(g5L|051Testing软件测试网.a-x+Lq J)a③ 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步。直到所有的无效等价类都被覆盖为止。51Testing软件测试网u/A3}m3v8v}0Fw
51Testing软件测试网4c~1S-U-VX&`)k_"]边界值分析法
@4Pdz_ Tx"T/fhQ09`fz@u)l4~0 边界值分析方法是对等价类划分方法的补充。
Pr(h\o,nM051Testing软件测试网)pUb*R:T4hg(1)边界值分析方法的考虑:
/z SP&dUT0;F Ar8p8v XM|T-T0 长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
!wN7p'w7wI y"p'CQY051Testing软件测试网6h.?4N7k/M%W使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
'n ]*A1k'ZD+H e+d0;?}tSA9l U0 (2)基于边界值分析方法选择测试用例的原则:51Testing软件测试网!O+^6[.Y DP%h&?'I
51Testing软件测试网2|+Cx"mzM1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
.Z8L:JB5o&DY(d0C0Xk g-~Srh)P&s9o3m0 2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
0yj|'Ri0wrt4JC$I0 3)根据规格说明的每个输出条件,使用前面的原则1)。51Testing软件测试网:r*{7Y(z1T.FU*H
51Testing软件测试网I|0i7c Q,Z3uI4)根据规格说明的每个输出条件,应用前面的原则2)。
.E.`pX*P0] SQAG4l0 5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
S-}/z[)NB JKI051Testing软件测试网%f0WB*D_'N6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。51Testing软件测试网0_'J9{'kflJ#LX7M
51Testing软件测试网;u-u{dV/^Vg;Y7)分析规格说明,找出其它可能的边界条件。51Testing软件测试网x-S8Ra:NR
51Testing软件测试网:]Z#?U k _4o错误推测法51Testing软件测试网?xE&}Y2U:s
ei:g M7i]F0 错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。
i^-^Z2x0i!A%N.y4}$j.F(A0 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。 例如, 在单元测试时曾列出的许多在模块中常见的错误。 以前产品测试中曾经发现的错误等, 这些就是经验的总结。 还有, 输入数据和输出数据为0的情况。 输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。 可选择这些情况下的例子作为测试用例。
j7e:w6j!H){b051Testing软件测试网&];gJ'@zd1ui8W:t因果图方法51Testing软件测试网 ^:N2ev/ZW4j,m CO
,A)v OB/A` [0 前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等。 考虑输入条件之间的相互组合,可能会产生一些新的情况。 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。 这就需要利用因果图(逻辑模型)。
V J:_:\%WC:n]`M!?0-WS'^AC_2s0 因果图方法最终生成的就是判定表。 它适合于检查程序输入条件的各种组合情况。
Sp.l@k!\V3J;u9tZ01R ~f#@ E;\Pa?!rm$k0 利用因果图生成测试用例的基本步骤:
sG!?Y"z[|2u2f+gW051Testing软件测试网2Q)D6L'NE!S6pL0Q(1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。
;~E7zb5W?:}x3i M8[0!V'X5YLiBY0 (2) 分析软件规格说明描述中的语义。找出原因与结果之间, 原因与原因之间对应的关系。 根据这些关系,画出因果图。51Testing软件测试网:KLSB?;e B
51Testing软件测试网4pi+`a4d$s(3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现。 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
;W$h+S ]rU-Njef051Testing软件测试网V/W[B C#D8`1`(4) 把因果图转换为判定表。51Testing软件测试网.G"U {\+Q Rag5k
|9g1p%p a8L e0 (5) 把判定表的每一列拿出来作为依据,设计测试用例。
YY(u~ F0] D+hr5a/K,YL0 从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。
c5nv5BeC,P;`y0N|#E1@^ks7@ a0 前面因果图方法中已经用到了判定表。判定表(DECision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具。在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了。由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。
y${8Ifo8l051Testing软件测试网,hpC9I1a8W.]KBd判定表驱动分析方法51Testing软件测试网.w9nU4BFU d
51Testing软件测试网r"d#XQ._L6__K"E判定表通常由四个部分组成。
oKM(@k+Y$u/}051Testing软件测试网t$|"av:^.D条件桩(ConDItion STub):列出了问题得所有条件。通常认为列出得条件的次序无关紧要。
O og1J'I8s-Sl@0X\U3^L"g+O+~0 动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
5^*B5Uc1x'V051Testing软件测试网2J3Ua$y!A条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
k#v L"H-dMx051Testing软件测试网U G,\0[-}P-j动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。51Testing软件测试网x*C-Z;H*a*~2^
ax!FkDlh7Ent0 规则:任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。51Testing软件测试网)C?]P-o2C1Qb4wG
51Testing软件测试网*{C/u#etm? F判定表的建立步骤:(根据软件规格说明)
(A ^,?3d6I1{}i(t0.MlpP&yz8a$Z0 ① 确定规则的个数。假如有n个条件。每个条件有两个取值(0,1),故有 种规则。
dTo7`S0$g%Nb5a)rSO0 ② 列出所有的条件桩和动作桩。51Testing软件测试网!u{ pj)j0H1aU%t V
51Testing软件测试网?v(}7A8M&c?Dn③ 填入条件项。51Testing软件测试网[.F ]}[j*gDN
51Testing软件测试网Xs/Wt4p6y3AbT④ 填入动作项。等到初始判定表。51Testing软件测试网4_9c+EZe j/H[
51Testing软件测试网"O)~ zh*N5j'D⑤ 简化、合并相似规则(相同动作)。51Testing软件测试网.zM(Ss.s#xq,An
51Testing软件测试网U?xH6@i%t%nEsB.Beizer 指出了适合使用判定表设计测试用例的条件:51Testing软件测试网7egG+e-x${*|a-tx
;DF` E$P!^V.} R0 ① 规格说明以判定表形式给出,或很容易转换成判定表。
iiI G.v*a*Y0j6F P/W;YLe0 ② 条件的排列顺序不会也不影响执行哪些操作。51Testing软件测试网k;P.`+yi;|
u)^+Pyr!gK0 ③ 规则的排列顺序不会也不影响执行哪些操作。51Testing软件测试网 s.mbo&eZ:|
51Testing软件测试网X4~9y'X ft④ 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
8SAU7g!H6rL^0tF5r1X%~0 ⑤ 如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。51Testing软件测试网bD,H7k_ w _2L_*Q
51Testing软件测试网ls#nw:@?;M&cd黑盒测试的优点51Testing软件测试网.\4g*` E h$C
sp,X(LWz#sY,e0 1、基本上不用人管着,如果程序停止运行了一般就是被测试程序CRASh了51Testing软件测试网7RR$k~a
2o;I,f0Kt5Fy0 2、设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因
IM&IEb051Testing软件测试网vHr(O'A黑盒测试的缺点
$X,c!de7{~QRvC3f0:K]n'f4le IK5C0 1、结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴51Testing软件测试网e@"z4nV
51Testing软件测试网s+v(v)lsb2、没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作51Testing软件测试网0]/U[L c#Ir+WM!y
{ xFJ`+G2xn2o,I0 3、就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的tEStcase造成的问题。这些在堆的问题中表现的更为突出。
)U'CS qFxn07k_4{1RB.G0 黑盒测试(功能测试)工具的选择51Testing软件测试网u y(C(blt+^
He,B&T&c9G0 那么,如何高效地完成功能测试?选择一款合适的功能测试工具并培训一支高素质的工具使用队伍无疑是至关重要的。尽管现阶段存在少数不采用任何功能测试工具,从事功能测试外包项目的软件服务企业。短期来看,这类企业盈利状况尚可,但长久来看,它们极有可能被自动化程度较高的软件服务企业取代。51Testing软件测试网Lk.p A2}X
}b,E;w?5z7t:M0\0 目前,用于功能测试的工具软件有很多,针对不同架构软件的工具也不断推陈出新。这里重点介绍的是其中一个较为典型自动化测试工具,即Mercury公司的WinRunner。
-k8\CBn+N9Y03^G;JJ5d0 WinRunner是一种用于检验应用程序能否如期运行的企业级软件功能测试工具。通过自动捕获、检测和模拟用户交互操作,WinRunner能识别出绝大多数软件功能缺陷,从而确保那些跨越了多个功能点和数据库的应用程序在发布时尽量不出现功能性故障。
IggN)g*q0