黑盒測試著重測試軟件功能。黑盒測試并不能取代白盒測試,它是與白盒測試互補的測試方法,它很可能發現白盒測試不易發現的其他類型的錯誤。白盒測試在測試過程的早期階段進行,而黑盒測試主要用于測試過程的后期。
黑盒測試力圖發現下述類型的錯誤:?
(1) 功能不正確或遺漏了功能;
(2) 界面錯誤;
(3) 數據結構錯誤或外部數據庫訪問錯誤;(4) 性能錯誤;
(5) 初始化和終止錯誤。
(一)等價劃分
等價劃分把程序的輸入域劃分成若干個數據類,據此導出測試用例。等價劃分法力圖設計出能發現若干類程序錯誤的測試用例,從而減少必須設計的測試用例的數目。如果把所有可能的輸入數據(有效的和無效的)劃分成若干個等價類,則可以合理地做出下述假定:每類中的一個典型值在測試中的作用與這一類中所有其他值的作用相同。因此,可以從每個等價類中只取一組數據作為測試數據。這樣選取的測試數據最有代表性,最可能發現程序中的錯誤。
使用等價劃分法設計測試方案首先需要劃分輸入數據的等價類,為此需要研究程序的功能說明,從而確定輸入數據的有效等價類和無效等價類。
(二)邊界值分析
經驗表明,處理邊界情況時程序最容易發生錯誤。例如,許多程序錯誤出現在下標、純量、數據結構和循環等等的邊界附近。因此,設計使程序運行在邊界情況附近的測試方案,暴露出程序錯誤的可能性更大一些。
使用邊界值分析方法設計測試方案首先應該確定邊界情況,通常輸入等價類和輸出等價類的邊界。選取的測試數據應該剛好等于、剛剛小于和剛剛大于邊界值。
通常設計測試方案時總是聯合使用等價劃分和邊界值分析兩種技術。
(三)錯誤推測
錯誤推測法在很大程度上靠直覺和經驗進行。它的基本想法是列舉出程序中可能有的錯誤和容易發生錯誤的特殊情況,并且根據它們選擇測試方案。應該仔細分析程序規格說明書,注意找出其中遺漏或省略的部分,以便設計相應的測試方案,檢測程序員對這些部分的處理是否正確。
經驗表明,在一段程序中已經發現的錯誤數目往往和尚未發現的錯誤數成正比。例如,在IBM OS/370操作系統中,用戶發現的全部錯誤的47%只與該系統4%的模塊有關。因此,在進一步測試時要著重測試那些已發現了較多錯誤的程序段。
等價劃分法和邊界值分析法都只孤立地考慮各個輸入數據的測試功效,而沒有考慮多個輸入數據的組合效應,可能會遺漏了輸入數據易于出錯的組合情況。
選擇輸入組合的一個有效途徑是利用判定表或判定樹為工具,列出輸入數據各種組合與程序應作的動作(及相應的輸出結果)之間的對應關系,然后為判定表的每一列至少設計一個測試用例。
選擇輸入組合的另一個有效途徑是把計算機測試和人工檢查代碼結合起來。