詳細講解黑盒測試的幾種用例設計方法-邊界值分析法

概念

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

邊界值分析法的應用

根據大量的測試統計資料,很多錯誤是發生在輸入或輸出範圍的邊界上,而不是發生在輸入/輸出範圍的中間區域。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。

使用邊界值分析方法設計測試用例,首先應確定邊界情況。通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況。應當選取正好等於,剛剛大於或剛剛小於邊界的值作為測試資料,而不是選取等價類中的典型值或任意值作為測試資料。

邊界值分析法與等價類分析法的區別:

1)。邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。

2)。邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況。

例:測試計算平方根的函式

——輸入:實數

——輸出:實數

——需求說明:當輸入一個0或比0大的數的時候,返回其正平方根;當輸入一個小於0的數時,顯示錯誤資訊“平方根非法-輸入值小於0”並返回0;庫函式Print-Line可以用來輸出錯誤資訊。

A。等價類劃分:

I。可以考慮作出如下劃分:

a、輸入 (i)<0 和 (ii)>=0

b、輸出 (a)>=0 和 (b) Error

II。測試用例有兩個:

a、輸入4,輸出2。對應於 (ii) 和 (a) 。

b、輸入-10,輸出0和錯誤提示。對應於 (i) 和 (b) 。

B。邊界值分析:

劃分(ii)的邊界為0和最大正實數;劃分(i)的邊界為最小負實數和0。由此得到以下測試用例:

a、輸入 {最小負實數}

b、輸入 {絕對值很小的負數}

c、輸入 0

d、輸入 {絕對值很小的正數}

e、輸入 {最大正實數}

2。通常情況下,軟體測試所包含的邊界檢驗有幾種型別:數字、字元、位置、重量、大小、速度、方位、尺寸、空間等。

3。相應地,以上型別的邊界值應該在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最長、 空/滿等情況下。利用邊界值作為測試資料

邊界值

測試用例的設計思路

字元

起始-1個字元/結束+1個字元

假設一個文字輸入區域允許輸入1個到255個 字元,輸入1個和255個字元作為有效等價類;輸入0個和256個字元作為無效等價類,這幾個數值都屬於邊界條件值。

數值

最小值-1/最大值+1

假設某軟體的資料輸入域要求輸入5位的資料值,可以使用10000作為最小值、99999作為最大值;然後使用剛好小於5位和大於5位的 數值來作為邊界條件。

空間

小於空餘空間一點/大於滿空間一點

例如在用隨身碟儲存資料時,使用比剩餘磁碟空間大一點(幾KB)的檔案作為邊界條件。

4。內部邊界值分析:

在多數情況下,邊界值條件是基於應用程式的功能設計而需要考慮的因素,可以從軟體的規格說明或常識中得到,也是終端使用者可以很容易發現問題的。然而,在測試用例設計過程中,某些邊界值條件是不需要呈現給使用者的,或者說使用者是很難注意到的,但同時確實屬於檢驗範疇內的邊界條件,稱為內部邊界值條件或子邊界值條件。

內部邊界值條件主要有下面幾種:

1)。數值的邊界值檢驗:計算機是基於二進位制進行工作的,因此,軟體的任何數值運算都有一定的範圍限制。

範圍或值

位(bit)

0 或 1

位元組(byte)

0 ~ 255

字(word)

0~65535(單字)或 0~4294967295(雙字)

千(K)

1024

兆(M)

1048576

吉(G)

1073741824

2)。字元的邊界值檢驗:在計算機軟體中,字元也是很重要的表示元素,其中ASCII和Unicode是常見的編碼方式。如下列出了一些常用字元對應的ASCII碼值。

字元

ASCII碼值

空 (null)

0

空格 (space)

32

可輸入的字元

33~126

0~9

48~57

A~Z

65~90

a~z

97~122

3)。其它邊界值檢驗:在不同的行業應用領域,依據硬體和軟體的標準不同而具有各自特定的邊界值。如下列出部分手機相關的邊界值:

硬體裝置

範圍或值

手機鋰電池電壓

工作電壓:3。6~4。2V;

保護電壓:2。5~3V不等

手機正常使用溫度

-25°C~+60°C

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)。分析規格說明,找出其它可能的邊界條件。

例項

現有一個學生標準化考試批閱試卷,產生成績報告的程式。其規格說明如下:程式的輸入檔案由一些有80個字元的記錄組成,如右圖所示,所有記錄分為3組:

詳細講解黑盒測試的幾種用例設計方法-邊界值分析法

1)。標題:這一組只有一個記錄,其內容為輸出成績報告的名字。

2)。試卷各題標準答案記錄:每個記錄均在第80個字元處標以數字“2”。該組的第一個記錄的第1至第3個字元為題目編號(取值為1一999)。第10至第59個字元給出第1至第50題的答案(每個合法字元表示一個答案)。該組的第2,第3……個記錄相應為第51至第100,第101至第150,…題的答案。

3)。每個學生的答卷描述:該組中每個記錄的第80個字元均為數字“3”。每個學生的答卷在若干個記錄中給出。如甲的首記錄第1至第9字元給出學生姓名及學號,第10至第59字元列出的是甲所做的第1至第50題的答案。若試題數超過50,則第2,第3……紀錄分別給出他的第51至第100,第101至第150……題的解答。然後是學生乙的答卷記錄。

4)。學生人數不超過200,試題數不超過999。

5)。程式的輸出有4個報告:

a)按學號排列的成績單,列出每個學生的成績、名次。

b)按學生成績排序的成績單。

c)平均分數及標準偏差的報告。

d)試題分析報告。按試題號排序,列出各題學生答對的百分比。

解答:分別考慮輸入條件和輸出條件,以及邊界條件。給出下表所示的輸入條件及相應的測試用例。

詳細講解黑盒測試的幾種用例設計方法-邊界值分析法

輸出條件及相應的測試用例表。

詳細講解黑盒測試的幾種用例設計方法-邊界值分析法

2。三角形問題的邊界值分析測試用例

在三角形問題描述中,除了要求邊長是整數外,沒有給出其它的限制條件。在此,我們將三角形每邊邊長的取範圍值設值為[1, 100] 。

測試用例

a

b

c

預期輸出

Test1

Test2

Test3

Test4

Test5

60

60

60

50

50

60

60

60

50

50

1

2

60

99

100

等腰三角形

等腰三角形

等邊三角形

等腰三角形

非三角形

Test6

Test7

Test8

Test9

60

60

50

50

1

2

99

100

60

60

50

50

等腰三角形

等腰三角形

等腰三角形

非三角形

Test10

Test11

Test12

Test13

1

2

99

100

60

60

50

50

60

60

50

50

等腰三角形

等腰三角形

等腰三角形

非三角形

3。NextDate函式的邊界值分析測試用例

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

測試用例

mouth

day

year

預期輸出

Test1

Test2

Test3

Test4

Test5

Test6

Test7

6

6

6

6

6

6

6

15

15

15

15

15

15

15

1911

1912

1913

1975

2049

2050

2051

1911。6。16

1912。6。16

1913。6。16

1975。6。16

2049。6。16

2050。6。16

2051。6。16

Test8

Test9

Test10

Test11

Test12

Test13

6

6

6

6

6

6

-1

1

2

30

31

32

2001

2001

2001

2001

2001

2001

day超出[1…31]

2001。6。2

2001。6。3

2001。7。1

輸入日期超界

day超出[1…31]

Test14

Test15

Test16

Test17

Test18

Test19

-1

1

2

11

12

13

15

15

15

15

15

15

2001

2001

2001

2001

2001

2001

Mouth超出[1…12]

2001。1。16

2001。2。16

2001。11。16

2001。12。16

Mouth超出[1…12]