黑盒測試的測試用例設計方法:
1. 等價類劃分
2. 邊界值分析
3. 錯誤推測法
4. 因果圖
一、等價類劃分
定義:等價類劃分設計方法是把所有可能的輸入數據,即程序的輸入域劃分成若干部分(子集),然后從每一個子集中選取少量具有代表性的數據作為測試用例。
等價類是指某個輸入域的子集合,在該子集合中,各個輸入數據對于揭露程序中的錯誤都是等效的(可合理假設:測試某等價類的代表值就等于對這一類其他值的測試)。
確定等價類的原則:
- 如果輸入條件規定了取值范圍,或者是值得個數,則可以確立一個有效等價類和兩個無效等價類。
- 例如:序號值可以從1到999。
一個有效等價類:1<=序號值<=999
兩個無效等價類:序號值<1,序號值>999
- 如果輸入條件規定了輸入值的集合,或者是規定了“必須如何”的條件,可確立一個有效等價類和一個無效等價類。
- 例如:在C語言中對變量標識符規定為“以字母打頭的”。
所有字母打頭的構成有效等價類
不在此集合內的為無效等價類
- 如果輸入條件是布爾量,確立一個有效等價類和一個無效等價類
- 例如:0和1,是和非
- 如果規定了輸入數據是一組值,而且程序要對每個輸入值分別進行處理,這時可為每一個輸入值確立一個有效等價類,此外再針對這組值確立一個無效等價類,它應是所有不允許輸入值的集合。
- 例如:在規定教師分房方案中對教授、副教授、講師和助教分別計算分數,然后做處理。
四個有效等價類為:教授、副教授、講師、助教
一個無效等價類,即所有不符合以上四個的集合
- 如果規定了輸入數據必須遵守的規則,則可以確立一個有效等價類(符合的),和若干無效等價類(以不同角度違反規則)。
- 例如:在C語言中,規定“一個語句必須以分號‘;’結束”。
一個有效等價類:以“;”結束
若干無效等價類:以“;,.”等符號結束
- 如果確定以劃分的等價類中各元素在程序中的處理方式不同,則應將此等價類進一步劃分為更小的等價類。
每一個無效等價類至少要用一個測試用例,否則就有可能漏掉某一類錯誤,但允許若干個有效等價類合用同一個測試用例,以便進一步減少測試次數。
確立測試用例原則:
- 為每一個等價類規定一個唯一的編號。
- 設計一個新的測試用例,使其盡可能的覆蓋尚未被覆蓋的有效等價類,重復,直至覆蓋所有的有效等價類。
- 設計一個新的測試用例,使其僅覆蓋尚未被覆蓋的無效等價類,重復,直至覆蓋所有無效等價類。
二、邊界值分析
采用邊界值分析法來選擇測試用例,可使得北側程序能在邊界值及其附近運行,從而更有效的地暴露程序中潛藏的錯誤。
使用邊界值分析法設計測試用例,首先應該確定邊界情況,通常輸入和輸出等價類的邊界,就是應該著重測試的邊界情況,其次,應當選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數據,而不是等價類中的典型值或任意值作為測試數據。
基于邊界值分析法選擇測試用例原則:
- 如果輸入條件規定了值得范圍,應取剛達到這個范圍的邊界值,以及剛剛超過這個范圍邊界的值作為測試輸入的數據。
- 如果輸入條件規定了值的個數,應取最大個數、最小個數、比最小個數少一、比最大個數多以的數作為測試輸入的數據。
- 如果程序的規格說明給出的輸入域或者輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例數據。
- 如果程序中使用了一個內部數據結構,應當選擇這個內部數據結構邊界上的值作為測試用例。
三、錯誤推測法
錯誤推測法發是根據經驗和直覺推測程序中所有可能存在的各種錯誤,從而有針對性地設計測試用例的方法。
四、因果圖法
因果圖法是一種適合于描述對于多種條件的組合,相應產生多個動作的形式的測試用例設計方法。
利用因果圖生成測試用例的基本步驟:
- 分析軟件規格說明描述中哪些是原因,哪些是結果,并給每個原因和結果賦予一個標識符。
- 分析軟件規格說明描述的語言,找出原因和結果之間,原因和原因之間的關系,根據這些關系,畫出因果圖。
- 在因果圖上用一些記號表明約束或限制條件。
- 把因果圖轉換為判定表。
- 把判定表的每一列拿出來作為數據,設計測試用例。
因果圖法適用于被測程序具有多種輸入條件,程序的輸出有依賴于輸入條件的各種組合的情況,因果圖一種簡化了的邏輯圖,它能直觀地表明程序輸入條件和輸出動作之間的相互關系。
例:第一列字符必須是A或B,第二列字符必須是一個數字,在此情況下進行文件的修改,但如果第一列字符不正確,則給出信息L;如果第二列字符不是數字,則給出信息M。
解:
畫出因果關系表和因果圖。
因果圖
- 根據因果圖建立判定表。
按條件的各種組合情況產生對應的動作。原因1和原因2不能同時成立,故可排除這種情況。
從判定表可設計出測試用例:6個測試用例是所需的數據。
判定表
五、測試方法的選擇
- 在任何情況下都應該使用邊界值分析方法
- 必要時用等價類劃分法補充測試方法
- 必要時再用錯誤推測法補充測試方法
- 對照程序邏輯,檢查已經設計出的測試方案