軟件測試心理學
明確軟件測試的定義具有重要的心理學影響。軟件測試是“爲發現錯誤而執行程序的過程”。明確測試的目的使得設計的測試數據可以更多的發現程序的問題,而不是減少程序的實效。
區分“成功的”和“不成功的”的測試。“成功的”測試的指發現了可修復的錯誤或者最終確定再無其他可查出的錯誤。“不成功的”測試,僅指未能適當地對程序進行檢查,在大多數情況下,未能找出錯誤的測試被認爲是“不成功的”,這是因爲認爲軟件中不包含錯誤的觀點基本上是不切實際的。
總之,軟件測試是試圖發現程序中錯誤(假設其存在)的破壞性的過程。一個成功的測試用例,通過誘發程序發生錯誤,促進軟件質量的改進。
軟件測試的經濟學
通過軟件測試發現“所有”的錯誤是不切實際的。測試的目標在於通過有限的測試用例,最大限度地提高發現的問題的數量,以取得最好的測試效果。
黑盒測試和白盒測試
“黑盒測試”將程序視爲一個黑盒子。在不考慮程序的內部結構下,檢查程序不按其規範正確運行的環境條件。
“黑盒測試”的方法有:等價類劃分、邊界值分析、錯誤推測法、因果圖法、判定表驅動法、正交試驗設計法、功能圖法。黑盒測試針對的錯誤類型有:功能不正確或遺漏,數據庫訪問錯誤,界面錯誤,性能錯誤,初始化和終止錯誤等。
“白盒測試”允許檢查程序的內部結構,設計測試用例檢查程序的邏輯結構。主要分爲“靜態白盒測試”和“動態白盒測試”。
“靜態白盒測試”即代碼審查,正式審查和檢驗設計。
“動態白盒測試”利用查看代碼功能和實現方式得到的信息來設計和執行測試。測試方法有:邏輯覆蓋,基本路徑測試。測試的錯誤類型有:內部數據結構的有效性,循環的邊界,程序的邏輯判定等。
窮舉路徑測試
窮舉路徑測試是指使用測試用例執行了程序中所有可能的控制流路徑。該方法存在兩個問題:
首先,程序中不同邏輯路徑的數最 可能達到天文數字。
其次,即使測試了程序中的所有路徑,程序可能仍然存在着錯誤,原因是:
1.不能保證程序符合其設計規範;
2.缺少某些路徑;
3.不會暴露數據敏感錯誤。
軟件測試的原則
重要的測試指導原則編號原則歸納如下:
1 測試用例中一個必需部分是對預期輸出或結果進行定義。
2 程序員應避免測試自己編寫的程序。
3 編寫軟件的組織不應當測試自已編寫的軟件。
4 應當徹底檢查每個測試的執行結果。
5 測試用例的編寫不僅應當根據有效和預料到的輸入情況,也應當根據無效和未預料到的輸入情況。
6 檢查程序是否“未做其應該做的”僅是測試的一半,測試的另一半是檢查程是否“做了其不應該做的”。
7 應避免測試用例用後即棄,除非軟件本身就是個一次性的軟件。
8 計劃測試工作時不應默許假定不會發現錯誤。
9 程序某部分存在更多錯誤的可能性,與該部分已發現錯誤的數量成正比。
10 軟件測試是一項極富創造性,極具智力的挑戰性的工作。