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