面向對象軟件的測試 軟件測試
一 引言(Introduction)
用戶使用低質量的軟件,在運行過程中會產生各種各樣的問題,可能帶來不同程度的嚴重后果,輕者影響系統的正常工作,重者造成事故,損失生命財產。軟件測試是保證軟件質量的最重要的手段。什么是軟件測試?1983年IEEE定義為:使用人工或自動手段來運行或測定某個系統的過程,其目的在于檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。
現代的軟件開發工程是將整個軟件開發過程明確的劃分為幾個階段,將復雜問題具體按階段加以解決。這樣,在軟件的整個開發過程中,可以對每一階段提出若干明確的監控點,作為各階段目標實現的檢驗標準,從而提高開發過程的可見度和保證開發過程的正確性。經驗證明,軟件的質量不僅是體現在程序的正確性上,它和編碼以前所做的需求分析,軟件設計密切相關。軟件使用中出現的錯誤,不一定是編程人員在編碼階段引入的,很可能在程序設計,甚而需求分析時就埋下了禍因。這時,對錯誤的糾正往往不能通過可能會誘發更多錯誤的簡單的修修補補,而必須追溯到軟件開發的最初階段。這無疑增大了軟件的開發費用。因此,為了保證軟件的質量,我們應該著眼于整個軟件生存期,特別是著眼于編碼以前的各開發階段的工作。這樣,軟件測試的概念和實施范圍必須擴充,應該包括在整個開發各階段的復查、評估和檢測。由此,廣義的軟件測試實際是由確認、驗證、測試三個方面組成(注:本文對后面用廣義測試概念處不另加標識):
確認:是評估將要開發的軟件產品是否是正確無誤、可行和有價值的。比如,將要開發的軟件是否會滿足用戶提出的要求,是否能在將來的實際使用環境中正確穩定的運行,是否存在隱患等。這里包含了對用戶需求滿足程度的評價。確認意味著確保一個待開發軟件是正確無誤的,是對軟件開發構想的檢測。
驗證:是檢測軟件開發的每個階段、每個步驟的結果是否正確無誤,是否與軟件開發各階段的要求或期望的結果相一致。驗證意味著確保軟件是會正確無誤的實現軟件的需求,開發過程是沿著正確的方向在進行。
測試:與狹隘的測試概念統一。通常是經過單元測試、集成測試、系統測試三個環節。
在整個軟件生存期,確認、驗證、測試分別有其側重的階段。確認主要體現在計劃階段、需求分析階段、也會出現在測試階段;驗證主要體現在設計階段和編碼階段;測試主要體現在編碼階段和測試階段。事實上,確認、驗證、測試是相輔相成的。確認無疑會產生驗證和測試的標準,而驗證和測試通常又會幫助完成一些確認,特別是在系統測試階段。
面向對象技術是一種全新的軟件開發技術,正逐漸代替被廣泛使用的面向過程開發方法,被看成是解決軟件危機的新興技術。面向對象技術產生更好的系統結構,更規范的編程風格,極大的優化了數據使用的安全性,提高了程序代碼的重用,一些人就此認為面向對象技術開發出的程序無需進行測試。應該看到,盡管面向對象技術的基本思想保證了軟件應該有更高的質量,但實際情況卻并非如此,因為無論采用什么樣的編程技術,編程人員的錯誤都是不可避免的,而且由于面向對象技術開發的軟件代碼重用率高,更需要嚴格測試,避免錯誤的繁衍。因此,軟件測試并沒有面向對象編程的興起而喪失掉它的重要性。
從1982年在美國北卡羅來納大學召開首次軟件測試的正式技術會議至今,軟件測試理論迅速發展,并相應出現了各種軟件測試方法,使軟件測試技術得到極大的提高。然而,一度實踐證明行之有效的軟件測試對面向對象技術開發的軟件多少顯得有些力不從心。尤其是面向對象技術所獨有的多態,繼承,封裝等新特點,產生了傳統語言設計所不存在的錯誤可能性,或者使得傳統軟件測試中的重點不再顯得突出,或者使原來測試經驗認為和實踐證明的次要方面成為了主要問題。
例如:在傳統的面向過程程序中,對于函數
y=Function(x);
你只需要考慮一個函數(Function())的行為特點,而在面向對象程序中,你不得不同時考慮基類函數(Base::Function())的行為和繼承類函數(Derived::Function())的行為。
文章來源于領測軟件測試網 http://www.k11sc111.com/