我嘗試從幾個角度來分析,在正式分析開始前,我們先把范圍劃定在軟件開發這個圈子里頭,并且對這些問題進行解釋。關于這方面的討論,一般會存在以下幾個誤區:
下頭對這3點逐一解釋:
經常有人會問,“為什么互聯網公司不開除測試,轉而讓大眾來測,找到一個bug給100元?”
這個問題有個假設,就是開發階段、測試階段完全剝離開了。開發階段單純地就是開發人員敲代碼,然后出來的東西交給測試人員去做測試。我不否認,現在依然存在這樣的實踐方式。但是,這不是一個好的方式。因為這種流程,把發現bug的時間點推遲了。而發現bug的時間點越靠后,修復它所要付出的代價就越大。
這點應該很容易理解,比如你敲釘子,如果一口氣敲完了才發現,敲歪了,那就得拔出來重新來,可是東西上已經有一個很深的洞了。所以,好的方式是敲一敲,檢查一下,隨時糾正方向,確保前進的大方向是正確的。
軟件更是如此,某個bug可能是在最底層的地方發生的,如果早期發現,定位也容易,修復起來被牽扯到的地方也少,付出的代價可以接受。因為bug的產生可能是多個原因,有可能是功能性的,也有可能是對業務理解的偏差導致開始就做錯了。
如果在產品做出來,發布給最終用戶之后才發現。那個時候再排查到底哪里出了問題,就不是一時半會能做到的了,代價很大。
所以比較好的實踐方式,是由專業的業務人員把要做的東西切割成足夠小的、彼此獨立的、可單獨交付的模塊,開發、測試以及業務人員及時溝通、及時反饋,一個一個小模塊完成,隨時做隨時測。把發現bug的時間點盡量往前推,這樣就可以把修復它的代價降得盡可能小。
當然,小模塊都通過測試,并不意味著所有小模塊拼裝起來組成的系統一定正確,還需要進行層次高一點的集成測試。這就引出了第2點。
對測試的理解有些偏差,誤認為測試只是在產品做出來之后,使用它,然后挑毛病,找bug。
有這樣的偏差并不奇怪,因為執這樣想法的人太多了,甚至包括一些軟件行業的從業人員。比如有這樣的說法:
開發就是敲代碼的,測試就是找bug的
原文轉自:http://news.hiapk.com/internet/s591fffb7e712.html