HGTS:大家都知道Google的每個經理都有很多直接下屬,而且經理自己還需要從技術上有所貢獻。你怎么平衡這些事情?能告訴我們你自己是怎么完成那些技術工作的嗎?
Ankit:管理下屬和與其他人溝通確實是一種干擾。我其實總結了兩個辦法來讓自己能保持技術敏銳度并像工程師一樣參與其中。
第一,在與開發工程師和測試開發工程師團隊溝通的過程中,有好多事情可以做,我可以選擇留下一部分自己來完成。我在設計階段會積極地參與,持續地跟進項目并且自己也編寫測試。
第二,其實這才是關鍵的部分。如果你想做一些技術工作,就必須盡量排除管理方面帶來的干擾。起先,我每周都花一兩天的時間做我自己的工作。我有一個項目是把Google Feedback整合到Gmail里,這個工作讓我能從開發的角度來看待測試。當我碰到一個脆弱的測試,或者測試架構的某些部分拖慢了我的測試進度時,我就能夠理解那些全職的開發工程師怎么看待我們的測試工作了。盡管如此,只要我在Google總部的辦公室,人們總能想辦法找到我,所以我就跑到蘇黎世Gmail團隊的辦公室去。雖然在那兒有九個小時的時差,但是環境就安靜多了,我在那里也不是誰的經理。我可以混進一個技術團隊而不怎么引人注目。我在蘇黎世干了好多活兒!
HGTS:你對測試項目的人員配備有什么建議嗎?開發測試比是多少會比較好?SET和TE的比例呢?
Ankit:人員的問題其實很簡單,那就是絕不妥協。選用不合適的人來填充名額永遠要比等待合適的人員要糟糕。只選用最好的人,不能動搖。Google不讓公布人員比例數據,不過以前我們團隊中測試人員的比例比正常水平高很多。自從我們解決了很多最初的問題,并得到開發工程師的支持以后,我們的比例就降到和Google的標準水平差不多了。從技能分配的角度來說,Gmail的經驗是用20%的測試人員進行探索式測試。任何關注用戶體驗的產品都需要探索式測試。還有30%的測試工程師關注于產品的整體性測試,他們和測試開發工程師一起來保證測試的效果。另外50%的工作,是測試開發工程師開發相關的自動化測試和工具,以保持代碼庫的健壯和提高開發人員的工作效率。我不敢說我在下一個項目還會按照這樣的比例分配,但是這個比例對Gmail來說是有效的。
HGTS:我知道你現在開始負責Google+的測試了。在新項目中你發現哪些在Gmail的經驗是最有價值的?
Ankit:首先,不要把你所有的精力都放到前端。Gmail擁有可能是最龐大的分布式后臺系統,那里還有很多的測試問題我們尚未解決。除此之外,還有很多經驗教訓值得吸?。?/p>
— 使用與應用程序開發語言相同的編程語言來編寫測試。
— 讓負責開發新特性的人同時負責相應測試的執行,他需要對漏掉的測試負責。
— 關注測試基礎設施的建設,讓測試的編寫和執行非常容易,甚至比忽略它們還要容易。
— 20%的用例覆蓋了80%的使用場景(可能會有些出入)。把這20%自動化而別管剩下的。把那些測試通過手工完成。
— 這里是Google,速度才是王道。如果用戶只在乎一件事,那就是速度。確保我們的產品足夠快。進行性能分析以便于可以證明給所有人看。
— 與開發團隊的溝通至關重要。如果這點做的不好,你就會疲于應付,那可不是什么好事。
— Google的DNA里富含著創新精神。測試團隊也應該被看做創新者。發現重要的問題并能創造性地提出解決方案。
HGTS:你有發現技術團隊可能遇到哪些陷阱嗎?
Ankit:有的。假設我們知道用戶的需求,然后進行了大規模的改動或編寫了大量的代碼提供新特性,卻沒有進行小規模的試驗。如果用戶不喜歡這些改動,麻煩就大了,而針對這些特性構造的測試框架再好也是浪費。因此,要先為少量用戶放出一個版本,獲得必要的反饋,然后再為大量的自動化測試進行投資。
另外,試圖構造完美的解決方案可能花費太長的時間,到時候市場的發展早已超出你的想象了。應該快速迭代,展現階段性成果。
最后,就像開車一樣,你必須找到測試的離合點。過早編寫測試,有可能由于架構的變化導致全部工作作廢。若等待太久,則又可能錯失測試良機而導致沒有充分測試。測試驅動開發是不錯的方法。
HGTS:對于個人來說有什么陷阱嗎?年輕的測試工程師和測試開發工程師在新項目里會犯哪些錯誤?
Ankit:是的。他們可能一上來就開始干,不明所以。他們寫了很多測試,但忘記思考為什么要寫這些測試,怎么讓這些測試為整體目標服務。編寫測試的時候,他們往往沒有意識到他們還要負責維護這些測試。測試開發工程師應該牢記測試應該是開發人員的工作而他們自己應該專心讓測試成為開發人員工作中的一環。我們通過編寫工具幫助開發人員做到這點,而且應該讓開發人員在維護開發代碼的同時也負責維護測試代碼。這樣一來,測試開發工程師才能集中精力讓測試執行得更快,更容易分析。
測試工程師有時候會迷失方向,做起測試開發工程師的工作。我們希望測試工程師更全局地看待整個系統,全面地掌控整個產品。他們的重點應該是從最終用戶角度考慮的測試,幫助測試開發工程師和開發工程師確保所有的測試和底層測試框架都被正確有效地使用。測試工程師編寫的工具和對問題的診斷應該能夠影響整個產品。
HGTS:除了你前面提到的性能方面的自動化測試以外,還有什么測試方面的工作讓Gmail獲得了巨大的收益嗎?
Ankit:JavaScript自動化測試。我們為Gmail本身加入了一個用于自動化測試的servlet。通過它,開發人員就可以使用與前端開發一致的編程語言編寫端到端的測試(譯注:端到端的測試是指涉及整個應用系統環境,在現實世界使用時的情形模擬的測試。)。因為它使用很多相同的函數和程序庫,開發人員對于如何編寫測試代碼很熟悉,沒有學習曲線。他們可以很容易地寫出一些測試,來檢驗他們的新代碼是否影響了Gmail的正常功能,也能夠更好地保護他們開發的特性不被其他開發人員破壞?,F在,Gmail的每個新特性都至少會有一個通過這個servlet編寫的測試。最棒的是,在我現在負責的社交產品里面我也在用這個方法。我們已經有了大約兩萬個自動化測試!
原文轉自:http://blog.csdn.net/zuoninger/article/details/17409325