軟體測試在軟體生命週期中佔據重要的地位,在傳統的瀑布模型中,軟體測試僅處於編碼之後、運行維護階段之前,是軟體產品交付使用者使用之前軟體品質保證的最後手段。這是一種誤導,我們已經在“ 第1回 V模型,我的完整詮釋”作了很好說明,軟體生命週期每一階段中都應包含測試,從靜態測試到動態測試,要求檢驗每一個階段的成果是否符合品質要求和達到定義的目標,儘可能早的發現錯誤並加以修正。如果不在早期階段進行測試,錯誤的不斷擴散、積累常常會導致最後成品測試的巨大困難、開發週期的延長、開發成本的劇增等等。
事實上,對於軟體來講,不論採用什麼技術和什麼方法,軟體中仍然會有錯。採用新的語言、先進的開發方式、完善的開發過程,可以減少錯誤的引入,但是不可能完全杜絕軟體中的錯誤,這些引入的錯誤需要通過測試來發現,軟體中的錯誤密度也需要測試來進行估計。測試是所有工程學科的基本組成單元,是軟體開發的重要部分,一直伴隨著軟體開發走過了半個多世紀。統計表明,在典型的軟體開發項目中,軟體測試工作量往往占軟體開發總工作量的40%以上。而在軟體開發的總成本中,用在測試上的開銷要佔30%到50%。
一般規範的軟體測試流程包括專案計劃檢查、測試計劃建立、測試設計、執行測試、更新測試文檔,而SQA的活動可總結為:協調度量、風險管理、文檔檢查、促進/協助流程改進、監察測試工作。它們的相同點在於二者都是貫穿整個軟體開發生命週期的流程。
軟體品質保證(SQA)的職能是向管理層提供正確的可視化的資訊,從而促進與協助流程改進。SQA還充當測試工作的指導者和監督者,協助軟體測試建立品質標準、測試過程評審方法和測試流程,同時通過跟蹤、審計和評審,及時發現軟體測試過程中的問題,從而協助改進測試或整個開發的流程等,因此有了SQA,測試工作就可以被客觀的檢查與評價,同時也可以協助測試流程的改進。
而測試為SQA提供資料和依據,協助SQA更好地瞭解品質計劃的執行情況、過程品質、產品品質和流程改善進展,從而使SQA更好地做好下一步工作。
它們的不同之處在於SQA側重對流程中過程的管理與控制,是一項管理工作,側重於流程和方法。而測試是對流程中各過程管理與控制策略的具體執行實施,其對象是軟體產品(包括階段性的產品),即測試是對軟體產品的檢驗,是一項技術性的工作。測試,常常被認為是品質控制的最主要手段。但是,隨著時間的推移,軟體品質保證和軟體品質控制之間的界限越來越模糊了,兩者合二為一。也就是說,軟體測試是SQA中的重要手段,SQA的主要功能在軟體測試中得到體現,集中在靜態測試中,兩者的關係越來越緊密,已無法分開。
預知後事如何,請讀下回分解:第4回 軟體測試的目標
著作權,軟體測試演義
——系列討論的目錄,見: 軟體測試演義——中進階系列(序)