軟件測試的目的決定了如何去組織測試。如果測試的目的是為了盡可能多地找出錯誤,那么測試就應該直接針對軟件比較復雜的部分或是以前出錯比較多的位置。如果測試目的是為了給最終用戶提供具有一定可信度的質量評價,那么測試就應該直接針對在實際應用中會經常用到的商業假設。
不同的機構會有不同的測試目的;相同的機構也可能有不同測試目的,可能是測試不同區域或是對同一區域的不同層次的測試。
在談到軟件測試時,許多人都引用Grenford J. Myers在《The Art of Software Testing》一書中的觀點:
?、?、軟件測試是為了發現錯誤而執行程序的過程;
?、?、測試是為了證明程序有錯,而不是證明程序無錯誤。
?、?、一個成功的測試是發現了至今未發現的錯誤的測試。
這種觀點可以提醒人們測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點可能會產生誤導,認為發現錯誤是軟件測試的唯一目,查找不出錯誤的測試就是沒有價值的,事實并非如此。
首先,測試并不僅僅是為了要找出錯誤。通過分析錯誤產生的原因和錯誤的分布特征,可以幫助項目管理者發現當前所采用的軟件過程的缺陷,以便改進。同時,這種分析也能幫助我們設計出有針對性地檢測方法,改善測試的有效性。
其次,沒有發現錯誤的測試也是有價值的,完整的測試是評定測試質量的一種方法。詳細而嚴謹的可靠性增長模型可以證明這一點。例如 Bev Littlewood發現一個經過測試而正常運行了n小時的系統有繼續正常運行n小時的概率。
原文轉自:http://www.uml.org.cn/Test/test32.htm