邊界值分析法就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價類划分法的補充,這種情況下,其測試用例來自等價類的邊界。根據大量的測試統計數據,很多錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入/輸出范圍的中間區域。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。
邊界值分析方法
邊界值分析不是從某等價類中隨便挑一個典型值或者任意值作為測試數據,而是着重測試已划分出的等價類的每個邊界,選取正好等於、剛剛大於或剛剛小於邊界的值作為測試數據。也就是邊界值方法中常說的邊界5點,即上點、內點和離點。
(1)上點:是指邊界上的點,如果域的邊界是閉區間的,上點就是在域范圍內,如果是開區間的話,上點就是在域范圍外。
(2)離點:是指離上點最近的點,如果域的邊界是是開區間,那么離點就在范圍域內,如果是閉區間,那么離點就在域范圍外。
(3)內點:域內的任意一個點都是內點。
舉例說明邊界值中上點、離點、內點的取值。如下:
(1)區間為正整數值域[66,88],上點就是66,88,並且都是在域范圍內。內點就是域內得任意點,離點是65,89。
(2)區間為正整數值域(66,88],這種情況上點是66,88,其中一個是域內,一個是域外,內點就是域內的任意點,離點是:67,89。
(3)區間為正整數值域(66,88),這樣的情況上點還是66,88,只是都是在域外,內點還是域內的任意點,離點此時為:67,87。
再做進一步說明,如下:
(1)上點、離點的確定和這個域的邊界是開區間還是閉區間有關,不論邊界是開區間還是閉區間,上點和離點總有一個在域范圍內,一個在域范圍外。如邊界是開區間,上點在域范圍內,離點在域范圍外,如果是閉區間,則相反。
(2)上點、離點的選擇還和區間的數據類型有關。如果是整數,可以通過在上點的基礎上加1或者減1確定離點。如果是實數,可以人為設置一個精度,在這個精度下選擇一個最靠近的點。
(3)總結。不論是開區間還是閉區間,上點就是邊界值。離點是在閉區間下,上點取值減去1或者人為設置的精度。如果是開區間,上點取值是加1或者人為設置的精度。內點就是域范圍內的任意一個點。
邊界值使用場景
下面根據不同場景的輸入或輸出條件下,基於邊界值分析方法選擇測試用例的原則如下:
(1)如果輸入條件規定了值的范圍,則應取剛達到這個范圍的邊界的值以及剛剛超越這個范圍邊界的值作為測試輸入數據。例如,如果程序的規格說明中規定:"重量在10公斤至50公斤范圍內的郵件,其郵費計算公式為……"。考慮重量是實數,設置精度為0.01,則邊界取值為10、50(上點),9.99、50.01(離點),10.01(內點)。
(2)如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數少一,比最大個數多一的數作為測試數據。例如,一個輸入文件應包括1~255個記錄,因為取值個數是整數,所以邊界值取值為1、255(上點),0、256(離點),126(內點)。
(3)將規則(1)和(2)應用於輸出域,即設計測試用例使輸出值達到邊界值及其左右的值。例如,某程序的規格說明要求計算出“每月保險金扣除額為0至1165.25元",則邊界取值為可0.00、1165.25(上點),0.01、1165.26(離點),1165.24(內點)。
(4)如果程序的規格說明給出的輸入域或輸出域是有序集合,則應選取集合的第一個元素和最后一個元素作為測試用例。
(5)如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構的邊界上的值作為測試用例。
(6)分析規格說明,找出其它可能的邊界條件。
邊界值分析使用實例
1、測試計算平方根的函數。當輸入1個大於等於0的數時,返回其正平方根;當輸入一個小於0的數時,提示錯誤信息Error。
(1)按照等價類划分,得到輸入有效等價類為:大於等於0,無效等價類為:小於0。輸出有效等價類為大於等於0,無效等價類為Error。
(2)設計測試用例。
TestCase1:輸入4,輸出2。
TestCase2:輸入-10,提示“Error”。
(3)使用邊界值分析方法補充測試用例。分析步驟(1)中的等價類,可知大於等於0的邊界值為0和最大正實數、小於0的邊界值為0或最小負實數。由此得到以下測試用例:
TestCase3:輸入最小負實數,提示“Error”。
TestCase3:輸入絕對值最小負實數,如-0.0001,提示“Error”。
TestCase4:輸入0,輸出0。
TestCase5:輸入最小實數,如0.0001,輸出0.01。
TestCase5:輸入最大正實數,如1000000,輸出,1000。
TestCase4:輸入0,輸出0。
練習題
(1)n>0,n是整數。邊界5點取值分別是?如果n是實數?
(2)n>=0,n是整數,邊界5點取值分別是?如果n是實數?