一、軟件測試的目的
軟件開發過程中軟件測試具有非常重要的作用。軟件測試的目的在于按照規定的步驟,采用正確的方法,對開發設計階段提供的軟件工件進行嚴格的檢測,發現和改正軟件錯誤,使軟件質量在測試過程中不斷提高,逐漸達到規定要求,能夠交付用戶使用。如果測試中察覺軟件設計質量太差,暴露出的各種問題,不是依靠測試能夠完全解決,項目主管可以中斷測試,責成設計組加以改進。當問題十分嚴重,已經無法滿足用戶既定的需求時,項目甚至可能被迫取消。
軟件測試過程中,項目主管和質量保證部門可以采集到各種軟件質量原始信息,其中最重要的是軟件錯誤數據,包括軟件錯誤的類型、錯誤的數量、錯誤產生的階段、錯誤存在的部位。有了這些數據,就近期而言,可以對軟件已經達到的質量水平做出定量評估、可以對軟件可靠性增長過程及軟件開發中的資源消耗做出預測。長期而言,從各個時期各種軟件項目積累的質量數據,能夠準確反映開發單位具有的開發和質量保證能力,能夠反映開發單位能力提高過程。在重視質量相關的數據采集和擁有的歷史數據方面,我國的軟件開發單位和發達國家相比,存在明顯的差距。
國內外軟件開發經驗表明,軟件測試需要消耗大量資源,軟件測試所需的工時通常占據其總開發工時的40%到50% ,所以高質量履行和完成軟件測試階段的各種任務,十分重要。其中包括制定正確的測試策略,采用科學的測試方法和測試技術等,制訂正確的測試策略自然應該成為關注的首選。
二、漸進測試策略
漸進測試策略是指將軟件的測試進程,進一步細分為相互聯系而又各不相同的子階段,對交付測試的原始軟件產品,從簡單到復雜,從單元到系統逐步進行測試的、完整的測試體系框架。整個測試過程通常包括單元測試、綜合測試、系統測試、認證和交收測試幾個階段。
采用漸進式測試策略,能夠有效地降低錯誤定位的難度,有利于發現和改正錯誤。漸進測試必須從單元測試開始,單元測試的主要目的是檢查和改正單元內部的錯誤,只有在單元測試完成之后才能進入與其他單元結合的綜合測試。綜合測試主要目的是檢查單元之間的接口,以及檢查程序的總體結構。系統測試的主要目的是檢測軟件是否滿足需求說明的要求,這個階段發現的錯誤往往屬于高層錯誤,例如由于對用戶要求的誤解和用戶要求的不一致造成的錯誤。改正這種類型的錯誤,需要付出昂貴的代價,是最不希望出現的事件。可見測試固然對保證軟件質量十分重要,但是畢竟屬于事后把關性質,預防為主仍然是最佳的選擇。應該更加關注軟件設計,特別是需求分析工作的質量。
根據軟件的不同性質和某些軟件的特殊要求,在上述4個階段之外,還需要增加一些其他的測試階段。表1是一個典型的辦公自動化軟件測試過程,它包括了單元測試、綜合測試、軟件系統測試、強度測試、認證和交收測試5個階段。表2是一個典型的嵌入式系統的軟件測試過程,它包括了軟件單元測試、軟件綜合測試、軟件系統測試、硬件和軟件系統綜合測試、認證和交收測試5個階段。

如果換一個角度來觀察漸進測試策略,可以認為漸進測試策略是針對軟件設計過程所作的由下而上的逆向驗證,從而使漸進測試的內在合理性得到進一步展示。圖1顯示了嵌入式軟件測試過程和前期各個設計階段的對應關系。
