《Google 軟件測試之道》是 2013 年出版的,書中記錄的也都是截止當時的 Google 軟件測試的現狀,如果和國內目前的情況相比較的話,Google 不僅僅是走在了前列,而且是遠遠看不到邊的前列。
我在上篇文章中有提到 Google 當時對于測試團隊的定位,已經是上升到「工程生產力」部門的高度了,而對應的,隨著團隊職責的不斷演化,團隊成員的職責也進行了對應的轉變。
Google 測試團隊的職級匯報關系是:TE(Test Engineer,測試工程師) 和 SET(Software Engineer in Test,軟件測試開發工程師) -> 測試工程經理 -> 測試總監 -> 高級總監 -> CEO。
今天我把書中提到的兩個最主要的角色 SET 和 TE,分別提取了他們具體的工作職責,希望藉此可以作為我們努力的目標。
Google中的SET
SET 的部分職責是在單元測試方面給予開發人員支持,另一部分職責是為開發人員提供測試框架,以方便他們編寫中小型測試,用以進行更多質量相關的測試工作。
SET 是 100% 的編碼角色,作為測試的開發工程師和功能的開發工程師處于同等的地位。
一個好的 SET 具有寬廣的整體產品視野,而且在產品的整個生命周期里對產品及功能特性都有充分的理解。
一個好的 SET 在項目早期參與項目時,會協助項目形成良好的文檔、不錯的可測試性、運行穩定的自動化測試、清晰的代碼提交流程。
通常來說,代碼復用和模塊交互方面的設計會由 SET 來做,而不是 SWE(Software Engineer)。
SET 在審閱設計文檔時,預期要關注的要點有:完整性、正確性、一致性、設計、接口與協議、測試。
SET 是第一個實現所有接口和協議的人,SET 針對各個模塊的依賴提供了 mock 或 fake 的實現。
SET 的第一要務是可測試性,SET 需要提供程序結構和代碼風格方面的建議給開發人員,這樣開發人員可以更好地做單元測試,同時提供測試框架方面的建議,讓開發人員可以在這些框架基礎上自己寫測試。
SET的面試,重點在考察候選人如何思索問題的解決方案,而不是解決問題方案本身的實現上有多高雅。
Google中的TE
TE 負責從用戶的角度來思考質量方面的各種問題。從開發角度來說,他們編寫用戶使用場景方面的自動化用例代碼,從產品角度來說,他們評估整體測試覆蓋度,并驗證其他工程師角色在測試方面合作的有效性。
TE 以對某種特定的產品最合適的方式發現軟件中風險最大的地方并嘗試減少或消除它。
TE 的根本使命是保護用戶和業務的利益,使之不受到糟糕的設計、令人困惑的用戶體驗、功能 bug、安全和隱私等問題的困擾。
TE 是團隊中全職地負責從整體角度發現產品或服務弱點的唯一角色。
TE 的主要職責包括但不限于:測試計劃和風險分析、評審需求、設計、代碼和測試、探索式測試、用戶場景、編寫測試用例、執行測試用例、眾包、使用統計、用戶反饋。
TE 的招聘要求:
1、測試過程中會關注需求確認、會從用戶角度考慮問題、會通過邏輯關聯提高用例覆蓋率的人;
2、具備處理模糊性、反駁糟糕想法的能力,對需求合理性提出質疑;
3、有好奇心并充滿激情。
總之,SET 負責可測試性和測試自動化體系的長期有效性。TE 的重點在于評估對用戶的影響以及軟件產品整體目標上的風險。
對于TE,某些人可能覺得比較虛,還是SET經常寫code實在。國內的測試團隊,基本上把SET的工作和TE的工作合二為一,放在一個人的身上,然而SET和TE的技術和要求是不一樣的,我們測試團隊的測試開發工程師都能很好的具備SET和TE的能力嗎,我們真正的測試工作重心到底是什么呢?我們的測試開發工程師都能在產品的測試過程中發揮這么多的作用嗎?大家可以自己思考下。