軟件測試開發工程師(SET)的生命
軟件測試開發工程師【Software Engineers in Test】是軟件工程師,專注在測試實現。首先,軟件測試開發工程師是開發角色,在招聘和內部晉升資料中被我們奉為100%的編碼角色。當在招聘面試軟件測試開發工程師的時候,對于編碼的要求幾乎和對軟件開發工程師的要求是一模一樣的,而且更強調如何去測試自己寫的代碼。換句話說,軟件開發工程師和軟件測試開發工程師都需要回答編碼問題,而且軟件測試開發工程師會被問到一系列測試相關的問題。
正如你可能想到的,這是一個很難滿足的角色。軟件測試開發工程師的數量如此之少的最有可能的原因是,事實具備軟件測試開發工程師所需技能的人非常難找,而不是我們刻意使用了什么神奇的生產率公式【譯注,開發測試比率公式】, 這也是我們適應當前工程實踐的一個必然結果。我們還在優化我們的工程實踐–這是一個非常重要的任務,并且為所有參與的人構建一些流程。
通常來說,軟件測試開發工程師不會在早期設計階段就介入。不是故意這樣做,而是和多數谷歌的產品是如何誕生的有關。一個常見的新產品誕生的場景是這樣,已有的谷歌產品的員工會投入20%時間來開始新的產品。Gmail和Chrome OS這2個產品,從一個簡單的想法開始,并非正式地由谷歌授權去做的,慢慢地隨著時間的推移,越來越多的開發和測試加入進來并把產品發布。在這種情況下,早期的開發要關注的重心并不是質量,更關注提供一些理念,在解決了擴展性和性能的問題之后,再更多地關注質量。如果你創建了一個web service,但是不具有可擴展性時,測試這時候還并不是你最大的問題。
一旦這個產品已經明確未來可以發布的時候,研發團隊就開始尋求測試的介入了。
你可以想象這樣一個過程,某個人有了一個好主意,他開始思考并寫了一些試驗性質的代碼,從其他人那里獲取一些建議然后對這些代碼做了改進,并勸說更多的人加入,寫了越來越多的代碼,然后意識到他們做的事情很重要,通過更多的代碼把這個想法變成可以呈現給他人并得到反饋的模型… 這個項目在谷歌的項目庫中就創建了,這個項目慢慢地變成了一個真實的項目,測試也只有在項目變成真實的項目之后才會介入進來。
所有真實的項目都有專職的測試人員么? 默認情況下是沒有的。小型項目和只有受限用戶使用的項目一般是開發人員自己做測試。其他的一些對個人或者企業用戶有潛在風險的項目,測試會介入。
當開發團隊尋求測試團隊參與并幫助他們時,他們有責任使測試人員相信他們的項目是令人興奮并充滿潛力的。開發總監會給測試總監解釋他們的項目、進度、發布計劃,一起討論測試工作如何劃分,并就開發需要滿足的單元測試水平及開發參與測試工作程度上達成一致,發布流程中開發與測試的責任也需要明確。軟件測試開發工程師在項目初期可能不會參與進來,一旦項目變成真實的項目后,測試人員將在軟件開發過程中發揮巨大的影響力。
當我說“測試”時,并不是僅僅意味著單純的檢查驗證代碼路徑。測試人員不是從開始就參與進來的,但“測試”卻至始至終都有。實際上,一個開發嘗試去check in代碼的時,測試人員的影響力在這個時刻可能就已經顯現出來了。【譯,這里指軟件測試開發工程師會對開發人員的測試程度做一些要求,開發人員在check in code的時候需要想一下自己是否滿足這些要求,這就是測試人員的影響力】。歡迎繼續收聽并嘗試理解我所說的這些東西。
公直
2012/6/28
#p#
英文原文,
How Google Tests Software – Part Six
http://googletesting.blogspot.com/2011/05/how-google-tests-software-part-six.html
Monday, May 02, 2011 12:05 PM
By James Whittaker
The Life of an SET
SETs are Software Engineers in Test. They are software engineers who happen to write testing functionality. First and foremost, SETs are developers and the role is touted as a 100% coding role in our recruiting literature and internal job promotion ladders. When SET candidates are interviewed, the “coding bar” is nearly identical to the SWE role with more emphasis that SETs know how to test the code they create. In other words, both SWEs and SETs answer coding questions. SETs are expected to nail a set of testing questions as well.
As you might imagine, it is a difficult role to fill and it is entirely possible that the low numbers of SETs isn’t because Google has created a magic formula for productivity but more of a result of adapting our engineering practice around the reality that the SET skill set is really hard to find. We optimize on this very important task and build processes around the people who do it.
It is usually the case that SETs are not involved early in the design phase. Their exclusion is not so much purposeful as it is a by-product of how a lot of Google projects are born. A common scenario for new project creation is that some informal 20% effort takes a life of its own as an actual Google branded product. Gmail and Chrome OS are both projects that started out as ideas that were not formally mandated by Google but over time grew into shipping products with teams of developers and testers working on them. In such cases early development is not about quality, it is about proving out a concept and working on things like scale and performance that must be right before quality could even be an issue. If you can’t build a web service that scales, testing is not your biggest problem!
Once it is clear that a product can and will be built and shipped, that’s when the development team seeks out test involvement.
You can imagine a process like this: someone has an idea, they think about it, write experimental code, seek out opinions of others, write some more code, get others involved, write even more code, realize they are onto something important, write more code to mold the idea into something that they can present to others to get feedback … somewhere in all this an actual project is created in Google’s project database and the project becomes real. Testers don’t get involved until it becomes real.
Do all real projects get testers? Not by default. Smaller projects and those meant for limited users often get tested exclusively by the people who build it. Others that are riskier to our users or the enterprise (much more about risk later) get testing attention.
The onus is on the development teams to solicit help from testers and convince them that their project is exciting and full of potential. Dev Directors explain their project, progress and ship schedule to Test Directors who then discuss how the testing burden is to be shared and agree on things like SWE involvement in testing, expected unit testing levels and how the duties of the release process are going to be shared. SETs may not be involved at project inception, but once the project becomes real we have vast influence over how it is to be executed.
And when I say “testing” I don’t just mean exercising code paths. Testers might not be involved from the beginning … but testing is. In fact, an SET’s impact is felt even before a developer manages to check code into the build. Stay tuned to understand what I am talking about.