黑盒測(cè)試的測(cè)試用例設(shè)計(jì)方法0 B8 r( @% Q5 X5 v& a
% y- N# J m) Q; ?·等價(jià)類劃分方法. D' Z! K9 K1 g
·邊界值分析方法
0 \1 N9 u# T6 m% @. w: y·錯(cuò)誤推測(cè)方法6 Q7 S2 `: E1 a+ `$ Y! S
·因果圖方法/ B* C, P$ @, o, `8 _
·判定表驅(qū)動(dòng)分析方法3 l8 z! G8 e$ P3 M6 r$ I
·正交實(shí)驗(yàn)設(shè)計(jì)方法* _: x& K1 Y `3 v j7 l
·功能圖分析方法
9 [; G! O: {7 U! n9 J% T7 x5 r( e3 j7 R& h, K* D! r( P
等價(jià)類劃分:- G: [9 {$ J& a) {. X6 a8 l: R+ g
$ g7 z& ~8 q8 [2 v2 U5 ]
是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個(gè)子集中選取少數(shù)% l4 u! s+ i4 f' O0 E) @8 }4 u
1 c$ D1 Z' ?/ n. A& l( H/ V0 `
具有代表性的數(shù)據(jù)作為測(cè)試用例.該方法是一種重要的,常用的黑盒測(cè)試用例設(shè)計(jì)方法.0 g% g6 i% ?$ Y+ V
! u5 c: z& y {: C# Z( I; i 1) 劃分等價(jià)類: 等價(jià)類是指某個(gè)輸入域的子集合.在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的6 k$ Z. r1 X: W" L3 x
4 q- ~) e6 x/ X, x# c3 L" u
錯(cuò)誤都是等效的.并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試.因此,可以把全部輸9 h, H6 H3 b+ ~ |' F" |
1 b C+ x3 y2 V# a: X
入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件,就可以用少量代表性的" T$ ]5 F$ y. E8 Q
& H( K. b3 f5 w! N4 u7 l
測(cè)試數(shù)據(jù).取得較好的測(cè)試結(jié)果.等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無(wú)效等價(jià)類.
, P& u7 b) Q( E1 T1 e0 k9 y( g e( |2 z& \* u5 s2 x& @& y# v
有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō)是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合.利用有效等價(jià)" c: {1 L$ g8 m7 G7 y
! E) a6 u6 m! K1 k! [3 R0 U$ S9 Z
類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說(shuō)明中所規(guī)定的功能和性能.
& K5 ^+ M. @( V# x
0 K- `& n" b) u$ V8 Z* H7 r 無(wú)效等價(jià)類:與有效等價(jià)類的定義恰巧相反.$ n7 p9 C/ f4 j- p8 Y1 O# g
/ j6 |0 C& B8 @) I( h! l, ]2 A
設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類.因?yàn)?軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的
3 T0 d% x! Y- V) ~( _9 i
c2 x* [7 r% c1 e: E L考驗(yàn).這樣的測(cè)試才能確保軟件具有更高的可靠性. ( [2 m! s0 A; ~! h; x2 S3 b
! \0 m& H) b( K: D
2)劃分等價(jià)類的方法:下面給出六條確定等價(jià)類的原則.
. ]4 A+ o, S; z4 B- ~- l$ _! b+ z6 k4 ?: u: M
①在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類.
7 Q/ q! P8 T9 }. G% E2 i6 |% x; k) l) F& x6 B
②在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可確立一個(gè)有效等價(jià)+ Q% w8 x: K2 P6 R1 ^& D+ _
' }2 X+ D$ t2 E類和一個(gè)無(wú)效等價(jià)類.
+ b5 { ]1 i% ]3 i
: Z9 f1 n( l8 G# d a ③在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類.4 G. u0 f% ~; i: X* n( m1 P) t
+ R; b1 J2 W6 x$ l" c1 N+ k ④在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n0 t' D7 q) f9 `! c1 m" p8 ?
) x, W3 x& ~' {) Q個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類.3 u: j6 A1 X6 F! I& `0 @. I
8 u2 B' Z2 {& s: U7 l; Q ⑤在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效" {- g% k: @+ h2 T' q, C$ b
# b, [5 `9 Q; A8 V0 H9 D等價(jià)類(從不同角度違反規(guī)則).1 z1 d% K. q% b, \ p1 f* u! x. Q
1 ?. {. j+ Q& F6 [2 K f7 X: E7 K ⑥在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的0 E5 D; B* ]) I; s) Q: F9 H
, c* d/ `6 B I7 F劃分為更小的等價(jià)類.6 b' R0 q3 d1 Q5 W2 l
% O& M( o, d& o4 o3)設(shè)計(jì)測(cè)試用例:在確立了等價(jià)類后,可建立等價(jià)類表,列出所有劃分出的等價(jià)類:+ W; \ [* F2 B6 m& b/ ]
* [& D3 M. U8 m% _- J
輸入條件 有效等價(jià)類 無(wú)效等價(jià)類6 h R9 c d p$ `' m ]
8 ]# w9 C$ e4 P4 w6 E! V
... ... ...9 }8 t$ t: ?6 i/ ~' k; H- {
* g& w: c3 Z5 w' R% }
... ... ...* I7 W) T+ o% b- W D4 ?
( _: ?5 N( s( O8 n7 s9 s
然后從劃分出的等價(jià)類中按以下三個(gè)原則設(shè)計(jì)測(cè)試用例:5 O$ w! }4 y0 \2 u1 E2 Q/ S" F1 E7 V
- u' P4 z9 [, h+ c/ p ①為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào).
6 V! E4 o! W, ~9 I
& R9 v4 p ~% I" k, K; R ②設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步.直到所有的, w( J# E8 C7 n! w" x' K
: s$ K I! N5 ]
有效等價(jià)類都被覆蓋為止.
! `" q' \8 y3 Y: Y+ ?5 u8 @
+ _$ U6 y6 q$ o1 `8 y ③設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步.直到所有的無(wú)效/ x+ ~0 j0 ~& `4 [6 `6 a, W4 g# Z
+ s* k9 Y8 I/ j等價(jià)類都被覆蓋為止.
. D* C/ z) S# \ K" h& K$ J# G4 I3 P0 ^; N1 g
邊界值分析法1 d/ ^( p" i) B Y2 ^& ?* ~
1 k5 k( u5 U" J
邊界值分析方法是對(duì)等價(jià)類劃分方法的補(bǔ)充.; T' f6 V# p- P- ~5 D. c. O
8 Q: N5 O# |% M7 Z
(1)邊界值分析方法的考慮:# H; _9 ^- t1 V' Z. p6 ?: o
1 l9 q4 P9 v! b* L2 U0 Z 長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)告訴我們,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸
7 W9 q+ w) @. f- W( k& i* e. p% ]/ B9 p' e" `3 g: D' I
出范圍的內(nèi)部.因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤.5 t4 l) H; x. @! R8 ?
& F1 D/ y5 @7 f' O* Q7 Q0 Z
使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)確定邊界情況.通常輸入和輸出等價(jià)類的邊界,就是應(yīng)著/ K$ @6 Y& H' E' J1 |
# e- }/ O6 l' q" ^/ B
重測(cè)試的邊界情況.應(yīng)當(dāng)選取正好等于,剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中
/ f& r0 |) t0 w5 O; a- o3 ^) W% y" ^
的典型值或任意值作為測(cè)試數(shù)據(jù).
3 u# u3 B9 v; N7 E* I1 U: L6 Z, _* O# K6 C, ]2 t2 g; x! o$ l
(2)基于邊界值分析方法選擇測(cè)試用例的原則:
' A; ~) y& J8 P
2 E/ S, r& }6 O: D9 g5 C 1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界3 v4 \1 e& k+ p, Z' B# A5 H* F3 R
+ G4 \; h2 n/ q# J$ X& a* a
的值作為測(cè)試輸入數(shù)據(jù)./ ?: ?1 t9 ?5 ]( b* ^1 F2 s! }
3 g. {6 [: O7 z% @+ P7 u
2)如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù),最小個(gè)數(shù),比最小個(gè)數(shù)少一,比最大個(gè)數(shù)多一的數(shù). ~6 R) K. ]$ W. G# k) e
# L3 n; O7 q$ B
作為測(cè)試數(shù)據(jù).
3 j. T' S/ N# E G% F* I- M1 T1 J( a2 ]0 x0 n; {* u. V, ` P& X# u2 g
3)根據(jù)規(guī)格說(shuō)明的每個(gè)輸出條件,使用前面的原則1).7 ]0 W' ?4 t2 z: G: v, Q
" x8 O# F- o+ v
4)根據(jù)規(guī)格說(shuō)明的每個(gè)輸出條件,應(yīng)用前面的原則2).; a! ?/ M; S- `, T
! x+ K, q+ S, S 5)如果程序的規(guī)格說(shuō)明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)* M2 l$ A7 n- u: y7 E# C7 T, ^
$ r: k# E: d$ Z- d8 ^
元素作為測(cè)試用例.
9 C& r/ z3 T' O* C! |3 A
/ _' l0 k* K7 Y/ G. | 6)如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例* N. s9 f! r: W: L" d. r @
: w; t8 A, h: V! |8 I
.
$ g) A& [4 |! S! b# c* R2 N1 m, v, a& C/ {
7)分析規(guī)格說(shuō)明,找出其它可能的邊界條件.- x0 P7 v& Z5 O/ N0 ^- |% R0 Y, T% C
5 ?" k0 S1 Q$ W' a# h* }9 o+ U6 w
錯(cuò)誤推測(cè)法
( V8 B& j# a! Y% ]7 R5 K. J# c/ l
* C* s! Z& }% ?8 `# C8 ^, [- L 錯(cuò)誤推測(cè)法: 基于經(jīng)驗(yàn)和直覺(jué)推測(cè)程序中所有可能存在的各種錯(cuò)誤, 從而有針對(duì)性的設(shè)計(jì)測(cè)試用例/ L8 k0 Q7 n: }- Z g
5 \6 c* y- D% n/ ~3 S
的方法.) f8 a" ?3 B" g0 L9 {3 j
, U, `; u% [/ l! i8 d- R( ]: N
錯(cuò)誤推測(cè)方法的基本思想: 列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)他們
* {- [% g/ Y# P4 {$ E2 X$ j& m9 M! l4 C& V' Q
選擇測(cè)試用例. 例如, 在單元測(cè)試時(shí)曾列出的許多在模塊中常見(jiàn)的錯(cuò)誤. 以前產(chǎn)品測(cè)試中曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤
v M1 @! p; Y1 P1 ?& Z8 E) o5 G% m5 U7 n" |# Q# r0 a* `# I
等, 這些就是經(jīng)驗(yàn)的總結(jié). 還有, 輸入數(shù)據(jù)和輸出數(shù)據(jù)為0的情況. 輸入表格為空格或輸入表格只有一行. 0 [, t# K+ X# P; s
* h4 ~- e) n1 T/ w, |- \0 P6 @
這些都是容易發(fā)生錯(cuò)誤的情況. 可選擇這些情況下的例子作為測(cè)試用例.- L- F, `2 k/ O
: ~9 Y8 W [; ~, D: @
因果圖方法* N) F! I- \/ z# Z. w4 u
1 e; e1 s* e7 F0 V, F' s8 [ q
前面介紹的等價(jià)類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯(lián)
7 ]% b2 y* N4 K% P& \
' n2 J, j% Y+ E( D8 C* m系, 相互組合等. 考慮輸入條件之間的相互組合,可能會(huì)產(chǎn)生一些新的情況. 但要檢查輸入條件的組合不) U w/ C6 o0 a) V( b1 H( a3 x+ J9 ^
% T- |& p$ k4 a3 G& ^
是一件容易的事情, 即使把所有輸入條件劃分成等價(jià)類,他們之間的組合情況也相當(dāng)多. 因此必須考慮采
+ D+ g" j0 N" C& ~% H P' F" o# c3 l; q" C- h) D
用一種適合于描述對(duì)于多種條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)考慮設(shè)計(jì)測(cè)試用例. 這就需要利用因
2 J2 _" t. L- b4 K2 b: ]8 y. f5 q w/ _) Z
/ r) q" I' C/ x( z$ I# f( K- y7 F7 }