二、軟件測試的目的
??軟件測試的目的決定了如何去組織測試。如果測試的目的是為了盡可能多地找出錯誤,那么測試就應該直接針對軟件比較復雜的部分或是以前出錯比較多的位置。如果測試目的是為了給最終用戶提供具有一定可信度的質量評價,那么測試就應該直接針對在實際應用中會經常用到的商業假設。
??不同的機構會有不同的測試目的;相同的機構也可能有不同測試目的,可能是測試不同區域或是對同一區域的不同層次的測試。
??在談到軟件測試時,許多人都引用grenford j. myers在《the art of software testing》一書中的觀點:
??①、軟件測試是為了發現錯誤而執行程序的過程;
??②、測試是為了證明程序有錯,而不是證明程序無錯誤。
??③、一個好的測試用例是在于它能發現至今未發現的錯誤;
??④、一個成功的測試是發現了至今未發現的錯誤的測試。
??這種觀點可以提醒人們測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點可能會產生誤導,認為發現錯誤是軟件測試的唯一目,查找不出錯誤的測試就是沒有價值的,事實并非如此。
??首先,測試并不僅僅是為了要找出錯誤。通過分析錯誤產生的原因和錯誤的分布特征,可以幫助項目管理者發現當前所采用的軟件過程的缺陷,以便改進。同時,這種分析也能幫助我們設計出有針對性地檢測方法,改善測試的有效性。
??其次,沒有發現錯誤的測試也是有價值的,完整的測試是評定測試質量的一種方法。詳細而嚴謹的可靠性增長模型可以證明這一點。例如 bev littlewood發現一個經過測試而正常運行了n小時的系統有繼續正常運行n小時的概率。
??三、軟件測試的基本方法
軟件測試的方法和技術是多種多樣的。
對于軟件測試技術,可以從不同的角度加以分類:
從測試是否針對系統的內部結構和具體實現算法的角度來看,可分為白盒測試和黑盒測試;
??
1、黑盒測試
??黑盒測試也稱功能測試或數據驅動測試,它是在已知產品所應具有的功能,通過測試來檢測每個功能是否都能正常使用,在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數鋸而產生正確的輸出信息,并且保持外部信息(如數據庫或文件)的完整性。黑盒測試方法主要有等價類劃分、邊值分析、因?果圖、錯誤推測等,主要用于軟件確認測試。
原文轉自:http://www.anti-gravitydesign.com