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