天天看點

“窺探”谷歌測試

一淘網測試架構師黃利在他的部落格上釋出了翻譯的一個專題系列文章:《谷歌如何測試》,整個系列文章從全局到局部地介紹了谷歌有關測試的情況。

譯者黃利在《譯者序》中闡述了在軟體開發模式(尤其是網際網路)中,近幾年的快速疊代釋出,以Beta版本線上運作,讓大家對測試産生了一些誤解:

  • 這些應用沒有經過很好地測試,好多功能使用上都有問題;
  • 測試水準比較有限,沒有能及時的發現潛在問題;
  • 測試本身沒有太多的技術,基本上是功能确認,點點滑鼠、搭建環境驗證下就可以;
  • 隻要認真仔細,有責任心就可以做好測試;

這些誤解讓很多人特别是應屆生,都不會把測試作為職業規劃來考慮,黃利表示:“想通過這個系列的讨論,讓大家清楚測試工作如果做好,方法其實并不是想象中的那麼簡單和表面上的膚淺,是非常好有挑戰的。”

關于《谷歌如何測試》,黃利已經翻譯了六篇:

• 第一篇:介紹谷歌工程生産力部門構成,以及這種測試人員的項目分離和彙報組織結構的優點與缺點。

谷歌沒有真正的測試部門,測試依托在各個産品部門裡,即“工程生産力”,這個部門由以下幾個團隊組成:工具産品團隊(負責内部和外部開源的促進生産 力的工具開發與維護);服務團隊(給産品部門提供一些專業的建議,包括一系列工具、文檔、測試、釋出管理、教育訓練等方面,這些專家建議涵蓋可靠性、安全、國 際化等,甚至包括産品團隊面對的功能問題);嵌入式的工程師(在需要的時候被産品部門高效地“借”去使用)。

在測試人員的這種項目分離和彙報組織結構中,其優點是開發和測試将具有相同的地位,缺點則由于測試人員被看做外部資源,産品部門團隊不能對測試人員有太多的依賴,他們自己必須要合理地控制産品品質。

• 第二篇:為了讓開發人員效率提升,特别是在品質方面的提升,在傳統的軟體開發人員的之上,增加了幾個角色,特别是需要工程技術方面的特殊角色。

将工程師的角色細分為:軟體開發工程師【SWE,Software Engineer】, 就是傳統的開發人員;軟體測試開發工程師【SET or Software Engineer in Test】,和軟體開發工程師一樣是開發工程師,主要負責軟體的可測試性;軟體測試工程師【Test Engineer】,和軟體測試開發工程師【SET】恰恰相反,主要工作是做測試而不是開發。

從品質的角度來看,軟體開發工程師對功能開發和品質負有全責,軟體測試開發工程師是提供測試支援的開發人員,軟體測試工程師的職責就是最終使用者級别的測試。

• 第三篇:品質不等于測試,“品質不是被測出來的”。

最簡單的辦法是不要區分開發和測試,不要把他們當成對立的活動。測試和開發【注,兩種行為,不是人】最好能手牽手的并行,寫一點代碼就立刻進行測 試,寫的越多,測的就要越多。最好是,在編碼的同時,甚至在編碼之前,就考慮清楚這些代碼将如何被測試。測試不是一個單獨的工作,測試就是開發的一部分。 是以,品質并不等同于測試,當把開發和測試混在一起,攪拌直到分不清他們彼此的時候,就得到了品質。

對于品質來說,預防問題比發現問題本身更重要。品質是開發人員的問題,而不是測試人員的問題。通過把測試工作融入到開發過程中,我們能降低那些富産 Bug的人的出錯機會,不僅可以避免了大量最終使用者的使用問題,而且還可以極大地降低測試人員報無效Bug的數量。在谷歌軟體測試工程師的工作目标就是檢 查這種預防措施是否有效,軟體測試工程師不停地尋找一些證據來證明作為bug的作者和預防者的“軟體開發工程師-軟體測試開發工程師”組合是否存在問題, 一旦發現任何不正常,就會拉響警笛。

•第四篇:從爬到走、走到跑的模式,在一個産品的核心子產品被開發後,如果有一定數量的受益人群就立刻釋出,然後不斷的得到使用者回報再疊代開發新功能。

這樣爬、走、跑的模式對分析也有益處。例如,發現了一個bug,測試人員可以根據這個bug建立一個測試用例,并針對所有的每一個版本都運作這個測試用例,進而可以驗證這個 bug fix是否在所有的版本中都真正得到了修複。

• 第五篇:測試範圍的定義,以及自動化測試和手動測試。

“哪些需要被測試及測試範圍的确定,這是一個動态變化的過程,在不同的産品之間會有比較大的差異。谷歌更傾向于頻繁釋出,從産品的外面使用者那裡得到回報之後再疊代開發。”

“自動化測試和手動測試,對于所有的三種類型測試【小規模、中等規模、大規模測試】來說當然更喜歡前者。如果能夠被自動化,而且不需要任何人智力和 直覺判斷,那就應該把它變成自動化的。隻有在特别需要人為判斷的時候,例如使用者的界面是否漂亮、或暴漏一些涉及使用者隐私的内容時,在這些情況下應該保留手 動測試。

對于谷歌來說非常重要的是仍然使用了大量的手動測試,不管是使用文本記錄的方式還是使用探索性測試,雖然有些已經進入了自動化測試的視線。業界使用 的錄制技術将手動測試轉變成自動化測試,可以在每個版本後自動地重複運作,這樣保證了最少的回歸工作,并把手動測試的重點放在新問題上。而且,谷歌已經将 送出BUG的過程和一些手動測試的日常工作也自動化了。

人類智慧的最後一英寸”展現在測試設計上,谷歌的下一代測試工具也正在這個方向上努力嘗試,将其自動化。

• 第六篇:軟體測試開發工程師【SET】的生命

chaunceyhao