黑盒用例設計方法

一、黑盒測試的基本概念
    黑盒測試又稱數據驅動測試,完全不考慮程序內部結構和內部特性,注重於測試軟件的功能需求。
    由於黑盒測試不需要了解程序內部結構,所以許多高層測試,如確認測試、系統測試、驗收測試都採用黑盒測試。
黑盒測試能發現以下幾類錯誤:
  • 功能不對或功能遺漏。
  • 界面錯誤。
  • 數據結構或數據庫訪問錯誤。
  • 性能問題。
  • 初始化和終止錯誤。
 
二、黑盒測試的優缺點
黑盒測試的優點
  • 有針對性地找問題,並且定位問題更準確;
  • 黑盒測試可以證明產品是否達到用戶要求的功能,是否符合用戶的工作要求;
  • 能重複執行相同的操作,測試中最枯燥的部分可由自動化完成;
黑盒測試的缺點
  • 需要充分了解產品用到的技術,測試人員需要具有較多的經驗;
  • 在測試過程中很多是手工操作;
  • 測試人員需要負責大量的文檔;
 
三、黑盒用例設計方法
 
1.等價類劃分
 
例:計算兩個1~100之間整數的和
      如果要進行完全測試,一共要設計多少個測試用例呢?加數1有1~100共計100個取值,加數2也有1~ 100共計100個取值,所以他們之間的組合就有100*100=10000種組合可能,但這只是測試了正常範圍內的取值。如果用戶輸入的數據不在1~ 100之間呢,窮舉測試肯定不可能的。
      由此引入了等價類劃分思想。
                        等價類:是指某個輸入域的子集合。
      等價類劃分爲:
有效等價類:指符合《需求規格說明書》,輸入合理的數據集合。
無效等價類:指不符合《需求規格說明書》,輸入不合理的數據集合。
針對從上面的例子進行等價類劃分
        ———————(<1)—————————|———————(1~100)—————————|——————(>100)—————
                              無效等價類                                                   有效等價類                                                無效等價類             
    
        我們將輸入域分成了一個有效等價類(1~100) 和兩個無效等價類(<1,>100) ,併爲每一個等價類進行編號,然後我們就可以從每一個等價類中選取一個代表性的數據來測試,設計如下表所示的測試用例:
 
編號
所屬等價類
加數1
加數2
1
2(有效等價類)
3
40
43
2
1(無效等價類)
0
-1
提示“請輸入1~100之間的整數”
3
3(無效等價類)
110
101
提示“請輸入1~100之間的整數”
        到這裏我們的工作似乎結束了,還需要設計其他測試用例嗎?
        剛剛輸入的數據都是整數,如果輸入小數,甚至字母怎麼辦?
        這說明剛纔的等價類還不完善,我們只考慮了輸入數據的範圍,沒有考慮輸入數據的類型(我們認爲只輸入數據,可是最終用戶輸入什麼都有可能)。綜合考慮輸入數據的類型和範圍劃分等價類,如下圖所示:
 
等價類劃分的測試用例(擴展)
編號
所屬等價類
加數1
加數2
1
2(有效等價類)
3
40
43
2
1(無效等價類)
0
-1
提示“請輸入1~100之間的整數”
3
3(無效等價類)
110
101
提示“請輸入1~100之間的整數”
4
4(無效等價類)
1.2
1.2
提示“請輸入1~100之間的整數”
5
5(無效等價類)
A
B
提示“請輸入1~100之間的整數”
6
6(無效等價類)
@
%
提示“請輸入1~100之間的整數”
7
7(無效等價類)
空格
空格
提示“請輸入1~100之間的整數”
8
8(無效等價類)
 
 
提示“請輸入1~100之間的整數”
等價類劃分的步驟:
①先考慮輸入數據的數據類型( 合法和非法的)
②再考慮數據範圍(合法類型中的合法區間和非法區間)
③畫出示意圖,區分等價類
④爲每一個等價類編號
 
例:有一個檔案管理系統,要求用戶輸入以年月表示的日期。
        條件:日期限定在1990年1月~2049年12月,並規定日期由6位數字字符組成,前4位表示年,後2位表示月。
測試用例:
    1)劃分等價類並編號,下表爲等價類劃分的結果
 
輸入等價類
有效等價類
無效等價類
 
日期的類型及長度
 
①6位數字字符
②有非數字字符
③少於6位數字字符
④多於6位數字字符
年份範圍
⑤在1990~2049之間
⑥小於1990
⑦大於2049
月份範圍
⑧少於6位數字字符
⑨等於00
⑩大於12
    2)設計測試用例,以便覆蓋所有的有效等價類在表中列出了3個有效等價類,編號分別爲①、⑤、⑧,設計的測試用例如下:
 
測試數據
期望結果
覆蓋的 有效等價類
200211
輸入有效
①⑤⑧
    3)爲每一個無效等價類設計一個測試用例,設計結果如下:
測試數據
期望結果
覆蓋的 有效等價類
95June
無效輸入
20036
無效輸入
2001006
無效輸入
198912
無效輸入
205001
無效輸入
200100
無效輸入
200113
無效輸入
 
 
2.邊界值劃分
 
    程序的很多錯誤發生在輸入或輸出範圍的邊界上,因此針對各種邊界情況設置測試用例,可以發現不少程序缺陷。
    設計方法:
  • 確定邊界情況(輸入或輸出等價類的邊界)
  • 選取正好等於、剛剛大於或剛剛小於邊界值作爲測試數據
例:計算兩個1~100之間整數的和
    我們在設計測試用例的時。要重點考慮這兩個邊界問題。
根據邊界值方法,測試用例修改如下:
編號
所屬等價類
加數1
加數2
1
 
2(有效等價類)
 
1
1
2
2
100
100
200
3
1(無效等價類)
0
-1
提示“請輸入1~100之間的整數”
4
3(無效等價類)
110
101
提示“請輸入1~100之間的整數”
5
4(無效等價類)
1.2
1.2
提示“請輸入1~100之間的整數”
6
5(無效等價類)
A
B
提示“請輸入1~100之間的整數”
7
6(無效等價類)
@
%
提示“請輸入1~100之間的整數”
8
7(無效等價類)
空格
空格
提示“請輸入1~100之間的整數”
9
8(無效等價類)
 
 
提示“請輸入1~100之間的整數”
 
邊界值與等價劃分的區別:
  • 邊界值分析不是從某等價類中隨便挑一個作爲代表,而是這個等價類的每個邊界都要作爲測試條件。
  • 邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況。
常見的邊界值:
  • 文本框接受字符個數,比如用戶名長度,密碼長度等。
  • 報表的第一行和最後一行。
  • 數組元素的第一個和最後一個,
  • 循環的第1次、第2次和倒數第2次、最後一次。
 
 
等價類和邊界值的綜合示例
舉例:某保險公司保費計算方式爲投保額*保險率,保險率又依點數不同而有差別,10點以上費率爲0.6%,10點以下費率爲0.1%。保險率和以下參數有關:
  • 年齡:數字0-150
  • 性別:字符組合,區分大小寫
  • 婚姻:字符組合
  • 撫養人:數字1-9人
注:其中前三個爲必填項,最後一個爲選填項
 
選項
參數
點數
 
 
年齡
20~39歲
6點
40~59歲
4點
60歲以上,20歲以下
2點
 
性別
MALE
5點
FEMALE
3點
 
婚姻
已婚
3點
未婚
5點
撫養人數
一人扣0.5點最多扣3點(四捨五入取整數)
考慮等價類
  • 確定輸入
輸入:年齡、性別、婚姻、撫養人數
  • 確定每個輸入的輸入條件
年齡:非負整數、0-150、必填
        性別:字符組合、區分大小寫、MALE或者FEMALE、必填
        婚姻:字符組合、已婚或者未婚、必填
        撫養人數:正整數、1-9、選填
  • 對每個輸入的輸入條件進行等價劃分
 
輸入
輸入條件 有效等價類
無效等價類
 
 
 
 
 
年齡
非負整數
非負整數                (1)
負整數              (7)
小數                  (8)
字母                  (9)
特殊字符           (10)
0~150
00~19                 (2)
20~39                 (3)
40~59                 (4)
60~150               (5)
 
<0                    (11)
>150                (12)
必填
填                        (6)
不填                  (13)
 
 
性別
 
字符組合
字符組合              (1)
非字符組合        (6)
區分大小寫
大寫                     (2)
大寫                  (7)
大小寫混合        (8)
MALE或FEMALE
MALE                  (3)
 FEMALE             (4)
非MALE、FEMALE(9)
必填
填                        (5)
不填                   (10)
 
 
婚姻
字符組合
字符組合              (1)
非字符組合         (5)
已婚或未婚
已婚                    (2)
未婚                    (3)
非已婚、未婚      (6)
必填
填                       (4)
不填                    (7)
 
 
撫養人數
正整數
 
 
正整數                (1)
非正整數             (6)
小數                    (7)
字母                    (8)
特殊字符             (9)
1~9
1~6                    (2)
7~9                    (3)
<1                     (10)
>9                     (11)
選填
填                      (4)
不填                   (5)
 
針對每個輸入設計數據覆蓋等價類
 
輸入
有效值
無效值
年齡
 
 
15               (覆蓋1、2、6)
25               (覆蓋1、3、6)
50               (覆蓋1、4、6)
80               (覆蓋1、5、6)
邊界值: 0、19. 20、39、40、59、60、150
-20           (覆蓋7)
15.5          (覆蓋8)
a               (覆蓋9)
&                (覆蓋10)
-999.5         (覆蓋11)
180             (覆蓋12)
不填             (覆蓋13)
邊界值:-1、151
性別
        
MALE       (覆蓋1、2、3、5)
FEMALE      (覆蓋1、2、4)
 
6553          (覆蓋6)
male           (覆蓋7)
fEMALE       (覆蓋8)
男                (覆蓋9)
不填               (覆蓋10)
婚姻
已婚           (覆蓋1、2、4)
未婚           (覆蓋1、3、4)
 
1234            (覆蓋5)
離婚             (覆蓋6)
不填             (覆蓋7)
 
 
 
撫養人數
 
5              (覆蓋1、2、4)
8               (覆蓋1、3、4)
不填     (覆蓋3)
邊界值:1、6、7、9
-6                 (覆蓋6)
5.1                (覆蓋7)
A                  (覆蓋8)
&                  (覆蓋9)
-100               (覆蓋10)
100                (覆蓋11)
邊界值:0、10
測試用例:
 
用例編號
年齡
性別
婚姻
撫養人數
點數
1
15
MALE
未婚
不填
12
2
25
FEMALE
已婚
8
9
3
50
MALE
未婚
5
11
4
80
FEMALE
已婚
1
7
5
0
MALE
未婚
不填
12
6
19
FEMALE
未婚
不填
10
7
20
MALE
未婚
不填
16
8
39
FEMALE
已婚
6
9
9
40
MALE
已婚
7
9
10
59
FEMALE
已婚
9
7
11
60
MALE
未婚
不填
12
12
150
FEMALE
已婚
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
-20
FEMALE
已婚
9
14
15.5
FEMALE
已婚
9
15
a
FEMALE
已婚
9
16
&
FEMALE
已婚
9
17
-999.5
FEMALE
已婚
9
18
180
FEMALE
已婚
9
19
不填
FEMALE
已婚
9
20
-1
FEMALE
已婚
9
21
151
FEMALE
已婚
9
22
39
6553
已婚
9
23
39
male
已婚
9
24
39
fEMALE
已婚
9
25
39
已婚
9
26
39
不填
已婚
9
27
39
MALE
1234
9
28
39
MALE
離婚
9
29
39
MALE
不填
9
30
39
FEMALE
已婚
-6
31
39
FEMALE
已婚
5.1
32
39
FEMALE
已婚
a
33
39
FEMALE
已婚
$
34
39
FEMALE
已婚
-100
35
39
FEMALE
已婚
100
36
39
FEMALE
已婚
0
37
 39
FEMALE
已婚
10
 
 
 
3.錯誤推測法
    基本思想:利用直覺和經驗猜測出出錯的可能類型,列舉出程度中所有可能的錯誤和容易發生錯誤的情況,基本思想是列舉出可能犯的錯誤或錯誤易發生的清單,然後根據清單編寫測試用例;
        這種方法很大程度上是憑經驗進行的,即憑人們對過去所作測試結果的分析,對所揭示缺陷的規律性作直覺的推測來發現缺陷。
 
 
 
4.因果圖法
        因果圖法比較適合輸入條件比較多的情況,測試所有的輸入條件的排列組合。所謂的原因就是輸入,所謂的結果就是輸出。
        
    利用因果圖導出測試用例需要經過以下幾個步驟:
①分析程度規格說明的描述中,哪些是原因,哪些是結果原因;常常是輸入條件或輸入條件的等價類,而結果是輸出條件。
②分析程度規格說明的描述中語義內容,並將其表示成連接各個原因與各個結果的“因果圖”。
③標明約柬條件。由於語法或環境的限制,有些原因和結果的組合情況是不可能出現的。
④把因果圖轉換成判定表。
⑤爲判定表中的每一列表示的情況設計測試用例。
 
       基本圖形符號:
  • 恆等:若原因出現,則結果出現;若原因不出現,則結果不出現。
  • 非(~) :若原因出現,則結果不出現;若原因不出現,則結果出現。
  • 或(V) :若幾個原因中有一個出現,則結果出現;若幾個原因都不出現,則結果不出現。
  • 與(N) :若幾個原因都出現,結果纔出現;若其中有一個原因不出現,則結果不出現。

 
    約束符號:
  • E (互斥) :表示兩個原因不會同時成立,兩個中最多有一個可能成立
  • I (包含) :表示三個原因中至少有一個必須成立
  • 0 (惟一) :表示兩個原因中必須有一個,且僅有一個成立
  • R (要求) :表示兩個原因,a出現時,b也必須出現,a出現時,b不可能不出現
 

 
 
例:有一個處理單價爲2.5元的盒裝飲料的自動售貨機軟件。若投入2.5元硬幣,按可樂”。“啤酒” 、或“奶茶”按鈕。相應的飲料就送出來。若投入的是3元硬幣。在送出飲料的同時退還5角硬幣。
 
原因(輸入):
①投入2.5元硬幣;
②投入3元;
③按“可樂”按鈕;
④按“啤酒”按鈕;
⑤按“奶茶”按鈕。
中間狀態:
①已投幣;
②已按鈕
結果(輸出):
①退還5角硬幣;
②送出“可樂”飲料;
③送出“啤酒”飲料;
④送出“奶茶”飲料:

 
因果圖轉換成判定表

 
根據判定表設計測試用例

 
 
因果圖法的問題
  • 作爲輸入條件的原因和輸出結果之間的因果關係,有時候很難從軟件規格說明中得到。
  • 因果圖得到的測試用例數量將達到驚人的程度,這給軟件測試工作帶來了沉重負擔。
 
 
5.正交試驗設計法
    什麼是正交試驗設計法?
        正交試驗設計法,是一-種成對測試交互的系統的統計方法。它提供了一種能對所有變量對的組合進行典型覆蓋(均勻分佈)的方法。可以從大量的試驗點中挑出適量的、有代表性的點,利用“正交表” ,合理的安排試驗的一種科學的試驗設計方法。
 
正交表的構成
  • 行數:正交表中的行的個數,即試驗的次數,也是我們通過正交實驗法
  • 設計的測試用例的個數。
  • 因素數:正交表中列的個數,即要測試的功能點。
  • 水平數:任何單個因素能夠取得的值的最大個數,即要測試功能點的取值個數。
  • 正交表的形式: L行數(水平數^因素數)如: L8(2^7)。
 

 
 
    用正交表設計測試用例的步驟
(1)有哪些因素(功能點)
(2)每個因素有哪幾個水平(功能點的取值)
(3)選擇一個合適的正交表
(4)把變量的值映射到表中
(5)把每一行的各因素水平的組合做爲一個測試用例
(6)加上你認爲可疑且沒有在表中出現的組合
 
    如何選擇正交表
  • 考慮因素(功能點)的個數
  • 考慮因素水平(功能點的取值)的個數
  • 考慮正交表的行數
  • 取行數最少的一個
 
    設計測試用例的三種情況
  • 因素數(變量)、水平數(變量值)相符:因素數與水平數剛好符合正交表。
  • 因素數不相同:如果因素數不同的話,可以採用包含的方法,在正交表公式中找到包含該情況的公式,如果有N個符合條件的公式,那麼選取行數最少的公式。
  • 水平數不相同:採用包含和組合的方法選取合適的正交表公式。
 
例一:視圖選項卡上的“顯示隱藏”組中有3個可用選項:
 
    有3個因素:網格線、編輯欄、標題
    每個因素有2個水平:選與不選
 
    選擇正交表的分析:
1、表中的因素數>=3;
2、表中至少有3個因素數的水平數>=2;
3、行數取最少的一個。
4、從正交表公式中開始查找,結果爲: L4(2^3)。
 
    正交表變量的映射
網格線: 0→選,1→不選
編輯欄: 0→選,1→不選
    標題:0→選,1→不選
 
列號
1
2
3
 
 
行號
1
0
0
0
2
0
1
1
3
1
0
1
4
1
1
0
                                                    ||
                                                   \ /
 
列號
1
2
3
 
 
行號
1
2
不選
不選
3
不選
不選
4
不選
不選
 
    測試用例如下:
1.選中網格線、選中編輯欄、選中標題
2.選中網格線、不選編輯欄、不選標題
3.不選網格線、選中編輯欄、不選標題
4.不選網格線、不選編輯欄、選中標題
    增補測試用例
5.不選風格線、不選編輯欄、不選標題
測試用例的減少數: 8→5
 
 
例二:根據PowerPofnt的打印功能的描述設計測試用例,功能描述如下:
  • 打印範圍分:全部、當前幻燈片、給定範圍
  • 打印內容分:幻燈片、講義。備註頁、大綱視圖
  • 打印顏色/灰度分8顏色。灰度、黑白
  • 打印效果分8幻燈片加框、幻燈片不加框
 
    案例分析:
根據以上提到的功能說明,構造因子狀態表,得到因子狀態
狀態/因素
A打印範圍
B打印內容
C打印顏色/灰度
D打印效果
0
全部
幻燈片
顏色
幻燈片加框
1
當前幻燈片
講義
灰度
幻燈片不加框
2
給定範圍
備註頁
黑白
 
3
 
大綱視圖
 
 
將中文字轉換成字母的因子狀態表
狀態/因素
A
B
C
D
0
A1
B1
C1
D1
1
A2
B2
C2
D2
2
A3
B3
C3
 
3
 
B4
 
 
    選擇正交表的分析:
1、表中的因素數>=4;
2、表中至少有4個因素數的水平數>=2;
3、行數取最少的一個。
4、從正交表公式中開始查找,結果爲: L16(4^5)
注:此案例中有四個被測對象,每個被測對象的狀態都不一樣。
 
正交表:

因爲分析第5列是沒有意義的,所以第5列可以刪掉,由於4個因素中那麼有一些是小於3的,所以第13到第16我們都可以刪除
得到如下測試用例:



 
6.場景圖
        用例場景是用來描述流經用例路徑的過程,這個過程從開始到結東遍歷用例中所有基本流和備選流。
用例場景舉例:
場景1:基本流
場景2:基本流備選流1
場景3:基本流備選流1備選流2
場景4:基本流備選流3
場景5:基本流備選流3備選流1
場景6:基本流備選流3備選流1備選流2
場景7:基本流備選流4
場景8:基本流備選流3備選流4
 
舉例8 ATM機用例場景
基本流
1、準備提款:用戶將銀行卡插入ATM取款機
2、驗證銀行卡: ATM機從銀行卡的磁條中讀取帳戶代碼,檢查它是否是可接收的銀行卡
3、輸入密碼: ATM機要求用戶輸入密碼
4、驗證賬戶和密碼:確定該帳戶是否有效和所輸入密碼是否正確
5、ATM選項:顯示本機的各種選項,如果選擇“取款”
6、輸入金額:要從ATM機取款金額
7、授權: ATM機通過帳戶、密碼、金額以及帳戶信息作爲一筆交易發給銀行系統來啓動驗證過程。對此事件,銀行系統處理連機狀態,並對授權請求給予答覆,批准完成取款過程,同時更新帳戶餘額
8、出鈔:提供現金
9、返回銀行卡:銀行卡被返還
10、打印收據:打印收據並提供給用戶,同時更新內部記錄
備選流2
ATM機內沒有現金
備選流3
ATM機內現金不足
備選流4
密碼有誤
備選流5
帳戶不存在或帳戶類型有誤
備選流6
帳面金額不足
 
測試用例矩陣:

 
測試用例數據:

 
 
7.流程圖法
        我們在編程時,一般都需要畫程序的算法流程圖,可以將這一思想應用到黑盒測試領域。算法流程圖是針對程序內部結構的,而黑盒測試的流程圖是針對整個系統業務功能流程的。
 
流程圖法的步驟:
第一步:詳細瞭解需求
第二步:根據需求說明或界面原型,找出業務流程的各個頁面以及各頁面之間的流轉關係
第三步:畫出業務流程
第四步:寫用例,覆蓋所有的路徑分支
 
流程圖用例:訂票模塊業務流程圖
 
 
8.小結
在實際測試過程中,我們往往需要綜合各種測試技術,現在我們來總結一下如何蹤合運用的前面學的測試技術。

 
        測試用例的設計方法不是單獨存在的,具體到每個測試項目裏都會用到多種方法,每種類型的軟件有各自的特點,每種測試用例設計的方法也有各自的特點,針對不同軟件如何利用這些黑盒方法是非常重要的,在實際測試中,往往是綜合使用各種方法纔能有效提高測試效率和測試覆蓋度,這就需要認真掌握這些方法的原理,積累更多的測試經驗,以有效提高測試水平。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章