軟件測試是伴隨着軟件開發的發展而發展的。從軟件測試出現到現在,軟件測試一共經歷了五個階段:

-
以調試為主的軟件測試
在20世紀50年代,隨着計算機的誕生,利用計算機完成復雜、快速計算的計算機編程也隨之出現。這時的需求和程序本身也遠遠沒有現在這么復雜多變,但是已經有人在完成編程之后開始考慮“怎么證明程序滿足了需求?”的問題。這時的測試還沒有明確的概念,主要是以調試為主,驗證程序是否滿足了需求。
-
以證明為主的軟件測試
很快在1957年,Charles Baker在《軟件測試發展》一書中就提出測試的概念,並且對調試和測試進行了區分:
1)調試(Debug),確保程序做了程序員想讓它做的事情。
2)測試(Testing),確保程序解決了它該解決的問題。
這時的計算機軟件數量、成本和復雜性都大幅度提升,測試的重要性也大大增強,測試的目不僅僅是驗證,而且要確認軟件是滿足需求的,也就是我們常說的“做了正確的事情”。
-
以破壞為主的軟件測試
1979年,C.J.Myers在《軟件測試之藝術》一書中給出了軟件測試的經典定義:
測試是為發現錯誤而執行程序的過程。
這個定義說明測試不僅要證明軟件做了正確的事情,也要保證它沒做不該做的事情。
所以好的測試用例是發現迄今為止尚未發現的錯誤的測試用例;成功的測試是發現了至今為止尚未發現的錯誤的測試。
這個階段的測試的目的主要是找出軟件中潛在的錯誤,所以說它是以破壞為主。這也使得軟件測試和軟件開發獨立開來,測試需要更為專業的人員進行,畢竟開發人員在心理上總是不願意給自己開發的軟件找錯。
-
以評估為主的軟件測試
在1983年,出現了V&V(驗證和確認)理論,測試被應用在整個軟件生命周期中。同時IEEE提出的軟件測試新的定義:
“使用人工或自動手段來運行或測定某個軟件系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別”。
軟件測試以及測試工具在這個時期得到了快速的發展。
-
以預防為主的軟件測試
以預防為主是當下軟件測試的主流思想之一。
隨着敏捷開發被提出以來,測試驅動開發、自動化的持續集成和測試等技術的應用,都體現出人們不再滿足與編碼后對程序的驗證和確認,而是事先就通過測試來保證編寫的代碼的正確性。
從以調試為主到以預防為主,軟件測試已經發生了翻天覆地的變化。每每想到現在一些實施GJB5000初級的組織的內部測試竟然還是以調試為主,不僅讓人感慨GJB5000實施之路仍然任重道遠。
這正是:
調試進化到預防,測試發展大變樣
如若不能去發展,質量必然受影響
參考書目:軟件測試技術指南,作者:斛嘉乙,符永蔚,樊映川,出版社:機械工業出版社
