軟件測試技術之: 白盒測試和黑盒測試(4)
發表于:2016-06-02來源:C博客作者:好兒郎-志在四方點擊數:
標簽:
從這個簡單的例子可以看出,要想充分測試一個程序是很困難的。同時,測試條件越強,測試的代價越高。測試時應分主次,在測試代價和測試充分性之間
從這個簡單的例子可以看出,要想充分測試一個程序是很困難的。同時,測試條件越強,測試的代價越高。測試時應分主次,在測試代價和測試充分性之間做出平衡。
2.2 黑盒測試
2.2.1 等價劃分
一個好的測試用例描述為具有相當高的可能性發現某個錯誤來,此外對程序的窮舉輸入測試是無法實現的。因此,當測試某個程序時,我們就被限制在從所有可能的輸入中努力找出某個小的子集。理所當然,我們要找的子集必須是正確的,并且是可能發現最多錯誤的子集。確定這個子集的一種方法,就是要意識到一個精心挑選的測試用例還應具備另外兩個特性:
1. 嚴格控制測試用例的增加,減少為達到“合理測試”的某些既定目標而必須設計的其他測試用例的數量。
2. 它覆蓋了大部分其他可能的測試用例。也就是說,它會告訴我們,使用或不使用這個特定的輸入集合,哪些錯誤會被發現,哪些會被遺漏掉。
雖然這兩個特性看起來很相似,但描述的卻是截然不同的兩種思想。第一個特性意味著,每個測試用例都必須體現盡可能多的不同的輸入情況,以使最大限度地減少測試所需的全部用例的數量。而第二個特性意味著應該盡量將程序輸入范圍進行劃分,將其劃分為有限數量的等價類,這樣就可以合理地假設(但是,顯然不能絕對肯定)測試每個等價類的代表性數據等同于測試該類的其他任何數據。也就是說,如果等價類的某個測試用例發現了某個錯誤,該等價類的其他用例也應該能發現同樣的錯誤。相反,如果測試用例沒能發現錯誤,那么我們可以預計,該等價類中的其他測試用例不會出現在其他等價類中,因為等價類是相互交迭的。
這兩種思想形成了稱為等價劃分的黑盒測試方法。第二種思想可以用來設計一個“令人感興趣的”輸入條件集合以供測試,而第一個思想可以隨后用來設計涵蓋這些狀態的一個最小測試用例集。
使用等價劃分方法設計測試用例主要有兩個步驟:(1)確定等價類; (2)生成測試用例。
表2?1等價類列舉表
輸入條件
有效等價類
無效等價類
1.確定等價類
確定等價類是選取每一個輸入條件(通常是規格說明中的一個句子或短語)并將其劃分為兩個或更多的組??梢允褂帽??1中的表格來進行劃分。注意,我們確定了兩類等價類:有效等價類代表對程序的有效輸入,而無效等價類代表的則是其他任何可能的輸入條件(即不正確的輸入值)。這樣,我們遵循了測試原則,即要注意無效和未預料到的輸入情況。
在給定了輸入或外部條件之后,確定等價類大體上是一個啟發式的過程。下面給出了一些指導原則:
1. 如果輸入條件規定了一個取值范圍(例如,“數量可以是從1到999”),那么就應確定出一個有效等價類 (1<數量<999 ) ,以及兩個無效等價類 (數量<1,數量>999) 。
輸入條件
有效等價類
無效等價類
取值范圍
1<數量<999
數量<1,數量>999
2. 如果輸入條件規定了取值的個數(例如,“汽車可登記一至六名車主”),那么就應確定出一個有效等價類和兩個無效等價類(沒有車主,或車主多于六個)。
輸入條件
有效等價類
無效等價類
取值個數
1至六名車主
沒有車主,車主多于六個
3. 如果輸入條件規定了一個輸入值的集合,而且有理由認為程序會對每個值進行不同處理(例如,“交通工具的類型必須是公共汽車、卡車、出租車、火車或摩托車” ) ,那么就應為每個輸入值確定一個有效等價類和一個無效等價類(例如,“拖車” ) 。
輸入條件
有效等價類
無效等價類
輸入值集合
公共汽車,卡車,出租車,火車,摩托車
拖車
4. 如果存在輸入條件規定了“必須是”的情況,例如“標識符的第一個字符必須是字母”,那么就應確定一個有效等價類(首字符是字母)和一個無效等價類(首字符不是字母) 。
原文轉自:http://blog.csdn.net/rl529014/article/details/51556707#t1