|
Facebook 從 2004 年的哈佛校園的學(xué)生項(xiàng)目在短短的 7~8 年的時(shí)間中快速增長(zhǎng)為擁有 10 億用戶(hù)的世界上最大的社交網(wǎng)絡(luò),又一次見(jiàn)證了互聯(lián)網(wǎng)創(chuàng)業(yè)成功的奇跡。同時(shí)它的產(chǎn)品研發(fā)流程也成為了眾多互聯(lián)網(wǎng)產(chǎn)品公司的追逐對(duì)象。今天我們來(lái)看一下 Facebook 在產(chǎn)品質(zhì)量控制方面的實(shí)踐。有人說(shuō),現(xiàn)在的 Google 象早期的微軟,現(xiàn)在的 Facebook 象早期的 Google. 我覺(jué)得不無(wú)道理。 雖然 Facebook 已經(jīng)早已不是創(chuàng)業(yè)公司,但是不難看出它在產(chǎn)品研發(fā)和質(zhì)量控制仍然保持著創(chuàng)業(yè)公司的風(fēng)格。在產(chǎn)品研發(fā)上,他們以小的研發(fā)團(tuán)隊(duì)為核心,遵循幾個(gè)非常重要的原則:
- Be there from start to ship: 每個(gè)工程師自始至終負(fù)責(zé)產(chǎn)品。從最開(kāi)始的一個(gè)想法,到開(kāi)發(fā)原型,到內(nèi)部審核,反饋,到產(chǎn)品開(kāi)發(fā),上線和維護(hù),全部有工程師自己搞定。
- Show work early and often: Facebook 非常看重反饋,尤其早期內(nèi)部反饋。他們鼓勵(lì)工程師有了想法后,盡快開(kāi)發(fā)出原型,盡快得到反饋。
- Gets your hands dirty: 動(dòng)手去做,去實(shí)現(xiàn)。
- Don’t fall in love: 互聯(lián)網(wǎng)產(chǎn)品是不斷變化的,不需要等到把一個(gè)產(chǎn)品設(shè)計(jì)的很完美了才發(fā)布。
為了遵循以上原則,F(xiàn)acebook 工程師采用以下質(zhì)量控制手段來(lái)保證產(chǎn)品質(zhì)量:
- 開(kāi)發(fā)人員對(duì)質(zhì)量負(fù)責(zé): 開(kāi)發(fā)人員從設(shè)計(jì),實(shí)現(xiàn),測(cè)試,到部署都要自己做。其它做工具,流程的工程師通過(guò)開(kāi)發(fā)工具和流程來(lái)幫助開(kāi)發(fā)人員更為簡(jiǎn)單方便地做測(cè)試,做部署和做監(jiān)控。每個(gè)開(kāi)發(fā)人員有自己?jiǎn)为?dú)的測(cè)試環(huán)境,測(cè)試環(huán)境就是運(yùn)行在開(kāi)發(fā)本地機(jī)器上,部署非常簡(jiǎn)單快速。測(cè)試環(huán)境用的是真實(shí)的用戶(hù)數(shù)據(jù)。
- 持續(xù)集成和測(cè)試自動(dòng)化:每周發(fā)布一次。星期天晚上,要發(fā)布的構(gòu)建從主線上分支出來(lái)到發(fā)布分支,到星期二的中午如果沒(méi)有大的問(wèn)題,就可以上線了。所有的測(cè)試運(yùn)行控制在 10 分鐘以?xún)?nèi),所以不需要考慮不運(yùn)行哪些測(cè)試用例。運(yùn)行所有測(cè)試用例。 (只是聽(tīng)說(shuō),沒(méi)有經(jīng)過(guò)考證。)
- 內(nèi)測(cè) (dog food):發(fā)布之前,公司員工使用要發(fā)布的功能。2~3天之內(nèi)可以有幾百個(gè)或上千個(gè)人在使用新功能。負(fù)責(zé)要發(fā)布功能的開(kāi)發(fā)人員在星期天晚上到星期二中午之間會(huì)做大量的測(cè)試 (一邊上班,一邊刷微博,豈不是很爽 :) )。
- 發(fā)布風(fēng)險(xiǎn)控制:新功能本身質(zhì)量可能有問(wèn)題,新功能也可能影響其它現(xiàn)有功能。為了減少或控制這些風(fēng)險(xiǎn)。Facebook 開(kāi)發(fā)了一整套完善的發(fā)布,控制,監(jiān)控流程和工具。做到:1. 測(cè)試通過(guò)后,產(chǎn)品質(zhì)量基本有保證。2.即使有漏測(cè)的 bug,只會(huì)影響很少量的用戶(hù)。3. 及時(shí)監(jiān)控到問(wèn)題。4. 及時(shí)修復(fù)。
- 產(chǎn)品監(jiān)控:監(jiān)控產(chǎn)品的系統(tǒng)的運(yùn)行狀態(tài)。
Facebook 之所以采取這種質(zhì)量控制策略和它的產(chǎn)品特點(diǎn)密切相關(guān):
- 用戶(hù)對(duì)社交產(chǎn)品質(zhì)量的容忍度相對(duì)較高。比如發(fā)微博,現(xiàn)在連不上,等一會(huì)在連接也可以,現(xiàn)在發(fā)布不出去可以等一會(huì)再發(fā),粉絲數(shù)量統(tǒng)計(jì)有誤,沒(méi)有人太關(guān)心。其實(shí) Facebook 并不認(rèn)為自己的質(zhì)量差。他們認(rèn)為產(chǎn)品的質(zhì)量高低不是有多少個(gè) failed 測(cè)試用例,有多少個(gè) bug 來(lái)確定的,而是有用戶(hù)對(duì)質(zhì)量的期望值來(lái)決定的。如果用戶(hù)對(duì)產(chǎn)品質(zhì)量的期望值很高很高,一個(gè) bug 漏掉了都會(huì)照成質(zhì)量差的印象,用戶(hù)很有可能放棄使用。相反,如果用戶(hù)的期望值一般,100個(gè) bug 漏掉了都不會(huì)影響用戶(hù)繼續(xù)使用。所以 Facebook 產(chǎn)品發(fā)布的條件是滿足用戶(hù)對(duì)質(zhì)量的期望值即可。
- 相對(duì)寬松的產(chǎn)品發(fā)布周期。不像微軟或 Google 很多產(chǎn)品已經(jīng)在市場(chǎng)上,用戶(hù)對(duì)下一版本的發(fā)布時(shí)間和新增加功能的期望很高,這往往給產(chǎn)品開(kāi)發(fā)組的壓力很大。Facebook 基本沒(méi)有這個(gè)問(wèn)題,它有適合自己的發(fā)布期限,不用受到外界干擾。
- 產(chǎn)品發(fā)布和監(jiān)控流程比較完善,即使有漏測(cè)的 bug,對(duì)用戶(hù)的影響可以控制在最小而且可以及時(shí)發(fā)現(xiàn)及時(shí)修復(fù)。
Facebook 質(zhì)量控制中引以為豪而且倍受矚目的就是“沒(méi)有專(zhuān)職測(cè)試工程師”。我這里需要專(zhuān)門(mén)討論一下:
- 什么是“專(zhuān)職測(cè)試工程師”? 頭銜里面有“測(cè)試”的工程師?專(zhuān)門(mén)找 bug 的工程師?專(zhuān)門(mén)做質(zhì)量控制的工程師?等等。
- Facebook 的確沒(méi)有帶“測(cè)試”頭銜的工程師,也沒(méi)有專(zhuān)門(mén)運(yùn)行產(chǎn)品找 bug 的工程師。每個(gè)人都是開(kāi)發(fā)工程師。但是他們的實(shí)際工作有區(qū)別,有的專(zhuān)門(mén)做面對(duì)用戶(hù)的產(chǎn)品,有的專(zhuān)門(mén)做測(cè)試,開(kāi)發(fā)工具,有的專(zhuān)門(mén)做產(chǎn)品的構(gòu)建和持續(xù)集成工具和流程,有的專(zhuān)門(mén)做發(fā)布和監(jiān)控的工具和流程。如果按照傳統(tǒng)意義上的開(kāi)發(fā)和測(cè)試的劃分的話,除了第一類(lèi)外,其他都可以看做專(zhuān)職測(cè)試工程師。
- Facebook 不是惟一一個(gè)沒(méi)有帶“測(cè)試”頭銜工程師的公司,很多軟件公司都沒(méi)有,比如 twitter.
- 很多人把專(zhuān)職測(cè)試工程師指專(zhuān)門(mén)運(yùn)行產(chǎn)品找 bug 的工程師。微軟在 2005 年去掉 STE (software test engineer )崗位,就已經(jīng)沒(méi)有這一類(lèi)型的專(zhuān)職測(cè)試工程師了。
所以個(gè)人認(rèn)為,專(zhuān)職測(cè)試工程師是個(gè)非常模糊的結(jié)論。尤其現(xiàn)在我們對(duì)產(chǎn)品質(zhì)量控制方法的不斷演變和提高,“測(cè)試”的概念不僅僅是指找 bug 了,所有圍繞提高產(chǎn)品質(zhì)量的工作都是測(cè)試。頭銜上有沒(méi)有“測(cè)試”不重要,有沒(méi)有“測(cè)試”崗位不重要,重要的是如何有效保證和提高產(chǎn)品質(zhì)量。
it知識(shí)庫(kù):提高軟件質(zhì)量實(shí)踐——Facebook 篇,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。