軟件測試的歷史應該從程序誕生的那一天就有了,隨著軟件的發展,特別是互聯網應用對軟件發布的影響, 軟件測試的價值也在逐漸發生了很多變化。 軟件測試從單純的發現軟件缺陷,發展到“軟件質量度量”,“預防質量缺陷” 等更大的質量范疇。隨著從單純的“質量保證” ,發展到“開發效率的提升”。
首先,我們回顧一下軟件測試的定義,
1979年Fred Mayer發布的測試經典 《軟件測試的藝術》(The art of software testing ),它將軟件測試定義為“帶著發現錯誤的目的,執行被測軟件”,簡單的說就是通常人說的:軟件測試就是找缺陷,找Bug。
1995年Stephen H.Hank 寫過一本書(《軟件質量工程的度量和模型》) metrics and models in software quality engineering,它用工程的方法引入軟件質量度量和軟件質量周期的管理,質量度量包括代碼覆蓋率,測試用例的覆蓋率和執行情況,用戶滿意程度,運維的質量管理等等。
2007年 微軟的幾個資深測試人員寫了一本書"The Practical Guide to Defect Prevention "(《質量缺陷預防實踐指南》 講的就是如何通過在軟件過程,方法和技術上,預防軟件缺陷的產生。
2008年 喜歡數據說話的Caper Jones 推出了 "Global Analysis of Productivity and Quality"《全面分析生產率和質量》, 從經濟學,軟件流程等的方面分析了生產率和軟件質量之間的關系,其中也包括一些好的實踐。
然后,我們再看一看軟件公司的變化
微軟:比爾 蓋茨說過 “微軟是一個測試公司”,可以說微軟是非常重視軟件測試的,在有些團隊,軟件測試人員數量超過開發人員。在光盤發布軟件的時代,修復Bug的成本是非常高的。隨著,Internet 應用的發展,應用軟件有了更加快速的發布周期,服務器端修復Bug成本降低了很多,同時通過引入Testing In Production。微軟也在引入一些變化,微軟的開發人員有更多的責任,進行質量保證,包括單元測試,產品中缺陷的支持等,軟件測試人員更加注重E2E的測試,測試框架,提高整個軟件的開發效率等。
谷歌:谷歌的開發和測試人員的比例是10:1,同時測試人員屬于Productivity的部門,測試團隊大部分是由豐富經驗的測試人員,能夠在新項目剛開始的時候,幫助建立測試框架,將其他項目好的測試經驗帶到這個項目中,項目執行起來以后,開發人員來編寫,執行測試用例,并且對產品的缺陷直接負責。