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

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

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

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

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

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