1. 程式人生 > >黑盒測試用例設計方法普及【轉載】

黑盒測試用例設計方法普及【轉載】

異常分析 ble 測試方法 優先 命名 www alt 方式 積累

測試用例的設計是測試實現階段的核心工作,也是指導如何執行測試的基礎。

測試用例(Test Case)是為某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或核實是否滿足某個特定需求。(百度百科解釋)

本文以黑盒測試為例,講述下常見的用例設計方法
等價類劃分、邊界值分析、正交試驗設計法、錯誤推測法、異常分析法、場景分析法

一、等價類劃分

等價類劃分是一種典型的黑盒測試方法,使用這一方法時,完全不考慮程序的內部結構,只依據程序的規格說明來設計測試用例。
它把所有可能的輸入數據,即程序的輸入域劃分成若幹部分,然後從每一部分中選取少數有代表性的數據做為測試用例,這樣可以避免窮舉產生的大量用例。

在使用等價類劃分方法設計測試用例時,不但要考慮有效等價類劃分,同時也要考慮無效等價類劃分:

  • 有效等價類
    指滿足產品規格說明的輸入數據,即有效的、有意義的輸入數據所構成的集合,可以檢驗程序是否滿足規格說明所規定的功能和性能。
  • 無效等價類
    不滿足程序輸入要求或者無效的輸入數據所構成的集合,可以測試程序的容錯性(對異常情況的處理)

1.1 劃分等價類的規則

1、在輸入條件規定了取值範圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類。

如:輸入值是學生成績,範圍是0~100
有效等價類:0<=成績<=100
無效等價類: 成績<0 和 成績>100

2、在輸入條件規定了輸入值的集合或者規定了”必須如何”的條件情況下,可確立一個有效等價類和多個無效等價類

如網站登錄密碼必須由6位數字構成
有效等價類:6位數字
無效等價類:位數>6,位數<6,全角數字,字母、特殊字符等......

3、在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類

 有效等價類:真(true)
 無效等價類:假(false)

4、在規定了輸入數據的一組值(假定n個),並且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和1個無效等價類。

1)輸入條件說明 學歷可為:專科、本科、碩士、博士
有效等價類:專科、本科、碩士、博士
無效等價類:四種學歷之外的任何學歷

2)輸入條件為我國的直轄市
有效等價類:北京、上海、天津、重慶
無效等價類:非直轄市的省、自治區等

5、在規定了輸入數據的個數,可以劃分一個有效等價類和兩個無效等價類。

如一個學生一個學期只能選修1-3門課
有效等價類:選修1-3門課
無效等價類:1門課都不選,選課超過3門

6、在確知已劃分的等價類中,各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的劃分為更小的等價類。

 如:姓名文本框 允許輸入10個vachar
 應分別測試輸入10個英文字符(分大小寫)、10個中文字符、10個全數字字符、10個混合字符等。

1.2 等價類劃分方法的使用步驟

1)數據分類,分出有效等價類和無效等價類
2)針對有效等價類,進一步進行分割,直到不能劃分為止,形成等價類表,為每一等價類規定一個唯一的編號
3)就每一個具體的等價類,設計一個test case,直到所有有效等價類均被test case覆蓋
4)對無效等價類進行相同的處理

1.3 等價類劃分的測試運用

1、檔案管理系統

設有一個檔案管理系統,要求用戶輸入以年月表示的日期。假設日期限定在1990年1月~2049年12月,並規定日期由6位數字字符組成,前4位表示年,後2位表示月。

現用等價類劃分法設計測試用例,來測試程序的"日期檢查功能"。

輸入判斷有效等價類無效等價類
輸入字符長度 6位 大於6位數字字符、小於6位數字字符
輸入字符類型 數字 6位非純數字類型
輸入年份約束 1990-2049 小於1990、大於2049
輸入月份約束 01-12 大於12、等於00

2、系統註冊功能
假設有一個系統,註冊時用戶名要求由字母開頭,後跟字母或數字的任意組合構成,有效字符不超過6個。

  • 有效等價類:一對多原則
技術分享圖片 有效等價類.png
  • 無效等價類(根據測試時間、使用對象來定,同時也要考慮成本):一對一原則
    1)由數字開頭構成的字符串集合,如2345
    2)字母開頭構成的字符串,含特殊字符,如re!@#
    3)字母開頭構成的字符串,且長度>6,如carinazyp、carina123
    4)空字符串
    5).......

二、邊界值分析法

邊界值分析法就是對輸入或輸出的的邊界值進行測試的一種黑盒測試方法。邊界的條件通常落在等價類的邊界上、邊界外、邊界內,邊界值分析法是對等價類劃分的一個補充,在測試中,會將這兩種方法結合起來共同使用。

在大量的測試工作經驗中總結出,大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是在輸入範圍內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。

2.1 與等價類劃分的區別
邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界值都要作為測試條件。
邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況

如一個文本框類型是Vachar(X),當輸入邊界值長度超過X時,提交後列表頁面顯示被撐破了
圖中每個文本框長度是固定的,當某些圖片的名稱命名過長時,圖片名稱已和其余圖片名稱重疊顯示了,同時也影響到了第二行圖片的顯示(不是從第一列開始顯示了)。

技術分享圖片 Paste_Image.png

2.2 一些特殊的例子

 1)輸入域的默認值、空值、空格
 2)報表的第一行、最後一行、第一列、最後一列   
 3)循環的開始(第一次)和最後一次
 4)屏幕上光標移到最右邊、最下面等
 5)16-bit 整數的32767、-32768

2.3 邊界值分析法的測試運用

案例一:
某程序的規格說明中規定:“重量在10公斤至50公斤範圍內的郵件,其郵費計算公式為……”。
測試用例:可取10、50,10.01,49.99,9.99及50.01等;

案例二:
某程序的規格說明要求計算出“每月保險金扣除額為0至1165.25元”
測試用例:可取0.00及1165.24、還要取 -0.01及1165.26等

案例三:
某程序屬於情報檢索系統,要求每次“最少顯示1條、最多顯示4條情報摘要”
測試用例:包括1和4,還應包括0和5等

邊界值分析是測試設計一個穩定的部分,但是對黑盒測試人員來講有時候邊界並不是那麽明顯。這些不明顯的邊界被稱作隱藏的邊界。具體請查看隱藏的邊界的例子

三、正交試驗設計方法

在實際的系統測試過程中,輸入條件的因素有很多,而且每個因素也不能簡單用“是”和“否”表示,如下是我司訂單管理系統的搜索頁面,條件有很多個,如果組合測試case會變得很多,導致很大的工作量。


技術分享圖片 訂單搜索.png

正交試驗設計(Orthogonal experimental design)是研究多因素多水平的一種設計方法,它是根據正交性從全面試驗中挑選出部分有代表性的點進行試驗,這些有代表性的點具備了“均勻分散,齊整可比”的特點,是一種高效率、快速、經濟的實驗設計方法。利用正交試驗設計方法進行測試用例編寫,可有效減少測試用例個數,合理的減少測試的工時與費用。

3.1 常用術語
1)因子:在一項測試中,凡欲考察的變量稱為因子,即影響測試結果的條件因素
2)水平:在測試範圍內,因子被考察的值,即各個因子的取值

3.2 正交表的表示形式

正交表是一種特制的表格,具有兩條性質:
(1)每一列中各數字出現的次數都一樣多。
(2)任何兩列所構成的各有序數對出現的次數都一樣多

  • 等水平的正交表,一般用 Ln(mk)表示
L代表是正交表
n代表測試用例數或正交表的行數,n=k*(m-1)+1
k代表最多可安排影響指標因素的個數或正交表的列數
m表示每個因子水平數
技術分享圖片 L<sub>8</sub>(2<sup>7</sup>)圖解.png

-非等水平的正交表(各列的取值不相等),一般用 Ln(mkpq)表示
如 L8(4X24),可以理解為 L8(41
24),表示 5列中,有1列為4水平,4列為2水平。

行數 n=k*(m-1)+q*(p-1)+1

3.3 正交試驗設計方法的步驟
1)確定因子數(變量列數)
2)確定每個因子各有哪幾個水平(變量的取值)
3)選擇合適的正交表
4)把變量的值映射到表中
5)把每一行各因子的水平組合做為一個測試用例
6)刪除無效的組合
7)考慮特殊情況,補充上表上沒有的,但有價值的其它測試用例
(實際情況中可能使用頻率比較高)

3.4 正交表的選定
例如要考察 5個3水平因子及1個2水平因子,則起碼的試驗次數為5×(3-1)+1×(2-1)+1=12(次)
這就是說,要在行數不小於12,既有2水平列又有3水平列的正交表中選擇,發現L18(21×37)適合。

綜上所述,選擇正交表時考慮以下幾點:
1)考慮因子(變量)的個數
2)考慮因子水平(變量取值)的個數
3)考慮正交表的行數
4)當有2個或以上正交表可以被選擇時,需選擇行數最小的正交表。

備註:將值賦值到表中需要滿足以下2個條件
1)任一列,各水平都出現,且出現的次數相等
2)任兩列之間各種水平的所有可能組合都出現,且對出現的次數相等

3.5 正交試驗設計方法的測試運用

案例一(因子水平值相同)
某所大學通信系共2個班級,剛考完某一門課程,想通過“性別”、“班級”和“成績”這三個查詢條件對通信系這門課程的成績分布,男女比例或班級比例進行人員查詢:

根據  “性別”=“男,女”  進行查詢
根據  “班級”=“1班,2班”  進行查詢
根據  “成績”=“及格,不及格”  進行查詢

按照傳統設計——全部測試,分析上述測試需求,有3個被測元素,被測元素我們稱為因子,每個因子有兩個取值,我們稱之為水平值,所以全部測試用例個數是2X2X2=8,參見下表

序號性別班級成績
1 1班 及格
2 1班 不及格
3 2班 及格
4 2班 不及格
5 1班 及格
6 1班 不及格
7 2班 及格
8 2班 不及格

利用正交表設計測試用例,我們得到的測試用例個數是n=3*(2-1)+1=4,對於三因素兩水平的剛好有L4(23)的正交表可以套用,如下:


技術分享圖片 Paste_Image.png

案例二
因子的水平值一樣,但沒有完全一樣的正交表時,該如何選擇?
生產化工產品,需要提高收率(產品的實際產量與理論上投入的最大產量之比),認為反應溫度的高低、加堿量的多少、催化劑種類等多種因素,都是造成收率不穩的主要原因。根據以往經驗,選擇溫度的三個水平:80℃、85℃、90℃;加堿量的三個水平:35、48、55(kg);催化劑的三個水平:甲、乙、丙三種。
根據分析,水平和因子都為3,沒有對應的正交表
選取正交表時需滿足以下3個條件:
1)表中的因子數>=3
2)表中至少有3個因子的水平數>=3
3)行數取最少的一個
此時我們選擇最近的 L9(34),把最後一列去掉
行數 =4*(3-1)+1=9,即為9個case
如果做全面測試,則需3×3×3=27次
從這點可以說明用正交試驗法能有效地、合理地減少測試用例和工時,節約測試成本。

技術分享圖片 沒有完全一樣的正交表.png

案例三
因子的水平值不相等
如下截取了我目前正在測的項目中某個頁面的搜索情況
忽略不重要的因子“時間類型”,剩下7個因子,其中6個因子為2水平(填與不填),狀態為4水平,按照規則選取正交表時需要滿足3個條件,發現 L16(4X212) 和 L16(42X29) 均適用,因行數也都是16行,所以選擇列數少的。

技術分享圖片 搜索

表格中1代表填,0代表不填

技術分享圖片 轉化結果圖.png

溫馨提示:實際測試過程中可以借助allpairs工具來自動生成正交表
工具下載:http://www.satisfice.com/tools/pairs.zip
步驟如下:
1)將因子和水平寫入Excel文件中
2)將文件另存為“制表符分隔”的文本文件
3)將文件移到工具所在的目錄下(若第二步直接到工具目錄下第三步可忽略)
4)運行cmd程序,進入工具所在目錄
輸入命令:allpairs.exe 文件名.txt > 輸出文件名.txt

技術分享圖片 allpairs工具生成正交表.png

四、錯誤推測法

錯誤推測法是根據以往的測試經驗和對系統內部知識的了解,列出系統中各種可能存在的錯誤和容易發生錯誤的特殊情況,並設計出test case,但是該方法只能作為測試設計的補充,而不能單獨用來設計測試用例,不然可能會導致測試覆蓋面不全。

另外,錯誤推測並不是瞎猜,不是沒有根據和目的的猜測,它需要了解系統薄弱的地方開發人員的盲點,也可以根據以往的缺陷分析報告來分析系統最容易出現錯誤的地方,作為推測的依據。

案例一:聊天窗口功能
1)輸入特殊字符(全角、半角)後,窗口是否能夠正常顯示
2)輸入空格,是否能夠過濾,是否會計算長度
3)輸入html字符
4)輸入腳本語言函數
5)在需要密碼驗證,或者需要二次輸入確認的地方,通過復制粘貼第一次的輸入內容是否能夠通過

案例二:查詢功能
1)無條件查詢
2)是否支持模糊查詢
3)查詢的關鍵字之間是否可用連接字符
4)輸入正確的查詢條件前加上空格,看是否能正確查出相應的數據

案例三:登錄功能
1)輸入的數據前存在空格,是否能夠正常登錄
2)輸入的密碼是否能夠加密顯示
3)用戶在註銷之後是否再登錄成功
4)登錄失敗後,不能記錄密碼的功能
5)輸入密碼的時候,大寫鍵盤開啟的時候系統是否有提示信息
...等等

五、異常分析法

異常分析法是針對系統有可能存在的異常操作、軟硬件缺陷引起的故障進行分析,以此設計test case,驗證系統的容錯能力,以及當系統出現異常時故障恢復的能力。

測試人員可以人為的制造一些異常情況(如安裝程序時斷電、服務器斷網、數據損壞等),來驗證系統的處理情況。

六、場景分析法

現在的軟件幾乎都是用事件觸發來控制流程的,事件觸發時的情景便形成了場景,而同一事件不同的觸發順序和處理結果就形成事件流。這種在軟件設計方面的思想也可引入到軟件測試中,可以比較生動地描繪出事件觸發時的情景,有利於測試設計者設計測試用例,同時使測試用例更容易理解和執行(由此會產生很多組場景)。

需要註意的是場景設計方法不是單獨存在的,具體到每個測試項目裏都會用到多種方法,每種類型的軟件有各自的特點,每種測試用例設計的方法也有各自的特點,針對不同軟件如何利用這些黑盒方法是非常重要的,在實際測試中,往往是綜合使用各種方法才能有效提高測試效率和測試覆蓋度,這就需要認真掌握這些方法的原理,積累更多的測試經驗,以有效提高測試水平。

設計方法步驟
1)畫業務流程圖
2)設置功能路徑優先級(根據2個原則:使用的頻率、重要程度)
3)確定測試路徑
4)選取測試數據
5)構造測試用例

如網站測試按照場景流程考慮可分為:
基本流、分支流、異常流、驗證流等劃分方式

技術分享圖片 網站測試場景.png

作者:倔強的瀟灑小姐
鏈接:https://www.jianshu.com/p/43b9ce31f2b2
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。

黑盒測試用例設計方法普及【轉載】