自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

谷歌是如何做測試的?

開發(fā) 前端
本文是作者James Whittaker發(fā)表的一篇博客《How Google Tests Software - Part Two》,譯文《谷歌如何測試》由軟件測試開發(fā)師公直翻譯。

在所有我被問及的問題中,最多的就是關(guān)于谷歌是如何測試的。盡管在博客中(google testing blog)中有過零碎的解釋說明,但還是需要更多的系統(tǒng)闡述。雖然谷歌的技術(shù)路線在執(zhí)行的過程中不斷地進化,但公司的測試策略卻從來沒有變化過。谷歌現(xiàn)在是一家擁有搜索、應(yīng)用、廣告、移動、操作系統(tǒng)等產(chǎn)品的公司,我們在這些涉及到的產(chǎn)品領(lǐng)域里發(fā)揮著非常有意義的作用。當我們涉及到一些新的領(lǐng)域或者在舊領(lǐng)域里快速成長的時候,必須要求我們的測試也在同步的擴張和改進。在這個系列文章中提及的測試技術(shù),多數(shù)是我們當前正在使用的,還有一些是希望以后在不久的將來可以用到。

首先,先介紹一下組織結(jié)構(gòu),這一部分也可能會讓你感到驚奇。其實在谷歌沒有真正的測試部門,測試依托在各個產(chǎn)品領(lǐng)域部門里,我們稱之為“工程生產(chǎn)力”(Engineering Productivity)。工程生產(chǎn)力部門擁有數(shù)量不等的水平或者垂直的工程學(xué)科,測試是其中的大頭。簡單地說,工程生產(chǎn)力部門由以下幾部分構(gòu)成:

1. 一個工具產(chǎn)品團隊(a product team),負責內(nèi)部和外部開源的促進生產(chǎn)力的工具開發(fā)與維護,這些工具會被公司范圍內(nèi)的各種工程師使用。這些工具包括代碼分析工具、IDE、測試用例管理系統(tǒng)、自動化測試工具、Build系統(tǒng)、源碼管理系統(tǒng)、代碼審核調(diào)度系統(tǒng)、缺陷管理系統(tǒng)等等。 這些工具的都是為了提高工程師效率的,并且這些工具在策略上的目標多數(shù)是為了防止問題的發(fā)生,而不是發(fā)現(xiàn)問題本身。

2. 一個服務(wù)團隊(a services team),給產(chǎn)品部門(注:這里的產(chǎn)品部門團隊是和工程生產(chǎn)力部門平級的,例如Search、Gamil、Chrome等產(chǎn)品部門)提供一些專業(yè)的建議,包括一系列工具、文檔、測試、發(fā)布管理、培訓(xùn)等方面,這些專家建議涵蓋可靠性、安全、國際化等,甚至包括產(chǎn)品團隊面對的功能問題。所有的其他產(chǎn)品領(lǐng)域也都會得到這樣的建議指導(dǎo)。

3. 嵌入式的工程師(Embedded engineers),在需要的時候被產(chǎn)品部門高效地“借”去使用,這些工程師有些會和產(chǎn)品部門的團隊坐在一起工作數(shù)年,另外一些當他們被需要的時候會被借調(diào)到其他的產(chǎn)品團隊。谷歌鼓勵所有他們的工程師更換產(chǎn)品團隊,用以保持團隊忙綠且不斷有新面孔,并如實地不帶有任何偏見與政治。測試人員也是這樣,但是可以有節(jié)奏地選擇更換產(chǎn)品團隊的頻率。我的下屬里,有測試人員已經(jīng)在Chrome團隊工作了好幾年,也有一些待了一年半后就換到了其他團隊。對于測試經(jīng)理來說,必須在團隊的產(chǎn)品經(jīng)驗和新鮮度上做出很好的平衡。

所以這意味著測試同學(xué)向工程生產(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ā)人員都需要做測試工作,測試人員的任務(wù)是為產(chǎn)品部門團隊搭建自動化測試基礎(chǔ)設(shè)施和流程,測試人員讓開發(fā)可以自給自足地、獨立地做完成測試工作。

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

好,現(xiàn)在好像大家都是好朋友了,對吧? 相信你已經(jīng)看到這種模式的一個問題,開發(fā)人員不能很好地驅(qū)動缺陷(Bug)的運轉(zhuǎn),開發(fā)不會測試。難道我要否認這一點么?不管怎樣,我都不會否認,特別是去年在GTAC talk (GTAC 2010: Turning Quality on its Head,linkhttp://www.youtube.com/watch?v=cqwXUTjcabs)上做了一個開發(fā)和測試對抗的游戲后。(友情提示:測試贏了游戲)(這里感覺翻譯的不好,原文是: 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).)

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

為了實現(xiàn)”誰的屁股誰自己擦”這句名言所說的那樣,在傳統(tǒng)的軟件開發(fā)人員的之上,有必要增加了幾個角色,特別是需要工程技術(shù)方面的特殊角色,這種角色可以讓開發(fā)更高效低做測試。在谷歌,這樣角色的職責是讓其他人工作的更有效率,這樣的工程師通常會把自己當做測試人員,但他們真正的使命是提高生產(chǎn)力/生產(chǎn)率。他們的存在是為了讓開發(fā)人員效率提升,特別是在質(zhì)量方面的提升,因為產(chǎn)品質(zhì)量是生產(chǎn)率中最重要的一部分。這里是這些角色的總結(jié):

(注,“you build it, you break it”, you build it ,you break it , you fix it, 原意指在Build Lab的人永遠不會去修復(fù)build break的問題,只有開發(fā)人員自己才能修復(fù)。這里的意思是開發(fā)人員自己要對自己寫的代碼負責,比專職的測試人員更適合做測試工作。這里意譯為”誰拉的shi,誰的屁股誰自己擦”)

軟件開發(fā)工程師(SWE,Software Engineer), 就是傳統(tǒng)的開發(fā)人員。軟件工程師實現(xiàn)一些功能代碼并把最終產(chǎn)品提供給用戶使用,他們創(chuàng)建設(shè)計文檔、設(shè)計數(shù)據(jù)結(jié)構(gòu)和總體的架構(gòu)搭建,他們大多數(shù)時間都在寫代碼和評審代碼。同時,他們也會寫很多的測試代碼,包括測試驅(qū)動設(shè)計,單元測試,并參與后面的文章會講到的小、中、大型測試的創(chuàng)建工作。軟件工程師需要對他們自己寫的代碼、修復(fù)缺陷的代碼、改進的代碼,只要是他們接觸過的代碼的質(zhì)量負責。

軟件測試開發(fā)工程師(SET or Software Engineer in Test),和軟件開發(fā)工程師一樣是開發(fā)工程師,主要負責軟件的可測試性。他們參與設(shè)計評審,近距離地關(guān)注代碼質(zhì)量和風(fēng)險,對代碼做重構(gòu)為了系統(tǒng)有更好的可測試性,同時他們負責寫單元測試框架和自動化測試的框架。在代碼級別上他們和軟件開發(fā)工程師是合作伙伴,但如果和增加新功能或提升性能相比較,他們更關(guān)心產(chǎn)品的質(zhì)量和測試覆蓋率的提升。

軟件測試工程師(Test Engineer),和軟件測試開發(fā)工程師(SET)恰恰相反,他得主要工作是做測試而不是開發(fā)。許多谷歌的軟件測試工程師會花很多的時間在寫測試代碼上,包括自動化腳本、使用場景的代碼、甚至模擬最終用戶的操作方面的代碼。他們對軟件開發(fā)工程師和軟件測試開發(fā)工程師的測試工作做一些組織安排,解釋測試結(jié)果、驅(qū)動測試的執(zhí)行,特別是在項目即將發(fā)布的后期將起到非常重要的作用。軟件測試工程師既是產(chǎn)品專家也是質(zhì)量顧問更是風(fēng)險分析師。

從質(zhì)量的角度來看,軟件開發(fā)工程師對功能開發(fā)和質(zhì)量負有全責。同時,他們還負責容錯設(shè)計、故障恢復(fù)、TDD、單元測試、和在軟件測試開發(fā)工程師的幫助下寫測試代碼,這些測試代碼會驗證開發(fā)的功能。

軟件測試開發(fā)工程師是提供測試支持的開發(fā)人員。他們提供一種能夠?qū)⑿绿砑拥拇a通過模擬其依賴的方式做功能驗證的技術(shù)框架,并應(yīng)用在代碼提交之前的提交隊列管理之中(注,這樣可以在代碼check in 的時候保證新代碼的功能完備)??梢赃@樣說,軟件測試開發(fā)工程師就是為了讓軟件工程師可以測試他們的功能代碼,所有真正的測試都是軟件開發(fā)工程師完成的,軟件測試開發(fā)工程師是保證這些功能有很好的可測試性,這樣可以讓軟件開發(fā)工程師很積極地參與到測試用例代碼的編寫中去。

現(xiàn)在所有的一切很清楚了,軟件測試開發(fā)工程師就是服務(wù)人員,他們的主要職責就讓開發(fā)人員很方便簡單的做測試并保證模塊級別的產(chǎn)品質(zhì)量。讀者可能已經(jīng)意識到一個問題,在這樣的研發(fā)流程下,使用軟件的最終用戶會怎樣?

在谷歌,軟件測試工程師的職責就是最終用戶級別的測試。如果軟件開發(fā)工程師和軟件測試開發(fā)工程師很好地做了模塊級別的功能測試,下一個工作就是看許多功能集成和數(shù)據(jù)的組合是否能夠滿足最終用戶的使用需求。軟件測試工程師在這里就是扮演一個雙重確認開發(fā)工程師測試工作的角色,任何明顯的缺陷都會說明之前一輪的開發(fā)自測不夠或比較草率,如果沒有出現(xiàn)這種情況之后,軟件測試工程師會將注意力轉(zhuǎn)移到普通用戶的使用場景測試上,保證性能、安全、國際化等方面沒有問題。軟件測試工程師們需要做大量的測試工作,并在測試工程師、測試合同工、吃狗糧的嘗鮮者、beta測試用戶、早期最終用戶之間做很多溝通交流的工作,他們會和基礎(chǔ)設(shè)計、功能復(fù)雜度、避免錯誤的方法等方面遇到問題的人做確認。一旦軟件測試工程師開始介入,總是會沒完沒了。

原文:http://sdet.org/?p=149

【編輯推薦】

  1. IT公司裁員為何總是測試工程師最受傷?
  2. Web開發(fā)者必備的JavaScript單元測試工具
  3. 軟件項目開發(fā)團隊該如何與測試團隊合作
  4. 各大主流.Net的IOC框架性能測試比較

 

責任編輯:陳貽新 來源: sdet.org
相關(guān)推薦

2017-11-16 21:21:18

DevOps測試軟件開發(fā)

2021-05-13 08:00:00

軟件測試程序IT

2019-09-15 14:07:49

2024-04-22 08:26:37

協(xié)同編輯FigmaOT 算法

2012-05-07 08:49:57

Clojure

2024-01-15 07:42:37

Figma協(xié)同編輯算法

2011-08-01 09:08:49

程序員

2021-09-18 15:40:03

Vue單元測試命令

2023-08-07 08:01:15

2021-07-06 10:03:05

軟件開發(fā) 技術(shù)

2022-12-07 11:21:30

Reactdiff

2013-08-26 15:09:23

互聯(lián)網(wǎng)測試

2015-07-30 11:21:16

代碼審查

2024-07-10 08:26:02

開源項目測試

2022-08-03 09:11:31

React性能優(yōu)化

2022-08-29 08:08:58

SQLOracleCPU

2023-01-18 23:52:07

RTA用戶粒度運營

2020-10-12 10:20:07

軟件測試 技術(shù)

2015-08-11 09:13:16

2048WEB開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號