1. 程式人生 > >黑盒測試用例設計 一

黑盒測試用例設計 一

簡介: 總結黑盒測試用例的常用設計方法

等價類劃分

一、方法簡介

1.定義

把所有可能的輸入資料,即程式的輸入域劃分成若干部分(子集),然後從每一個子集中選取少數具有代表性的資料作為測試用例

2.劃分等價類:

等價類是指某個輸入域的子集合。在該子集合中,各個輸入資料對於揭露程式中的錯誤都是等效的。等價類劃分可有兩種不同的情況:有效等價類和無效等價類。

(1)有效等價類

是指對於程式的規格說明來說是合理的、有意義的輸入資料構成的集合。利用有效等價類可檢驗程式是否實現了規格說明中所規定的功能和效能。

(2)無效等價類

與有效等價類的定義恰巧相反。無效等價類指對程式的規格說明是不合理的或無意義的輸入資料所構成的集合。對於具體的問題,無效等價類至少應有一個,也可能有多個。

設計測試用例時,要同時考慮這兩種等價類。因為軟體不僅要能接收合理的資料,也要能經受意外的考驗,這樣的測試才能確保軟體具有更高的可靠性。

3.設計測試用例

在確立了等價類後,可建立等價類表,列出所有劃分出的等價類輸入條件:有效等價類、無效等價類,然後從劃分出的等價類中按以下三個原則設計測試用例:
(1)為每一個等價類規定一個唯一的編號;
(2)設計一個新的測試用例,使其儘可能多地覆蓋尚未被覆蓋地有效等價類,重複這一步,直到所有的有效等價類都被覆蓋為止;
(3)設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重複這一步,直到所有的無效等價類都被覆蓋為止

二、實戰演習

1.某程式規定:"輸入三個整數 a 、 b 、 c 分別作為三邊的邊長構成三角形。通過程式判定所構成的三角形的型別,當此三角形為一般三角形、等腰三角形及等邊三角形時,分別作計算 … "。用等價類劃分方法為該程式進行測試用例設計。

分析題目中給出和隱含的對輸入條件的要求:
(1)整數 (2)三個數 (3)非零數 (4)正數
(5)兩邊之和大於第三邊 (6)等腰 (7)等邊
如果 a 、 b 、 c 滿足條件( 1 ) ~ ( 4 ),則輸出下列四種情況之一:
1)如果不滿足條件(5),則程式輸出為 " 非三角形 " 。
2)如果三條邊相等即滿足條件(7),則程式輸出為 " 等邊三角形 " 。
3)如果只有兩條邊相等、即滿足條件(6),則程式輸出為 " 等腰三角形 " 。
4)如果三條邊都不相等,則程式輸出為 " 一般三角形 " 。

列出等價類表並編號,如下圖:

覆蓋有效等價類的測試用例如下:

a b c 覆蓋等價類號碼
3 4 5 (1)–(7)
4 4 5 (1)–(7), (8)
4 5 5 (1)–(7), (9)
5 4 5 (1)–(7), (10)
4 4 4 (1)–(7), (11)

覆蓋無效等價類的測試用例如下:

a b c 覆蓋等價類號碼
3.5 4 5 12
3 3.5 5 13
3 4 5.5 14
3.5 4.4 5 15
3 4.5 5.5 16
3.5 4 5.5 17
2.5 4.5 5.5 18
3 19
4 20
5 21
3 4 22
4 5 23
3 5 24
3 4 5 25
0 4 5 26
3 0 5 27
3 4 0 28
0 0 5 29
3 0 0 30
0 4 0 31
0 0 0 32
-3 4 5 33
3 -4 5 34
3 4 -5 35
-3 -4 5 36
-3 4 -5 37
3 -4 -5 38
-3 -4 -5 39
3 1 5 40
3 2 5 41
3 1 1 42
3 2 1 43
1 4 2 44
3 4 1 45

2.設有一個檔案管理系統,要求使用者輸入以年月表示的日期。假設日期限定在1990年1月~2049年12月,並規定日期由6位數字字元組成,前4位表示年,後2位表示月。現用等價類劃分法設計測試用例,來測試程式的"日期檢查功能"。

(1)劃分等價類並編號,下表等價類劃分的結果:

(2)有效等價類設計測試用例如下:

測試資料 期望結果 覆蓋的有效等價類
200211 輸入有效 ①、⑤、⑧

(3) 為每一個無效等價類設計一個測試用例,設計結果如下:

測試資料 期望結果 覆蓋的無效等價類
95June 無效輸入
20036 無效輸入
2001006 無效輸入
198912 無效輸入
200401 無效輸入
200100 無效輸入
200113 無效輸入

邊界值分析

一.方法簡介

1.定義

邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。

2.與等價劃分的區別

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

3.邊界值分析方法的考慮:

(1)大量的錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入輸出範圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。
(2)使用邊界值分析方法設計測試用例,應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試資料,而不是選取等價類中的典型值或任意值作為測試資料。

4.常見的邊界值

1)對16-bit 的整數而言 32767 和 -32768 是邊界
2)螢幕上游標在最左上、最右下位置
3)報表的第一行和最後一行
4)陣列元素的第一個和最後一個
5)迴圈的第 0 次、第 1 次和倒數第 2 次、最後一次

5.基於邊界值分析方法選擇測試用例的原則

(1) 如果輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍邊界的值作為測試輸入資料。
例如,如果程式的規格說明中規定:“重量在10公斤至50公斤範圍內的郵件,其郵費計算公式為……”。作為測試用例,我們應取10及50,還應取10.01,49.99,9.99及50.01等。

(2) 如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試資料。
比如,一個輸入檔案應包括1~255個記錄,則測試用例可取1和255,還應取0及256等。

(3) 將規則1)和2)應用於輸出條件,即設計測試用例使輸出值達到邊界值及其左右的值。
例如,某程式的規格說明要求計算出"每月保險金扣除額為0至1165.25元",其測試用例可取0.00及1165.24、還可取一0.01及1165.26等。
再如一程式屬於情報檢索系統,要求每次"最少顯示1條、最多顯示4條情報摘要",這時我們應考慮的測試用例包括1和4,還應包括0和5等。

(4) 如果程式的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作為測試用例。

(5) 如果程式中使用了一個內部資料結構,則應當選擇這個內部資料結構的邊界上的值作為測試用例。

(6) 分析規格說明,找出其它可能的邊界條件。

二、實戰演練

1.在NextDate函式中,規定了變數mouth和變數day的取值範圍為1≤mouth≤12和1≤day≤31,並設定變數year的取值範圍為1912≤year≤2050 。

用邊界值分析法設計測試用例如下:

錯誤猜測法

一. 方法簡介

1. 定義

基於經驗和直覺推測程式中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方法。

2. 錯誤推測方法的基本思想

列舉出程式中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們選擇測試用例。
(1) 例如, 輸入資料和輸出資料為0的情況;輸入表格為空格或輸入表格只有一行。 這些都是容易發生錯誤的情況。可選擇這些情況下的例子作為測試用例。

(2) 例如,前面例子中成績報告的程式,採用錯誤推測法還可補充設計一些測試用例:
I. 程式是否把空格作為回答
II. 在回答記錄中混有標準答案記錄
III. 除了標題記錄外,還有一些的記錄最後一個字元即不是2也不是3
IV. 有兩個學生的學號相同
V. 試題數是負數。

(3) 再如,測試一個對線性表(比如陣列)進行排序的程式,可推測列出以下幾項需要特別測試的情況:
I. 輸入的線性表為空表;
II. 表中只含有一個元素;
III. 輸入表中所有元素已排好序;
IV. 輸入表已按逆序排好;
V. 輸入表中部分或全部元素相同。

完,下一篇總結因果圖和判定表…