需明確:對一個復雜的應用程序進行完全的測試,將耗費大量的時間和人力資源,以致于在經濟上是不可行的。即,從經濟學的角度來說,軟件測試是不能夠發現“所有”的錯誤。換言之,要發現程序中的所有錯誤是不切實際的,也常常是不可能的。這也體現了測試人員對被測試軟件的期望和對測試用例的設計方式。由此,有了兩種策略,即:黑盒測試和白盒測試(均從三個方面進行闡述:原理、方法、利弊)。
黑盒測試(又稱為數據驅動的測試或輸入/輸出驅動的測試)
- 原理:將程序視為一個黑盒子,測試目標與程序的內部機制和結構完全無關,而是將重點集中放在發現程序不按其規范正確運行的環境條件。
- 方法:測試數據完全來源于軟件規范(不需要去了解程序的內部結構)。如果想用這種方法來發現程序的所有錯誤,判定的標準就是“窮舉輸入測試”,將所有可能的輸入條件都作為測試用例。
- 利弊:窮舉輸入測試是無法實現的。原因有二:一是無法測試一個程序以確保它是無錯的;二是軟件測試中需要考慮的一個基本問題是軟件測試的經濟學,即,測試投入的目標在于通過有限的測試用例,最大限度地提高發現的問題的數量以取得最好的測試效果。
白盒測試(又稱為邏輯驅動的測試)
- 原理:允許我們檢查程序的內部結構的。這種測試策略對程序的邏輯結構進行檢查,從中獲取測試數據(但常忽略了程序的規范)。
- 方法:窮舉路徑測試。即,如果使用測試用例執行了程序中所有可能的控制流路徑,那么程序有可能得到了完全的測試。
- 利弊:程序中不同邏輯路徑的數量可能會達到天文數字,那么窮舉路徑測試就同窮舉輸入測試一樣,非但不可能也是不切合實際的。
文尾,值得提一下一個錯誤認知:“窮舉路徑測試即完全的測試”。因為,即使可以測試到程序中的所有路徑,但是程序可能仍然存在著錯誤。其原因有三:
- 即使是窮舉路徑測試也決不能保證程序符合其設計規范;
- 程序可能會因為缺少某些路徑而存在問題,可窮舉路徑測試不能發現到底是缺少了那些必需路徑;
- 窮舉路徑測試可能不會暴露數據敏感錯誤。
延伸閱讀
文章來源于領測軟件測試網 http://www.k11sc111.com/