在傳統(tǒng)的瀑布模型中,軟件項目主要有一下幾個階段組成:用戶需求、需求分析、概要設計、詳細設計、編碼和實現(xiàn)、測試以及運行維護。由于軟件測試僅處于運行維護階段之前,是軟件產品交付用戶使用之前保證軟件質量的重要手段。因此人們一般認為,軟件測試只是軟件編碼后的一個階段。
但隨著軟件測試業(yè)的發(fā)展,人們越來越認識到:軟件測試不應只是軟件項目的收尾工作,而應該在軟件生命周期的每一階段中都包含測試。軟件測試是貫穿于整個軟件開發(fā)生命周期的過程活動,包括軟件測試計劃、軟件測試需求分析、軟件測試用例設計、軟件測試執(zhí)行、軟件缺陷管理、軟件測試風險管理以及其他的一些軟件測試相關的活動等等組成。在軟件項目的每個階段,都需要進行不同目的和不同內容的測試活動,以保證各個階段工作產品輸出的正確性。軟件測試的對象也不僅僅是軟件代碼,還包括軟件需求文檔和設計文檔等其他所有的軟件工作產品。軟件開發(fā)與軟件測試之間應該是交互進行的,比如單元編碼之后需要進行單元測試,模塊組合之后進行集成測試。
如果等到軟件編碼結束之后才進行測試,測試的時間很有限,很難達到測試的覆蓋率要求和測試的質量要求。同時,假如在項目開發(fā)的后期,發(fā)現(xiàn)一些軟件需求階段和概要設計階段的錯誤和問題,修改這些缺陷導致的成本將是非常高的。有資料表明:平均而言,如果在需求階段修正一個錯誤的代價是1,那么,在設計階段就是它的3-6倍,在編程階段是它的10倍,在內部測試階段是它的20-40倍,在外部測試階段是它的30-70倍,而到了產品發(fā)布出去,這個數(shù)字就是40-1000倍。修正錯誤的代價不是隨著時間線性增長的,而幾乎是呈指數(shù)增長的。因此,應盡早地不斷地進行軟件測試,發(fā)現(xiàn)錯誤并加以修正,而非軟件開發(fā)結束后才進行測試。
推薦閱讀: