?
導(dǎo)讀: 本文譯自?James Whittaker 在 Google 測(cè)試官方博客發(fā)表的文章《 How Google Tests Software? 》。
在所有我被問及的問題中,最多的就是關(guān)于谷歌是如何測(cè)試的。盡管在博客中(google testing blog)中有過零碎的解釋說明,但還是需要更多的系統(tǒng)闡述。雖然谷歌的技術(shù)路線在執(zhí)行的過程中不斷地進(jìn)化,但公司的測(cè)試策略卻從來沒有變化過。谷歌現(xiàn)在 是一家擁有搜索、應(yīng)用、廣告、移動(dòng)、操作系統(tǒng)等產(chǎn)品的公司,我們?cè)谶@些涉及到的產(chǎn)品領(lǐng)域里發(fā)揮著非常有意義的作用。當(dāng)我們涉及到一些新的領(lǐng)域或者在舊領(lǐng)域 里快速成長(zhǎng)的時(shí)候,必須要求我們的測(cè)試也在同步的擴(kuò)張和改進(jìn)。在這個(gè)系列文章中提及的測(cè)試技術(shù),多數(shù)是我們當(dāng)前正在使用的,還有一些是希望以后在不久的將 來可以用到。
首先,先介紹一下組織結(jié)構(gòu),這一部分也可能會(huì)讓你感到驚奇。其實(shí)在谷歌沒有真正的測(cè)試部門,測(cè)試依托在各個(gè)產(chǎn)品領(lǐng)域部門里,我們稱之為“工程生產(chǎn) 力”(Engineering Productivity)。工程生產(chǎn)力部門擁有數(shù)量不等的水平或者垂直的工程學(xué)科,測(cè)試是其中的大頭。簡(jiǎn)單地說,工程生產(chǎn)力部門由以下幾部分構(gòu)成:
1. 一個(gè)工具產(chǎn)品團(tuán)隊(duì) (a product team),負(fù)責(zé)內(nèi)部和外部開源的促進(jìn)生產(chǎn)力的工具開發(fā)與維護(hù),這些工具會(huì)被公司范圍內(nèi)的各種工程師使用。這些工具包括代碼分析工具、IDE、測(cè)試用例管 理系統(tǒng)、自動(dòng)化測(cè)試工具、Build系統(tǒng)、源碼管理系統(tǒng)、代碼審核調(diào)度系統(tǒng)、缺陷管理系統(tǒng)等等。 這些工具的都是為了提高工程師效率的,并且這些工具在策略上的目標(biāo)多數(shù)是為了防止問題的發(fā)生,而不是發(fā)現(xiàn)問題本身。
2. 一個(gè)服務(wù)團(tuán)隊(duì) (a services team),給產(chǎn)品部門(注:這里的產(chǎn)品部門團(tuán)隊(duì)是和工程生產(chǎn)力部門平級(jí)的,例如Search、Gamil、Chrome等產(chǎn)品部門)提供一些專業(yè)的建 議,包括一系列工具、文檔、測(cè)試、發(fā)布管理、培訓(xùn)等方面,這些專家建議涵蓋可靠性、安全、國(guó)際化等,甚至包括產(chǎn)品團(tuán)隊(duì)面對(duì)的功能問題。所有的其他產(chǎn)品領(lǐng)域 也都會(huì)得到這樣的建議指導(dǎo)。
3. 嵌入式的工程師 (Embedded engineers),在需要的時(shí)候被產(chǎn)品部門高效地“借”去使用,這些工程師有些會(huì)和產(chǎn)品部門的團(tuán)隊(duì)坐在一起工作數(shù)年,另外一些當(dāng)他們被需要的時(shí)候會(huì)被 借調(diào)到其他的產(chǎn)品團(tuán)隊(duì)。谷歌鼓勵(lì)所有他們的工程師更換產(chǎn)品團(tuán)隊(duì),用以保持團(tuán)隊(duì)忙綠且不斷有新面孔,并如實(shí)地不帶有任何偏見與政治。測(cè)試人員也是這樣,但是 可以有節(jié)奏地選擇更換產(chǎn)品團(tuán)隊(duì)的頻率。我的下屬里,有測(cè)試人員已經(jīng)在Chrome團(tuán)隊(duì)工作了好幾年,也有一些待了一年半后就換到了其他團(tuán)隊(duì)。對(duì)于測(cè)試經(jīng)理 來說,必須在團(tuán)隊(duì)的產(chǎn)品經(jīng)驗(yàn)和新鮮度上做出很好的平衡。
所以這意味著測(cè)試同學(xué)向工程生產(chǎn)力部門的經(jīng)理匯報(bào),但是他們會(huì)把自己看成產(chǎn)品部門團(tuán)隊(duì)的一員,像搜索、郵箱、和Chrome部門。從組織架構(gòu)上看, 測(cè)試都是兩個(gè)團(tuán)隊(duì)的一部分。測(cè)試和產(chǎn)品團(tuán)隊(duì)坐在一起,參與計(jì)劃,一起吃飯,共享獎(jiǎng)金,享受像全職的產(chǎn)品團(tuán)隊(duì)成員一樣的待遇。這種單獨(dú)的組織匯報(bào)關(guān)系的好處 是可以給測(cè)試人員之間提供良好的共享信息的討論機(jī)會(huì),好的測(cè)試思路可以很容易的在工程生產(chǎn)力部門內(nèi)部蔓延,無論公司內(nèi)的哪條產(chǎn)品線,都可以很快地使用這些 最好的測(cè)試技術(shù)。
測(cè)試人員的這種項(xiàng)目分離和匯報(bào)組織結(jié)構(gòu)也有它的缺點(diǎn),目前來看,最大的問題是測(cè)試人員被看做外部資源。產(chǎn)品部門團(tuán)隊(duì)不能對(duì)測(cè)試人員有太多的依賴,他 們自己必須要合理地控制產(chǎn)品質(zhì)量。是的,沒錯(cuò),在谷歌,是產(chǎn)品部門團(tuán)隊(duì)對(duì)產(chǎn)品質(zhì)量負(fù)責(zé),而不是測(cè)試人員。每個(gè)產(chǎn)品部門的開發(fā)人員都需要做測(cè)試工作,測(cè)試人 員的任務(wù)是為產(chǎn)品部門團(tuán)隊(duì)搭建自動(dòng)化測(cè)試基礎(chǔ)設(shè)施和流程,測(cè)試人員讓開發(fā)可以自給自足地、獨(dú)立地做完成測(cè)試工作。
在這種模式下,我比較喜歡的是,開發(fā)和測(cè)試將有相同的地位。在質(zhì)量方面,開發(fā)和測(cè)試成為了真正的伙伴,最大的質(zhì)量重?fù)?dān)交給本應(yīng)屬于的開發(fā)人員,開發(fā) 的職責(zé)就是正確地實(shí)現(xiàn)產(chǎn)品功能。另外這樣可以保持多對(duì)一的開發(fā)測(cè)試比率,開發(fā)人員在數(shù)量上遠(yuǎn)超測(cè)試人員,并且測(cè)試工作做的越多,開發(fā)測(cè)試比率就會(huì)越大。產(chǎn) 品部門團(tuán)隊(duì)也會(huì)對(duì)這樣的高開發(fā)測(cè)試比率而感到驕傲。
好,現(xiàn)在好像大家都是好朋友了,對(duì)吧? 相信你已經(jīng)看到這種模式的一個(gè)問題,開發(fā)人員不能很好地驅(qū)動(dòng)缺陷(Bug)的運(yùn)轉(zhuǎn),開發(fā)不會(huì)測(cè)試。難道我要否認(rèn)這一點(diǎn)么?不管怎樣,我都不會(huì)否認(rèn),特別是 去年在GTAC talk (GTAC 2010: Turning Quality on its Head,link http://www.youtube.com/watch?v=cqwXUTjcabs ) 上做了一個(gè)開發(fā)和測(cè)試對(duì)抗的游戲后。(友情提示:測(cè)試贏了游戲)(這里感覺翻譯的不好,原文是: No amount of corporate kool-aid could get me to deny it, especially coming off my GTAC talk last year where I pretty much made a game of developer vs. tester (spoiler alert: the tester wins).)
在谷歌,解決這個(gè)問題的辦法是將角色再細(xì)分,我們通過設(shè)立不同的測(cè)試角色來解決這兩種不同的測(cè)試問題。在下一篇文章里,我將詳細(xì)闡述這些測(cè)試角色和谷歌是怎樣將測(cè)試問題分成兩部分來分別解決的。
為了實(shí)現(xiàn)”誰的屁股誰自己擦”這句名言所說的那樣,在傳統(tǒng)的軟件開發(fā)人員的之上,有必要增加了幾個(gè)角色,特別是需要工程技術(shù)方面的特殊角色,這種角 色可以讓開發(fā)更高效低做測(cè)試。在谷歌,這樣角色的職責(zé)是讓其他人工作的更有效率,這樣的工程師通常會(huì)把自己當(dāng)做測(cè)試人員,但他們真正的使命是提高生產(chǎn)力/ 生產(chǎn)率。他們的存在是為了讓開發(fā)人員效率提升,特別是在質(zhì)量方面的提升,因?yàn)楫a(chǎn)品質(zhì)量是生產(chǎn)率中最重要的一部分。這里是這些角色的總結(jié):
(譯注:“you build it, you break it”, you build it ,you break it , you fix it, 原意指在Build Lab的人永遠(yuǎn)不會(huì)去修復(fù)build break的問題,只有開發(fā)人員自己才能修復(fù)。這里的意思是開發(fā)人員自己要對(duì)自己寫的代碼負(fù)責(zé),比專職的測(cè)試人員更適合做測(cè)試工作。這里意譯為”誰拉的 shi,誰的屁股誰自己擦”)
?
軟件開發(fā)工程師(SWE,Software Engineer), 就是傳統(tǒng)的開發(fā)人員。 軟件工程師 實(shí)現(xiàn)一些功能代碼并把最終產(chǎn)品提供給用戶使用,他們創(chuàng)建設(shè)計(jì)文檔、設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和總體的架構(gòu)搭建,他們大多數(shù)時(shí)間都在寫代 碼和評(píng)審代碼。同時(shí),他們也會(huì)寫很多的測(cè)試代碼,包括測(cè)試驅(qū)動(dòng)設(shè)計(jì),單元測(cè)試,并參與后面的文章會(huì)講到的小、中、大型測(cè)試的創(chuàng)建工作。軟件工程師需要對(duì)他 們自己寫的代碼、修復(fù)缺陷的代碼、改進(jìn)的代碼,只要是他們接觸過的代碼的質(zhì)量負(fù)責(zé)。
軟件測(cè)試開發(fā)工程師(SET or Software Engineer in Test),和軟件開發(fā)工程師一樣是開發(fā)工程師,主要負(fù)責(zé)軟件的可測(cè)試性。他們參與設(shè)計(jì)評(píng)審,近距離地關(guān)注代碼質(zhì)量和風(fēng)險(xiǎn),對(duì)代碼做 重構(gòu) 為了系統(tǒng)有更好的 可測(cè)試性,同時(shí)他們負(fù)責(zé)寫單元測(cè)試框架和自動(dòng)化測(cè)試的框架。在代碼級(jí)別上他們和軟件開發(fā)工程師是合作伙伴,但如果和增加新功能或提升性能相比較,他們更關(guān) 心產(chǎn)品的質(zhì)量和測(cè)試覆蓋率的提升。
軟件測(cè)試工程師(Test Engineer),和軟件測(cè)試開發(fā)工程師(SET)恰恰相反,他得主要工作是做測(cè)試而不是開發(fā)。許多谷歌的軟件測(cè)試工程師會(huì)花很多的時(shí)間在寫測(cè)試代碼 上,包括自動(dòng)化腳本、使用場(chǎng)景的代碼、甚至模擬最終用戶的操作方面的代碼。他們對(duì)軟件開發(fā)工程師和軟件測(cè)試開發(fā)工程師的測(cè)試工作做一些組織安排,解釋測(cè)試 結(jié)果、驅(qū)動(dòng)測(cè)試的執(zhí)行,特別是在項(xiàng)目即將發(fā)布的后期將起到非常重要的作用。軟件測(cè)試工程師既是產(chǎn)品專家也是質(zhì)量顧問更是風(fēng)險(xiǎn)分析師。
從質(zhì)量的角度來看,軟件開發(fā)工程師對(duì)功能開發(fā)和質(zhì)量負(fù)有全責(zé)。同時(shí),他們還負(fù)責(zé)容錯(cuò)設(shè)計(jì)、故障恢復(fù)、TDD、單元測(cè)試、和在軟件測(cè)試開發(fā)工程師的幫助下寫測(cè)試代碼,這些測(cè)試代碼會(huì)驗(yàn)證開發(fā)的功能。
軟件測(cè)試開發(fā)工程師是提供測(cè)試支持的開發(fā)人員。他們提供一種能夠?qū)⑿绿砑拥拇a通過模擬其依賴的方式做功能驗(yàn)證的技術(shù)框架,并應(yīng)用在代碼提交之前的 提交隊(duì)列管理之中(注,這樣可以在代碼check in 的時(shí)候保證新代碼的功能完備)。可以這樣說,軟件測(cè)試開發(fā)工程師就是為了讓軟件工程師可以測(cè)試他們的功能代碼,所有真正的測(cè)試都是軟件開發(fā)工程師完成的, 軟件測(cè)試開發(fā)工程師是保證這些功能有很好的可測(cè)試性,這樣可以讓軟件開發(fā)工程師很積極地參與到測(cè)試用例代碼的編寫中去。
現(xiàn)在所有的一切很清楚了,軟件測(cè)試開發(fā)工程師就是服務(wù)人員,他們的主要職責(zé)就讓開發(fā)人員很方便簡(jiǎn)單的做測(cè)試并保證模塊級(jí)別的產(chǎn)品質(zhì)量。讀者可能已經(jīng)意識(shí)到一個(gè)問題,在這樣的研發(fā)流程下,使用軟件的最終用戶會(huì)怎樣?
在谷歌,軟件測(cè)試工程師的職責(zé)就是最終用戶級(jí)別的測(cè)試。如果軟件開發(fā)工程師和軟件測(cè)試開發(fā)工程師很好地做了模塊級(jí)別的功能測(cè)試,下一個(gè)工作就是看許 多功能集成和數(shù)據(jù)的組合是否能夠滿足最終用戶的使用需求。軟件測(cè)試工程師在這里就是扮演一個(gè)雙重確認(rèn)開發(fā)工程師測(cè)試工作的角色,任何明顯的缺陷都會(huì)說明之 前一輪的開發(fā)自測(cè)不夠或比較草率,如果沒有出現(xiàn)這種情況之后,軟件測(cè)試工程師會(huì)將注意力轉(zhuǎn)移到普通用戶的使用場(chǎng)景測(cè)試上,保證性能、安全、國(guó)際化等方面沒 有問題。軟件測(cè)試工程師們需要做大量的測(cè)試工作,并在測(cè)試工程師、測(cè)試合同工、吃狗糧的嘗鮮者、beta測(cè)試用戶、早期最終用戶之間做很多溝通交流的工 作,他們會(huì)和基礎(chǔ)設(shè)計(jì)、功能復(fù)雜度、避免錯(cuò)誤的方法等方面遇到問題的人做確認(rèn)。一旦軟件測(cè)試工程師開始介入,總是會(huì)沒完沒了。
英文出自: googletesting
?
轉(zhuǎn)載自 伯樂在線? http://blog.jobbole.com/15277/
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

