Google的測試策略從來沒有變過,我們執(zhí)行測試的策略隨著公司的演化而演化。我們現(xiàn)在是一個集搜索、應用、廣告、移動、操作系統(tǒng)等業(yè)務于一體的公司。每一個我們關(guān)注的領(lǐng)域都是在該領(lǐng)域有意義的問題。隨著我們不斷的增加新的“關(guān)注領(lǐng)域”(Focus Areas),延伸已經(jīng)存在的領(lǐng)域,我們的測試也在不斷的擴展和改善。而我們當下在做的以及我們預計未來將會發(fā)展的方向,是我將要在這系列文章中將要闡述的問題。

  讓我們先從組織結(jié)構(gòu)的介紹開始,這個或許會讓你感到驚奇。在Google并不存在一個真正意義上的測試部門。測試實際存在于一個關(guān)注領(lǐng)域,我們稱它為“生產(chǎn)率工程”(EngineeringProductivity)!吧a(chǎn)率工程”是一個擁有一定數(shù)量的橫向和縱向的工程學科,測試是大的一個。而在這個組織中,“生產(chǎn)率工程”是由以下三部分組成:

  1、產(chǎn)品團隊。他們設計的內(nèi)部的和開源的工具由公司里的所有工程師完成。他們負責構(gòu)建和維護代碼分析器、開發(fā)環(huán)境、測試用例管理系統(tǒng)、自動化測試工具、構(gòu)建系統(tǒng)、源代碼控制系統(tǒng)、代碼回顧計劃、缺陷數(shù)據(jù)庫。他們的目標是設計一種能讓工程師更有效率的工具。工具是在檢測預防的戰(zhàn)略目標中占非常大的一部分。

  2、服務團隊。他們在一個非常寬泛的領(lǐng)域內(nèi)向產(chǎn)品團隊提供諸如包含工具(includingtools)、文檔、測試、發(fā)布管理、培訓等方面的專業(yè)技能。他們的專業(yè)技能涵蓋可靠性、安全性、國際化等方面,也會處理產(chǎn)品團隊可能遇到的關(guān)于功能細節(jié)方面的問題。任何一個其他“關(guān)注領(lǐng)域”的服務團隊也可以為產(chǎn)品團隊提供專業(yè)技能服務。

  3、嵌入式工程師。他們有效的擔負起了Google產(chǎn)品團隊在有需要時的需求。有些工程師會跟著同一個的產(chǎn)品團隊數(shù)年,另一些則只會在一個較短的周期內(nèi)為產(chǎn)品團隊的需要提供服務。Google鼓勵所有的工程師經(jīng)常更換自己服務的產(chǎn)品團隊,以保持飽滿的精神狀態(tài),并保證有效和客觀的工作。測試工程師也一樣,更換團隊的節(jié)奏也是因人而異的。有些測試工程師在Chrome項目下數(shù)年,而有一些則在加入團隊18個月后去了別的團隊。在產(chǎn)品知識與新穎的視角間保持一個良好的平衡,是一個測試管理者需要關(guān)注的。

  所以這意味著測試同學向工程生產(chǎn)力部門的經(jīng)理匯報,但是他們會把自己看成產(chǎn)品部門團隊的一員,像搜索、郵箱、和Chrome部門。從組織架構(gòu)上看,測試都是兩個團隊的一部分。測試和產(chǎn)品團隊坐在一起,參與計劃,一起吃飯,共享獎金,享受像全職的產(chǎn)品團隊成員一樣的待遇。這種單獨的組織匯報關(guān)系的好處是可以給測試人員之間提供良好的共享信息的討論機會,好的測試思路可以很容易的在工程生產(chǎn)力部門內(nèi)部蔓延,無論公司內(nèi)的哪條產(chǎn)品線,都可以很快地使用這些好的測試技術(shù)。

  測試人員的這種項目分離和匯報組織結(jié)構(gòu)也有它的缺點,目前來看,大的問題是測試人員被看做外部資源。產(chǎn)品部門團隊不能對測試人員有太多的依賴,他們自己必須要合理地控制產(chǎn)品質(zhì)量。是的,沒錯,在谷歌,是產(chǎn)品部門團隊對產(chǎn)品質(zhì)量負責,而不是測試人員。每個產(chǎn)品部門的開發(fā)人員都需要做測試工作,測試人員的任務是為產(chǎn)品部門團隊搭建自動化測試基礎(chǔ)設施和流程,測試人員讓開發(fā)可以自給自足地、獨立地做完成測試工作。

  在這種模式下,我比較喜歡的是,開發(fā)和測試將有相同的地位。在質(zhì)量方面,開發(fā)和測試成為了真正的伙伴,大的質(zhì)量重擔交給本應屬于的開發(fā)人員,開發(fā)的職責是正確地實現(xiàn)產(chǎn)品功能。另外這樣可以保持多對一的開發(fā)測試比率,開發(fā)人員在數(shù)量上遠超測試人員,并且測試工作做的越多,開發(fā)測試比率會越大。產(chǎn)品部門團隊也會對這樣的高開發(fā)測試比率而感到驕傲。

  好,現(xiàn)在好像大家都是好朋友了,對吧? 相信你已經(jīng)看到這種模式的一個問題,開發(fā)人員不能很好地驅(qū)動缺陷【Bug】的運轉(zhuǎn),開發(fā)不會測試。難道我要否認這一點么?不管怎樣,我都不會否認,尤其是在我去年做的一次關(guān)于開發(fā)工程師與測試工程師對比的游戲之后(告訴你:測試工程師贏得了較量)。

  在谷歌,解決這個問題的辦法是將角色再細分,我們通過設立不同的測試角色來解決這兩種不同的測試問題。在下一篇文章里,我將詳細闡述這些測試角色和谷歌是怎樣將測試問題分成兩部分來分別解決的。