邊界值法

邊界值法

邊界是指相對於輸入等價類和輸出等價類而言,稍高於其邊界值及稍低於其邊界值的一些特定情況。基於邊界的方法是根據定義域來實現的,最終演變成邊界值分析、健壯性測試、最壞情況測試和健壯最壞情況測試四種技術。

簡介


邊界值分析也是一種黑盒測試方法,是對等價類分析方法的一種補充,由長期的測試工作經驗得知,大量的錯誤是發生在輸入或輸出的邊界上。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。

分析


關注

邊界值分析關注的是輸入空間邊界,用以標識測試用例,基本思想是在最小值(min)、略高於最小值(min+)、正常值(nom)、略低於最大值(max-)和最大值(max)等處取值。邊界值分析手段主要有兩種方式:通過變數數量和通過值域的種類進行。如一個n變數函數f(x1,x2,……xn)按以上方式每次確定一個測試對象(基於“單缺陷假設”理論),會產生4n+1個測試用例。健壯性測試是擴展邊界值分析的測試,即增加一個略大於最大值(max+)和略小於最小值(min-)的取值,則用例數將變為6n+1。當邊界值變數不是獨立變數時,則以上測試用例就顯的不充分。對於邏輯變數而言這種用例也沒有什麼用處。

最壞情況測試

拒絕“單缺陷假設”理論的情況下,對所有變數的邊界值集合進行5元素笛卡兒積計算,用以生成測試用例,對於n變數函數的最壞測試基於邊界值分析會產生5n個測試用例,基於健壯性分析則產生7n個測試用例。相比而言最壞情況測試代價較高,因此其最佳運用是物理變數具有大量交互作用,或者函數失效的代價極高的情況下。
①“在最小值、和最大值處”是指的一般邊界值分析。
②“略小於最小值、最小值、略高於最小值、正常值、略低於最大值、最大值、略大於最大值”其實是健壯性邊界值分析,也就是考慮了非法的意外值。
③可靠性理論“單缺陷假設”:失效極少是由兩個(或多個)缺陷的同時發生引起的。

原則


邊界值法
邊界值法
一、如果輸入條件規定了值的範圍,則應該取剛達到這個範圍的邊界值,以及剛剛超過這個範圍邊界的值作為測試輸入數據;二、如果輸入條件規定了值的個數,則用最大個數、最小個數、比最大個數多1格、比最小個數少1個的數做為測試數據;
三、根據規格說明的每一個輸出條件,使用規則一;
四、根據規格說明的每一個輸出條件,使用規則二;
五、如果程序的規格說明給出的輸入域或輸出域是有序集合(如有序表、順序文件等),則應選取集合的第一個和最後一個元素作為測試用例;
六、如果程序用了一個內部結構,應該選取這個內部數據結構的邊界值作為測試用例;
七、分析規格說明,找出其他可能的邊界條件。

舉例


找零錢最佳組合
假 設 商 店 貨 品 價 格 (R) 皆 不 大 於 100 元(且 為 整 數) ,若 顧 客 付 款 在 100 元 內 (P) ,求 找 給 顧 客 之 最 少 貨幣 個(張)數? (貨 幣 面 值 50 元 (N50) , 10 元 (N10) , 5 元 (N5) , 1 元 (N1) 四 種)
一、分 析 輸 入 的 情 形。
R > 100
0 < R < = 100
邊界值法
邊界值法
R <= 0 P > 100
R<= P <= 100
P < R
二、分 析 輸 出 情 形。
N50 = 1
N50 = 0
5 > N10 >= 1
N10 = 0
N5 = 1
N5 = 0
5 > N1 >= 1
N1 = 0
三、分 析 規 格 中 每 一 決 策 點 之 情 形,以 RR1, RR2, RR3 表 示 計 算 要 找 50, 10, 5 元 貨 幣 數 時 之 剩 余 金 額。 R > 100R <= 0
P > 100
P < R
RR1 >= 50
RR2 >= 10
RR3 >= 5
四、由 上 述 之 輸 入 / 輸 出 條 件 組 合 出 可 能 的 情 形。
R > 100
R <= 0
0 < R <= 100, P > 100
0 < R <= 100, P < R
0 < R <= 100, R <= P <= 100, RR = 50
0 < R <= 100, R <= P <= 100, RR = 49
0 < R <= 100, R <= P <= 100, RR = 10
0 < R <= 100, R <= P <= 100, RR = 9
0 < R <= 100, R <= P <= 100, RR = 5
0 < R <= 100, R <= P <= 100, RR = 4
0 < R <= 100, R <= P <= 100, RR = 1
0 < R <= 100, R <= P <= 100, RR = 0
五、為 滿 足 以 上 之 各 種 情 形,測 試 資 料 設 計 如 下:
1. 貨品價格 = 101
2. 貨品價格 = 0
3.貨品價格 = -1
4. 貨品價格 = 100, 付款金額 = 101
5. 貨品價格 = 100, 付款金額 = 99
6. 貨品價格 = 50, 付款金額 = 100
7. 貨品價格 = 51, 付款金額 = 100
8. 貨品價格 = 90, 付款金額 = 100
9. 貨品價格 = 91, 付款金額 = 100
10. 貨品價格 = 95, 付款金額 = 100
11. 貨品價格 = 96, 付款金額 = 100
12. 貨品價格 = 99, 付款金額 = 100
13. 貨品價格 = 100, 付款金額 = 100