由于軟件開發人員思維上的主觀局限性,且目前開發的軟件系統都具有相當的復雜性,決定了在開發過程中出現軟件錯誤是不可避免的,軟件過多的或嚴重的錯誤會導致程序或系統的失效。軟件錯誤產生的主要原因有:
· 需求規格說明書(requirement specl矗c吐ion或fundional specification)包含錯的 需求、或漏掉一些需求,或沒有準確表達客戶所需要的內容。
· 需求規格說明書中有些功能不可能或無法實現。
· 系統設計(system design)中的不合理性。
· 程序設計中的錯誤。
· 程序代碼中的問題,包括錯誤的算法、復雜的邏輯等。
· 若能及早排除軟件開發中的錯誤,有效地減少后期工作可能遇到的問題,就以
盡町能地避免付Hj高昂的代價,從而大大提高系統開發過程的效率。
根據GJ Myers觀點,對軟件測試的目的可以簡單地概括為:
· 軟件測試是為了發現錯誤而執行程序的過程。
· 一個好的測試能夠在第一時間發現程序中存在的錯誤。
· 一個好的測試是發現了至今尚未發現的錯誤的測試。
他指出“軟件測試足為了發現錯誤而執行程序的過程”,而更多專家認為軟件測試的范圍應當更為廣泛,除了要考慮測試結果的正確性以外,還應關心程序的效率、可適用性、維護性、可擴充性、安全性、可靠性、系統性能、系統容量、可伸縮性、服務可管理性、兼容性等等因素。隨著人們對軟件測試更廣泛,深刻的認識,可以說對軟件質量的判斷決不只限于程序本身,而是整個軟件研制過程。 不管怎么定義軟件測試,基本的結論足一致的,即軟件測試是為了發現軟件產品所存在的任何意義上的軟件缺陷(bug),從而糾正(fix)這些軟件缺陷,使軟件系統更好地滿足用戶的需求。那么,什么是軟件缺陷呢?
軟件缺陷的定義和種類
對于軟件存在的各種問題,我們都用“軟件缺陷”這個詞,在英文中人們喜歡用個不貼切但已經專用的詞“bug(臭蟲)”,實際和“缺陷(bug)”詞相近的詞還有很多·如
缺點(defeet) 偏差(variance)
謬誤(fault) 失敗(failure)
問題(problem) 矛盾(inconsistency)
錯誤(error) 毛病(incident)
但大家都習慣使用“bug—一軟件缺陷”這個詞,它包含了一些偏差、謬誤或錯誤,更多地表現在功能上的失敗(failure)和實際需求的不一致,即矛盾(inconsistency)。
軟件缺陷(bug),即計算機系統或者程序中存在的任何一種破壞正常運行能力的問題、錯誤,或者隱藏的功能缺陷、瑕疵。缺陷會導致軟件產品在某種程度上不能滿足用戶的需要。在IEEEl983 ofIEEE Standard 729中對軟件缺陷下了一個標準的定義。
. 從產品內部看,軟件缺陷是軟件產品開發或維護過程中所存在的錯誤、毛病等各種問題。
. 從外部看,軟件缺陷是系統所需要實現的某種功能的失效或違背。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/