以文本方式查看主題 - 曙海教育集團論壇 (http://www.hufushizhe.com/bbs/index.asp) -- 軟件測試 (http://www.hufushizhe.com/bbs/list.asp?boardid=70) ---- 黑盒測試的測試用例設計方法 (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=70&id=2655) |
-- 作者:wangxinxin -- 發布時間:2010-12-15 12:00:41 -- 黑盒測試的測試用例設計方法 黑盒測試的測試用例設計方法0 B8 r( @% Q5 X5 v& a
·等價類劃分方法. D\' Z! K9 K1 g ·邊界值分析方法 ·錯誤推測方法6 Q7 S2 `: E1 a+ `$ Y! S ·因果圖方法/ B* C, P$ @, o, `8 _ ·判定表驅動分析方法3 l8 z! G8 e$ P3 M6 r$ I ·正交實驗設計方法* _: x& K1 Y `3 v j7 l ·功能圖分析方法 5 r( e3 j7 R& h, K* D! r( P 等價類劃分:- G: [9 {$ J& a) {. X6 a8 l: R+ g $ g7 z& ~8 q8 [2 v2 U5 ] 是把所有可能的輸入數據,即程序的輸入域劃分成若干部分(子集),然后從每一個子集中選取少數% l4 u! s+ i4 f\' O0 E) @8 }4 u 1 c$ D1 Z\' ?/ n. A& l( H/ V0 ` 具有代表性的數據作為測試用例.該方法是一種重要的,常用的黑盒測試用例設計方法.0 g% g6 i% ?$ Y+ V 1) 劃分等價類: 等價類是指某個輸入域的子集合.在該子集合中,各個輸入數據對于揭露程序中的6 k$ Z. r1 X: W" L3 x 4 q- ~) e6 x/ X, x# c3 L" u 錯誤都是等效的.并合理地假定:測試某等價類的代表值就等于對這一類其它值的測試.因此,可以把全部輸9 h, H6 H3 b+ ~ |\' F" | 1 b C+ x3 y2 V# a: X 入數據合理劃分為若干等價類,在每一個等價類中取一個數據作為測試的輸入條件,就可以用少量代表性的" T$ ]5 F$ y. E8 Q & H( K. b3 f5 w! N4 u7 l 測試數據.取得較好的測試結果.等價類劃分可有兩種不同的情況:有效等價類和無效等價類. e( |2 z& \\* u5 s2 x& @& y# v 有效等價類:是指對于程序的規格說明來說是合理的,有意義的輸入數據構成的集合.利用有效等價" c: {1 L$ g8 m7 G7 y ! E) a6 u6 m! K1 k! [3 R0 U$ S9 Z 類可檢驗程序是否實現了規格說明中所規定的功能和性能. 無效等價類:與有效等價類的定義恰巧相反.$ n7 p9 C/ f4 j- p8 Y1 O# g / j6 |0 C& B8 @) I( h! l, ]2 A 設計測試用例時,要同時考慮這兩種等價類.因為,軟件不僅要能接收合理的數據,也要能經受意外的 考驗.這樣的測試才能確保軟件具有更高的可靠性. ( [2 m! s0 A; ~! h; x2 S3 b ! \\0 m& H) b( K: D 2)劃分等價類的方法:下面給出六條確定等價類的原則. $ _! b+ z6 k4 ?: u: M ①在輸入條件規定了取值范圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類. % x; k) l) F& x6 B ②在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可確立一個有效等價+ Q% w8 x: K2 P6 R1 ^& D+ _ 類和一個無效等價類. ③在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類.4 G. u0 f% ~; i: X* n( m1 P) t ④在規定了輸入數據的一組值(假定n個),并且程序要對每一個輸入值分別處理的情況下,可確立n0 t\' D7 q) f9 `! c1 m" p8 ? 個有效等價類和一個無效等價類.3 u: j6 A1 X6 F! I& `0 @. I ⑤在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效" {- g% k: @+ h2 T\' q, C$ b 等價類(從不同角度違反規則).1 z1 d% K. q% b, \\ p1 f* u! x. Q ⑥在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的0 E5 D; B* ]) I; s) Q: F9 H 劃分為更小的等價類.6 b\' R0 q3 d1 Q5 W2 l 3)設計測試用例:在確立了等價類后,可建立等價類表,列出所有劃分出的等價類:+ W; \\ [* F2 B6 m& b/ ] * [& D3 M. U8 m% _- J 輸入條件 有效等價類 無效等價類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 然后從劃分出的等價類中按以下三個原則設計測試用例:5 O$ w! }4 y0 \\2 u1 E2 Q/ S" F1 E7 V ①為每一個等價類規定一個唯一的編號. ②設計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價類,重復這一步.直到所有的, w( J# E8 C7 n! w" x\' K : s$ K I! N5 ] 有效等價類都被覆蓋為止. ③設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復這一步.直到所有的無效/ x+ ~0 j0 ~& `4 [6 `6 a, W4 g# Z 等價類都被覆蓋為止. & K$ J# G4 I3 P0 ^; N1 g 邊界值分析法1 d/ ^( p" i) B Y2 ^& ?* ~ 1 k5 k( u5 U" J 邊界值分析方法是對等價類劃分方法的補充.; T\' f6 V# p- P- ~5 D. c. O 8 Q: N5 O# |% M7 Z (1)邊界值分析方法的考慮:# H; _9 ^- t1 V\' Z. p6 ?: o 長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸 ( k& i* e. p% ]/ B9 p\' e" `3 g: D\' I 出范圍的內部.因此針對各種邊界情況設計測試用例,可以查出更多的錯誤.5 t4 l) H; x. @! R8 ? & F1 D/ y5 @7 f\' O* Q7 Q0 Z 使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應著/ K$ @6 Y& H\' E\' J1 | # e- }/ O6 l\' q" ^/ B 重測試的邊界情況.應當選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數據,而不是選取等價類中 ; a- o3 ^) W% y" ^ 的典型值或任意值作為測試數據. , _* O# K6 C, ]2 t2 g; x! o$ l (2)基于邊界值分析方法選擇測試用例的原則: 1)如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值,以及剛剛超越這個范圍邊界3 v4 \\1 e& k+ p, Z\' B# A5 H* F3 R + G4 \\; h2 n/ q# J$ X& a* a 的值作為測試輸入數據./ ?: ?1 t9 ?5 ]( b* ^1 F2 s! } 3 g. {6 [: O7 z% @+ P7 u 2)如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數. ~6 R) K. ]$ W. G# k) e # L3 n; O7 q$ B 作為測試數據. 1 J( a2 ]0 x0 n; {* u. V, ` P& X# u2 g 3)根據規格說明的每個輸出條件,使用前面的原則1).7 ]0 W\' ?4 t2 z: G: v, Q " x8 O# F- o+ v 4)根據規格說明的每個輸出條件,應用前面的原則2).; a! ?/ M; S- `, T 5)如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個* M2 l$ A7 n- u: y7 E# C7 T, ^ $ r: k# E: d$ Z- d8 ^ 元素作為測試用例. 6)如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例* N. s9 f! r: W: L" d. r @ : w; t8 A, h: V! |8 I . * R2 N1 m, v, a& C/ { 7)分析規格說明,找出其它可能的邊界條件.- x0 P7 v& Z5 O/ N0 ^- |% R0 Y, T% C 5 ?" k0 S1 Q$ W\' a# h* }9 o+ U6 w 錯誤推測法 錯誤推測法: 基于經驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設計測試用例/ 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 錯誤推測方法的基本思想: 列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們 & m9 M! l4 C& V\' Q 選擇測試用例. 例如, 在單元測試時曾列出的許多在模塊中常見的錯誤. 以前產品測試中曾經發現的錯誤 7 n" |# Q# r0 a* `# I 等, 這些就是經驗的總結. 還有, 輸入數據和輸出數據為0的情況. 輸入表格為空格或輸入表格只有一行. 0 [, t# K+ X# P; s * h4 ~- e) n1 T/ w, |- \\0 P6 @ 這些都是容易發生錯誤的情況. 可選擇這些情況下的例子作為測試用例.- 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 前面介紹的等價類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件之間的聯 系, 相互組合等. 考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但要檢查輸入條件的組合不) U w/ C6 o0 a) V( b1 H( a3 x+ J9 ^ % T- |& p$ k4 a3 G& ^ 是一件容易的事情, 即使把所有輸入條件劃分成等價類,他們之間的組合情況也相當多. 因此必須考慮采 \' F" o# c3 l; q" C- h) D 用一種適合于描述對于多種條件的組合,相應產生多個動作的形式來考慮設計測試用例. 這就需要利用因 8 y. f5 q w/ _) Z / r) q" I\' C/ x( z$ I# f( K- y7 F7 } |