提高軟件質(zhì)量實(shí)踐:Amazon篇
前幾天回國轉(zhuǎn)了一圈,做了兩家企業(yè)質(zhì)量管理培訓(xùn),一次上海測試沙龍,和chinatest兩次演講。收獲頗多,以后慢慢分享?;貋砗蟀l(fā)現(xiàn)我的軟件質(zhì)量實(shí)踐系列文章距離上一次發(fā)表已經(jīng)有很長一段時間了。我想還是先把它寫完,再寫別的文章吧。那么今天我們看看互聯(lián)網(wǎng)公司的另外一個大哥大是如何做質(zhì)量控制的――Amazon.
Amazon是一個很傳奇的公司,它1995年的時候以一個網(wǎng)上書店起家,在短短的十幾年里成為全球***的在線購物公司。更為甚者,他在2005推出的AWS云計(jì)算服務(wù)更是被業(yè)界公認(rèn)為云計(jì)算的鼻祖,也是現(xiàn)在全球***最成功的云計(jì)算服務(wù)提供商。我一直堅(jiān)信成功的產(chǎn)品一定是由成功的質(zhì)量控制做保障的,采取什么樣的測試策略只有兩個決定因素。一是企業(yè)文化,二是產(chǎn)品特點(diǎn)。在分析Amazon的測試策略之前,我們先看看它的企業(yè)文化。
業(yè)界關(guān)于amazon企業(yè)文化和成功要素有很多,我覺得實(shí)際上最為核心的只有一個,就是他們的“low margin, large volume”理念。就是通過單個商品的低利潤和巨大的銷售量來最終提高公司利潤和公司業(yè)務(wù)向前發(fā)展。工程團(tuán)隊(duì)的理念就是要保障企業(yè)文化得以順利實(shí)施,所以Amazon的工程團(tuán)隊(duì)的理念就是如何保障公司“low margin, large volume”的企業(yè)文化。Amazon工程團(tuán)隊(duì)有以下特點(diǎn):
- 獨(dú)立的團(tuán)隊(duì):在Amazon,負(fù)責(zé)產(chǎn)品功能模塊的每個團(tuán)隊(duì)相對獨(dú)立。他們對該模塊的所有功能,性能,開發(fā),質(zhì)量,上線,維護(hù)等從頭到尾的絕對負(fù)責(zé)。我們在Google中也可以明顯看的這一特征.
- 敏捷的團(tuán)隊(duì):為了保障團(tuán)隊(duì)的敏捷,Amazon采用“2個比薩餅”的原則來看控制一個團(tuán)隊(duì)的大小。也就是2個比薩餅就可以吃飽(5-7個人)的大小。團(tuán)隊(duì)內(nèi)部和團(tuán)隊(duì)之間盡量減少工作的交接,一方面減少因?yàn)榻唤诱粘傻牟槐匾舆t,另一方面避免互相推卸責(zé)任。Amazon是最早采用敏捷開發(fā)(scrum)的公司之一,他們現(xiàn)在絕大多說產(chǎn)品組都是用scrum,據(jù)說有超過400多個CSM.
- 面向服務(wù)的產(chǎn)品體系架構(gòu)。在01年的時候,Amazon隨著它的產(chǎn)品線迅速擴(kuò)大,業(yè)務(wù)邏輯越來越復(fù)雜,現(xiàn)有的產(chǎn)品體系架構(gòu)極大地限制了整個公司的高速發(fā)展。他們重新設(shè)計(jì)了基于面向服務(wù)的,松耦合體系架構(gòu),使得各個模塊獨(dú)立開發(fā),修改和維護(hù)。所以Amazon可以在不犧牲質(zhì)量的同時,快速推出新產(chǎn)品新服務(wù)。
很遺憾的是Amazon很少公開談?wù)撍麄兊馁|(zhì)量管理流程和策略,不過通過有限的資料,還是不難看出他們的質(zhì)量管理的策略:
- 開發(fā)對質(zhì)量負(fù)責(zé):因?yàn)槊總€團(tuán)隊(duì)對模塊完全負(fù)責(zé),并且要做到敏捷。Amazon要求開發(fā)對質(zhì)量負(fù)責(zé):從設(shè)計(jì),寫代碼開始一直到代碼上線。開發(fā)做測試不僅可以盡快地發(fā)現(xiàn)bug,而且可以避免過分依賴測試人來提高質(zhì)量,更為重要的優(yōu)點(diǎn)是開發(fā)在設(shè)計(jì)是會考慮代碼的可測試性 (因?yàn)樗麄冏约阂獪y試,肯定想方設(shè)法使得測試更為容易些),從而使得模塊容易測試,容易維護(hù),松耦合,最***大提高模塊質(zhì)量。因?yàn)殚_發(fā)做了大量的測試,Amazon專職測試工程師也比較***(據(jù)說對開發(fā)的比例是1:7左右)。測試的主要職責(zé)是負(fù)責(zé)復(fù)雜用戶環(huán)境下的測試,以及開發(fā)測試工具,流程和基礎(chǔ)設(shè)施。而且很多產(chǎn)品組把一部分功能測試外包,所以即使Amazon的測試工程師不多,但是整個產(chǎn)品的測試工作卻沒有一點(diǎn)減少。
- 自動化測試:這里我就不在多說了,和microsoft, google一樣,他們開發(fā)了大量的測試工具和流程基礎(chǔ)設(shè)施來提高測試效率。開發(fā)專注于寫代碼和測試,不用在搭建環(huán)境,部署,運(yùn)行測試用例,和反饋上浪費(fèi)時間。除了測試自動化外,他們也開發(fā)了一整套用以產(chǎn)品上線,維護(hù)和監(jiān)控的工具和流程。只有這樣,開發(fā)才有可能既要寫代碼,又要對代碼質(zhì)量從頭到尾負(fù)責(zé)。
- 數(shù)據(jù)驅(qū)動的決策流程:和google一樣,Amazon全方位監(jiān)控它的應(yīng)用服務(wù)的運(yùn)行狀態(tài),從每個API調(diào)用時間,到用戶使用產(chǎn)品的每一步驟。根據(jù)對這些數(shù)據(jù)的分析和挖掘,開發(fā)團(tuán)隊(duì)決定如何提高產(chǎn)品質(zhì)量。
如果大家熟悉Google的軟件質(zhì)量實(shí)踐應(yīng)該可以發(fā)現(xiàn),Amazon和google在軟件質(zhì)量控制的理念和實(shí)踐有非常的相似之處。有所不同的是,google的很多項(xiàng)目以實(shí)驗(yàn)性為目的,最初沒有任何專職測試。只有等到項(xiàng)目真的被重視后,測試才開始介入。做為互聯(lián)網(wǎng)產(chǎn)品的兩個大哥大,他們的測試方式或許可以代表著互聯(lián)網(wǎng)產(chǎn)品的測試發(fā)展方向吧。下一次我們介紹***一個公司的測試策略-facebook。
原文鏈接:http://blogs.msdn.com/b/billliu/archive/2012/08/20/amazon.aspx