James Whittaker在Google Testing Blog上連載了How Google Tests Software,How Google Tests Software,James 是前Google西雅圖的技術(shù)總監(目前回到微軟工作),主要參與Gmail、Chrome和內部工具特別是測試工具開(kāi)發(fā)等產(chǎn)品,不過(guò)Google如何測試這個(gè)題目太大了,Google除了常規的產(chǎn)品,每年還會(huì )新立項很多產(chǎn)品同時(shí)也殺死很多產(chǎn)品,每個(gè)產(chǎn)品的團隊會(huì )根據自身情況制定有針對性的測試策略。
本文我們來(lái)談?wù)凣oogle上海是怎么測試搜索產(chǎn)品的??赡芎芏嗳私?jīng)常使用的是Google的網(wǎng)頁(yè)搜索,但在Google首頁(yè)的Onegoogle bar上還提供了很多搜索的子頻道,例如圖片搜索、地圖搜索、資訊搜索、視頻搜索等,見(jiàn)下圖。以下介紹的就是這些子頻道的測試。
一、人員結構
從上圖我們可以看出搜索產(chǎn)品團隊是一個(gè)扁平化的組織
工程師經(jīng)理:負責多個(gè)項目/產(chǎn)品(一般2個(gè))的預算管理,工程師人員管理,Team Building
產(chǎn)品經(jīng)理:負責多個(gè)項目/產(chǎn)品(一般2個(gè)),產(chǎn)品特性定義設計和確定發(fā)展方向,競爭對手產(chǎn)品分析,主導產(chǎn)品創(chuàng )新討論,確定新功能發(fā)布優(yōu)先級
技術(shù)組長(cháng):制定和跟蹤項目進(jìn)度表,統籌開(kāi)發(fā)人員
開(kāi)發(fā)人員:設計開(kāi)發(fā)文檔,開(kāi)發(fā)功能,單元測試,code review,提交發(fā)布
測試人員:建立產(chǎn)品質(zhì)量流程,設計自動(dòng)化測試框架,推動(dòng)開(kāi)發(fā)人員對質(zhì)量的認知度,提高開(kāi)發(fā)測試覆蓋率
UX:可選,在某些功能上提供用戶(hù)體驗分析,前臺UI設計
基本上每個(gè)搜索子頻道都是這個(gè)結構,不到10人的團隊,充分發(fā)揮每個(gè)成員的主動(dòng)性,積極的溝通,產(chǎn)品經(jīng)理引領(lǐng)產(chǎn)品走向,每個(gè)成員通過(guò)頭腦風(fēng)暴提供創(chuàng )意排好優(yōu)先級來(lái)實(shí)現自己的想法。
OKRs
Objectives and Key Results的簡(jiǎn)稱(chēng),Google特有的考核指標,分為T(mén)eam的OKR和個(gè)人的OKR。每個(gè)季度,各個(gè)產(chǎn)品團隊會(huì )根據自身產(chǎn)品的需求設定目標,是一個(gè)結果導向的考核。制定出團隊的OKR后,團隊成員根據它制定自己的OKR,指標是需要能具體量化或實(shí)際看到成果的,同時(shí)分享給團隊成員讓其他人知道你的目標和這個(gè)季度想要做的事情,季度結束時(shí)根據結果打分。具體可以參考這篇文章,OKR的解說(shuō)
二、環(huán)境
已經(jīng)上線(xiàn)運行的搜索產(chǎn)品一般會(huì )有以下四種環(huán)境,每個(gè)環(huán)境都會(huì )加入測試過(guò)程。
Local Demo
當開(kāi)發(fā)人員開(kāi)發(fā)好某個(gè)新功能,會(huì )在他本機起一個(gè)本地的服務(wù)用來(lái)做前期的驗證,測試人員也可以通過(guò)這個(gè)demo看到初步的設計,為編寫(xiě)測試計劃和測試用例做準備,形成初步的測試大綱或測試要點(diǎn),同時(shí)可以提前和開(kāi)發(fā)溝通,了解他是如何設計這個(gè)功能塊,使用哪些技術(shù)評估風(fēng)險,代碼可測試性如何,單元測試覆蓋率是否達到一定程度。在這個(gè)階段,開(kāi)發(fā)人員會(huì )在Buganizer(bugzilla/' target='_blank'>Bugzilla二次開(kāi)發(fā)版,google內部使用的bug管理工具)為他開(kāi)發(fā)的這個(gè)新功能建一個(gè)Hotlist,測試人員和開(kāi)發(fā)人員將bug、feature request、improvement等提交進(jìn)去便于跟蹤。測試人員和開(kāi)發(fā)人員在這個(gè)環(huán)節會(huì )有很多OneOne溝通(Google talk、Gmail、面對面),需要發(fā)揮測試的主動(dòng)性,特別是需求的理解,雙方要達成共識,有異議的地方提交給產(chǎn)品經(jīng)理來(lái)確認。
Dev Env(corp)
這是整個(gè)開(kāi)發(fā)團隊的環(huán)境,所有開(kāi)發(fā)提交的功能會(huì )部署到這個(gè)環(huán)境中,測試人員可以在上面做集成測試,發(fā)現的任何問(wèn)題,包括用戶(hù)體驗,需求改進(jìn)都要提交到Bug庫中,重大的問(wèn)題可以放到周會(huì )上來(lái)討論,這個(gè)階段Tech leader會(huì )起主導作用。
Test Env/RC(borg)
正式的測試環(huán)境,搜索產(chǎn)品的發(fā)布周期現在各個(gè)子產(chǎn)品基本都達到了一周一發(fā)布的頻率,Google有一個(gè)borg環(huán)境,由成千上萬(wàn)的服務(wù)器組成,各個(gè)產(chǎn)品申請獲得某臺服務(wù)器,之后這個(gè)產(chǎn)品的測試環(huán)境就部署在這臺borg機器上,團隊的每個(gè)工程師輪流來(lái)?yè)伟l(fā)布工程師,在每周的某一天先做代碼凍結,之后發(fā)布產(chǎn)品,當這個(gè)版本通過(guò)sanity check/smoke test,就可以通知測試人員來(lái)做正式的新功能測試和回歸測試。
Production
搜索產(chǎn)品自身不產(chǎn)生內容的特點(diǎn),在之前的環(huán)境,數據和生產(chǎn)環(huán)境上是一致的,但是生產(chǎn)環(huán)境上有成千上萬(wàn)臺服務(wù)器,為了避免環(huán)境差異的問(wèn)題,需要 Testing in Production,當每周RC測試通過(guò)且sign off后,測試人員需要到生產(chǎn)環(huán)境上跑一圈(go through),看看是否有遺漏的嚴重問(wèn)題,如果有,及時(shí)的回滾到上一版本,這個(gè)版本廢棄同時(shí)研究為什么會(huì )有嚴重問(wèn)題遺漏,記錄下來(lái)防止今后再出現類(lèi)似問(wèn)題,如果沒(méi)有,。
DogFood
"吃狗食",產(chǎn)品做大改版或一個(gè)新立項的產(chǎn)品經(jīng)常會(huì )有這個(gè)環(huán)境,一般是個(gè)相對穩定的版本,用途是在內部推廣,產(chǎn)品經(jīng)理會(huì )邀請其他團隊人員來(lái)使用并提供反饋,內部員工就是第一批用戶(hù)。如果公司內部不認可,發(fā)布的幾率會(huì )大大降低,因此,整個(gè)團隊很關(guān)注這個(gè)版本。
Experiment
試驗功能版,互聯(lián)網(wǎng)的特點(diǎn)決定了需要不斷的試錯,很多創(chuàng )意在內部通過(guò)后會(huì )采用這種方式發(fā)布。根據不同地理位置不同IP不同平臺不同瀏覽器等等,選取一些特殊的用戶(hù)來(lái)試用,產(chǎn)品經(jīng)理收集反饋后在周會(huì )上整個(gè)團隊來(lái)評估這個(gè)試驗效果是否可以全部推廣。
三、測試
在講測試內容之前先談下測試人資源,哪些人來(lái)做測試,從第一部分的人員結構圖可以看到產(chǎn)品團隊的全職測試人員一般只有一個(gè),即使算上全球版和本地版 (Global和Local,常用Google搜索的應該會(huì )知道搜索除了google.com還會(huì )有各個(gè)國家的版本,比如CN/HK/TW)也不會(huì )超過(guò)3 個(gè)人,所以測試人員需要盡早測試,同時(shí)測試需要推動(dòng)開(kāi)發(fā)測試、培養開(kāi)發(fā)的質(zhì)量意識,讓開(kāi)發(fā)也承擔一部分測試任務(wù),所以外面都說(shuō)Google的開(kāi)發(fā)和測試比例是10:1,而我覺(jué)得確切的說(shuō)應該是10:11,開(kāi)發(fā)和產(chǎn)品經(jīng)理也參與了很多測試工作,全員測試,全員對質(zhì)量負有責任。
原文轉自:http://kjueaiud.com