給軟件帶來錯誤的原因很多,具體地說,主要有如下幾點:
1. 交流不夠、交流上有誤解或者根本不進行交流
在應用應該做什么或不應該做什么的細節(應用的需求)不清晰的情況下進行開發。
2. 軟件復雜性
圖形用戶界面(GUI),客戶/服務器結構,分布式應用,數據通信,超大型關系型數據庫以及龐大的系統規模,使得軟件及系統的復雜性呈指數增長,沒有現代軟件開發經驗的人很難理解它。
3. 程序設計錯誤
象所有的人一樣,程序員也會出錯。
4. 需求變化
需求變化的影響是多方面的,客戶可能不了解需求變化帶來的影響,也可能知道但又不得不那么做。需求變化的后果可能是造成系統的重新設計,設計人員的日程的重新安排,已經完成的工作可能要重做或者完全拋棄,對其他項目產生影響,硬件需求可能要因此改變,等等。如果有許多小的改變或者一次大的變化,項目各部分之間已知或未知的依賴性可能會相互影響而導致更多問題的出現,需求改變帶來的復雜性可能導致錯誤,還可能影響工程參與者的積極性。
5. 時間壓力
軟件項目的日程表很難做到準確,很多時候需要預計和猜測。當最終期限迫近和關鍵時刻到來之際,錯誤也就跟著來了。
在談到軟件測試時,許多人都引用Grenford J. Myers在《The Art of Software Testing》一書中的觀點:
1. 軟件測試是為了發現錯誤而執行程序的過程;
2. 測試是為了證明程序有錯,而不是證明程序無錯誤;
3. 一個好的測試用例是在于它能發現至今未發現的錯誤;
4. 一個成功的測試是發現了至今未發現的錯誤的測試。
測試的定義
軟件測試就是在軟件投入運行前,對軟件需求分析、設計規格說明和編碼的最終復查,是軟件質量保證的關鍵步驟。
定義1:軟件測試是為了發現錯誤而執行程序的過程。
定義2:軟件測試是根據軟件開發各階段的規格說明和程序的內部結構而精心設計一批測試用例(即輸入數據及其預期的輸出結果),并利用這些測試用例去運行程序,以發現程序錯誤的過程。
軟件測試在軟件生存周期中橫跨兩個階段:
1單元測試階段:編寫出每個模塊之后,就對它做必要的測試。
2綜合測試階段:結束單元測試后進行的測試,如系統測試、驗收測試
文章來源于領測軟件測試網 http://www.kjueaiud.com/