黑盒測試用例設計方法-邊界值分析法
邊界值分析法一般是對等價類劃分法的補充
【邊界值分析法】
對被測程序的輸入域或輸出值域的邊界值進行測試的一種測試
【邊界值分析法的重要性】
經(jīng)大量的實踐表明,軟件中大量的故障往往發(fā)生在輸入定義域或者輸出值域的邊界上,而不是在其內(nèi)部。
【如何設計測試用例?】
1.首先確定邊界情況。
通常輸入活輸出等價類的邊界就是應該著重測試的邊界值
2.選取正好等于、剛剛大于、剛剛小于邊界的值作為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值。
【如何獲取測試用例數(shù)據(jù)】
邊界值分析法是基于可靠性理論中稱為“單故障”的假設,即有兩個或兩個以上故障同時出現(xiàn)而導致軟件失效的情況很少,也就是說,軟件失效基本上是由單故障引起的。
——因此,在邊界值分析法中獲取測試用例數(shù)據(jù)的方法是:
1.每次取程序輸入條件中的一個變量,讓這個變量依次(不能同時取所有變量,因為會不確定到底是哪個變量的邊界值引起的故障)取min、min+、nor(除邊界值外的任意值)、max-和max,其余的其它變量取域內(nèi)的任意值(一般取正常值范圍內(nèi)的中間值附近);
2.對程序中的每個變量重復(1)。
【舉例】
1.報表的第一行和最后一行
2.數(shù)組元素的第一個和最后一個
3.循環(huán)的第0次、第1次和倒數(shù)第2次、最后1次
4.通常情況下,軟件測試所包含的邊界檢驗有幾種類型:
數(shù)字、字符、位置、質(zhì)量、大小、速度、方位、尺寸、 空間等
相應地,以上類型的邊界值應該在:
第一個/最后一個、開始/完成、最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最長、空/滿等情況。
其他邊界值檢驗:
包括默認值/空值/空格/未輸入值/零、無效數(shù)據(jù)/不正確數(shù)據(jù)和干擾數(shù)據(jù)等。
邊界值分析使用與等價類劃分法相同的劃分,只是邊界值分析假定錯誤更多地存在于劃分的邊界上,因此在等價類的邊界上以及兩側(cè)的情況設計測試用例
【舉例】
測試計算算術平方根的函數(shù)
——輸入:實數(shù)
——輸出:實數(shù)
——規(guī)格說明:當輸入一個0或比0大的實數(shù)的時候,返回其非負平方根;當輸入一個小于0的實數(shù)時,顯示錯誤信息“平方根非法-輸入值小于0”并返回0。
等價類劃分:



設計測試用例數(shù)據(jù)原則:
1.如果輸入條件規(guī)定了值的范圍,則應取剛達到這個范圍的邊界值以及剛剛超過這個范圍邊界的值作為測試輸入數(shù)據(jù)。
2.如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)和比最大個數(shù)多1個、比最小個數(shù)少1個的數(shù)作為測試數(shù)據(jù)。
3.如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合(如有序表、順序文件等),則應選取集合中的第一個和最后一個元素作為測試用例。
4.如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構,則應當選擇這個內(nèi)部數(shù)據(jù)結(jié)構的邊界上的值作為測試數(shù)據(jù)。
5.分析程序規(guī)格說明,找出其它可能的邊界條件。
【案例】
- 三角形問題,要求輸入三個整數(shù)a、b、c,分別作為三角形的三條邊,取值范圍在1~100之間,判斷由三條邊構成的三角形類型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)以及非三角形。
分析:
首先:從輸入角度分析,該問題輸入變量有3個,其對應的等價類劃分
其次:按照邊界值取值法取值:
取值{0,1,2,50,99,100,101}
一邊取邊界值,其它2邊取中間值,重復數(shù)據(jù)的刪掉
最后:邊界值分析測試用例
一般情況下: min-,min,min+,max-,max,max+
image.png
2.某酒水銷售公司指派銷售員銷售各種酒水,其中白酒賣168元/瓶,紅酒賣120元/瓶,啤酒賣5元/瓶。對于每個銷售員,白酒每月的最高供應量為5000瓶,紅酒為3000瓶,啤酒為30000瓶,各銷售員每月至少需銷售出白酒50瓶,紅酒30瓶,啤酒300瓶。每到月末,各銷售員向酒水銷售公司上報他所在區(qū)域的銷售業(yè)績,以供酒水銷售。
公司根據(jù)其銷售額計算該銷售員的傭金,并作為獎金發(fā)放,計算方式如下:
2萬元(含以下),4%;
2萬元(不含)到4.5萬元(含),1%;
4.5萬元(不含)以上,0.5%
分析:
考慮輸入.png
考慮輸出.png
image.png
注意:本案例中若只考慮輸入條件設計測試用例,它只能驗證了程序的健壯性,其測試用例中,銷售額都是大于4.5萬,且測試用例存在冗余,并且沒有對小于4.5萬的銷售額進行測試,測試存在遺漏。因此也要考慮輸出銷售額進行等價劃分來設計測試用例。
最終篩選出最有效的測試用例:




