對亞馬遜與微軟不同的軟件測試方法,我已經在之前的文章中做了一些比較。本文會再做深入對比。
在2005年,我作為軟件開發測試工程師加入到亞馬遜之前,在面試時得知:測試正處于改進提升之中。你或許會問:之前是怎樣的?好吧,答案是,測試一直被冷遇:1對10(1對7,或0對無窮多)的測試開發比,證明了這點。
測試開發比
“正在提高,恩?”我應該同意么?未必,但是我快速地意識到:我之前曾經常使用亞馬遜網站,并跨越華盛頓湖[1]
2009年,我從亞馬遜的西雅圖總部橫跨華盛頓湖,加入了微軟。微軟尊重測試,且認為軟件質量高于一切亞馬遜vs微軟:一對一
在微軟,我管理著一個測試開發比在1~1.5之間的測試團隊。在亞馬遜,一個測試對7個甚至更多的開發和微軟相對,亞馬遜只用幾個小時來做測試,他們是怎么做到的?
1. 在亞馬遜公司,并非所有的功能、服務、代碼路徑都會被測試到。原因是,它們必須精心安排、使用測試稀缺資源。但在微軟,除了原型或“車庫”項目之外的所有項目,都可以在每一階段中,都經過完整的開發-測試-產品“三權對立”的團隊管理模式。
不測試的代碼降低了對測試人員的需求。相比較測試開發比例,或許,軟件開發測試工程師們與被測代碼的行數之比更有趣。如果排除亞馬遜未經過測試的功能模塊,它的測試開發時間比就非常接近微軟的水平。
2. 亞馬遜有“質量保證”團隊,而微軟擁有”測試“團隊。然而,在亞馬遜,質量保證除了測試外不參與任務其它事情。也就是說,微軟和亞馬遜應該互換各自質量保證團隊的名稱,因為亞馬遜是更傾向于只“測試”的團隊,而在微軟,我們似乎更接近實際意義上的質量保證。以不參加設計或可測性設計的評審來節約時間,實際上卻是一點也沒有節約時間。
3. 在亞馬遜,只做功能測試是非常普遍的,然而,性能測試也并非不做,或者由開發執行,或者優先級次之。
性能測試經常由開發團隊來做,因此這些測試時間確實是有,只是不占用測試團隊的時間而已。
4. 使用了一個較高運營成本的方法(開發隨時攜帶一個尋呼機),一旦在線上發現一個bug也實質是線上測試的形式,而且,統計時間并把這些時間放到開發名下。
5. 更好的自我服務分析工具。好工具能更易分析和快速確定產品中的任何爭議,這些工具監控服務器和服務,并發出報警。
通過自動化(和工具)來降低消耗……這才是真正的節約。
6. 廉價的人工測試。在列出這點時,我感覺很復雜,因為我曾經花費了大量精力來鼓勵這些手動測試者們自動化,但是亞馬遜公司在用戶使用產品前,聘用了海外團隊,僅通過產品的黑盒界面來點擊它們,并發現了一些問題。
隱藏測試時間。當人們談論亞馬遜公司的測試開發比時,他們并沒有將這些海外團隊納入在內。
期望
我的一個朋友在亞馬遜公司是質量保證團隊的管理者之一,他最近感嘆道:
測試開發比被過份強調……我們原本要去做很多的事情來保證質量,但為了追趕進度不得不放棄很多測試,而遺漏了bug的時候又會得到埋怨。
因此,或許我的“亞馬遜與微軟:一對一”比較沒有完全列出亞馬遜和微軟的差異,但是,我想說的是測試開發比并不重要。我最初寫下上面幾點是為了回答一個開發管理者的問題:為什么我們不能像亞馬遜在質量保障方面消耗更少?對于質量期望和風險承受力,亞馬遜是一個標準,而微軟是另一個標準——這就是原因。
不足
我已經對亞馬遜和微軟的測試方法做了大量歸納總結,也就意味著這不能完全被其它團隊照搬應用。若有不同意見,請在評論時暢所欲言。但是請牢記,這些歸納總結并非放之四海而皆準。并且,我希望大家能了解到:測試開發比并不重要。