軟件測試在軟件生命周期中占據重要的地位,在傳統(tǒng)的瀑布模型中,軟件測試僅處于編碼之后、運行維護階段之前,是軟件產品交付用戶使用之前軟件質量保證的后手段。這是一種誤導,軟件生命周期每一階段中都應包含測試,從靜態(tài)測試到動態(tài)測試,要求檢驗每一個階段的成果是否符合質量要求和達到定義的目標,盡可能早的發(fā)現錯誤并加以修正。如果不在早期階段進行測試,錯誤的不斷擴散、積累常常會導致后成品測試的巨大困難、開發(fā)周期的延長、開發(fā)成本的劇增等等。

  事實上,對于軟件來講,不論采用什么技術和什么方法,軟件中仍然會有錯。采用新的語言、先進的開發(fā)方式、完善的開發(fā)過程,可以減少錯誤的引入,但是不可能完全杜絕軟件中的錯誤,這些引入的錯誤需要通過測試來發(fā)現,軟件中的錯誤密度也需要測試來進行估計。測試是所有工程學科的基本組成單元,是軟件開發(fā)的重要部分,一直伴隨著軟件開發(fā)走過了半個多世紀。統(tǒng)計表明,在典型的軟件開發(fā)項目中,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上。而在軟件開發(fā)的總成本中,用在測試上的開銷要占30%到50%。

  一般規(guī)范的軟件測試流程包括項目計劃檢查、測試計劃創(chuàng)建、測試設計、執(zhí)行測試、更新測試文檔,而SQA的活動可總結為:協調度量、風險管理、文檔檢查、促進/協助流程改進、監(jiān)察測試工作。它們的相同點在于二者都是貫穿整個軟件開發(fā)生命周期的流程。

  軟件質量保證(SQA)的職能是向管理層提供正確的可視化的信息,從而促進與協助流程改進。SQA還充當測試工作的指導者和監(jiān)督者,幫助軟件測試建立質量標準、測試過程評審方法和測試流程,同時通過跟蹤、審計和評審,及時發(fā)現軟件測試過程中的問題,從而幫助改進測試或整個開發(fā)的流程等,因此有了SQA,測試工作可以被客觀的檢查與評價,同時也可以協助測試流程的改進。

  而測試為SQA提供數據和依據,幫助SQA更好地了解質量計劃的執(zhí)行情況、過程質量、產品質量和過程改進進展,從而使SQA更好地做好下一步工作。

  它們的不同之處在于SQA側重對流程中過程的管理與控制,是一項管理工作,側重于流程和方法。而測試是對流程中各過程管理與控制策略的具體執(zhí)行實施,其對象是軟件產品(包括階段性的產品),即測試是對軟件產品的檢驗,是一項技術性的工作。測試,常常被認為是質量控制的主要手段。但是,隨著時間的推移,軟件質量保證和軟件質量控制之間的界限越來越模糊了,兩者合二為一。也是說,軟件測試是SQA中的重要手段,SQA的主要功能在軟件測試中得到體現,集中在靜態(tài)測試中,兩者的關系越來越緊密,已無法分開。