翻譯第七篇

軟件測試工程師【TE】的工作

相比軟件工程師【Software Engineer】、軟件開發測試工程師【Software Engineer in Test】而言,軟件測試工程師【Software Test Engineer,以下簡稱測試工程師】是一個較新的角色,甚至這個角色本身目前還在定義完善之中。當前谷歌測試工程師們正在對未來這一角色的定義上進行實踐嘗試中。在這裏,我們講述的這個角色的定義過程,是正在進行中的,也是我們認爲最適宜谷歌的。

並非所有的產品都需要測試工程師爲之提供服務。一些試驗性的嘗試,或者一些在使命和用戶使用場景上沒有得到很好定義的產品的初期階段,這些項目肯定不會吸引測試工程師加入。如果產品有很大的可能性被取消掉(某種程度上講,這也是證明這個想法不會成功),或者還沒能吸引用戶使用,或者功能都沒有很好地被定義,在這些產品裏,測試工作一般都是由產品的開發人員自己完成的。

即使對於一個已經確定要發佈的產品,在其研發的早期階段,如果功能還在不斷變化並且最終的產品列表和範疇還沒有定下來的時候,測試工程師實際上也沒有太多的工作可做。太早地過度投入測試資源意味着很多事還需要扔掉重來。相比較產品的後期階段,早期階段的產品需要較少的測試工程師,在產品接近尾聲時,當尋找缺陷變得緊急的時候,需要較多的資源投入到測試上進行探索性測試。

策略上講,給一個項目配備多少測試資源,是和項目風險、投資回報率息息相關的。如果對用戶(不管是個人還是企業用戶)的風險較大,則意味着在測試上要投入較多的資源,需要更多的測試工程師。但投入的資源需要和其潛在的回報成正比。我們需要在合適的時間,投入合適數量的測試工程師,並得到合適的收益。

當測試工程師,進入產品的時候,並不需要一切重頭開始。在項目最開始的時候,開發工程師和測試開發工程師已經在測試工程和質量方面做了大量工作。測試工程師在進入產品時,需要考慮以下一些問題:
· 當前軟件的薄弱點在哪裏?
· 從安全、隱私、性能、穩定性這幾個角度出發都關注哪些內容?
· 對於主流用戶來說,是否可以滿足他們的預期?對於全球所有的用戶也是這樣麼?
· 這個產品是否需要和其他產品交互(軟件和硬件上)?
· 當發生問題的時候,診斷工具是否很好地使用?

上面所有問題,都會被當做軟件發佈過程中的風險進行討論。測試工程師並不需要自己去解決所有這些問題,但必須保證這些問題被解決掉,這就需要去評估其他人的工作來看還有多少工作需要去做。其實,測試工程師之所以被僱傭,就是爲了保護軟件的最終個人企業用戶的利益,使之不受糟糕的設計、令人疑惑的用戶交互界面、功能缺陷、安全和隱私等問題帶來的不良影響。在谷歌,測試工程師是團隊中唯一全職對整體產品弱點關注的角色。和測試開發工程師【SET】相比,測試工程師【TE】的工作並不是那麼清晰和一致。測試工程師會被要求在項目的各個階段都提供援助,無論產品是一個想法的時候,還是產品已經到了第八個版本,甚至需要爲一些已經過時封存已久的項目【mothballed,衛生球項目】提供支持。一般情況下,一個有一技之長的測試工程師,比如在安全方面,他們通常會同時負責多個項目。

顯然,不同項目中的測試工程師的工作內容也會有比較大的不同。部分項目的測試工程師【TE】像測試開發工程師【SET】一樣,在編碼方面投入了比較多的時間,絕大多數項目的測試工程師還是會把主要精力投入在端對端的用戶使用場景上。一些測試工程師利用已有的代碼和設計【測試代碼】來驗證失敗的場景,並分析失敗的原因。在這種情況下,測試工程師可能會去修改已有的測試代碼,而不是一切從頭開始寫。測試工程師必須對測試計劃及測試完成做系統全面的考慮,特別是在真實使用方式和系統體驗上。在需求不明確的情況下,測試工程師善於對一些說不清的問題上做原因分析和溝通處理。

成功的測試工程師在完成這些的同時,也會指導團隊需要在哪裏保持敏銳,甚至有時候會改變一些團隊成員的做事方法。一旦軟件的缺陷被發現後,測試工程師會非常樂意地去破壞軟件,然後再讓開發、產品、測試開發人員去解決這些缺陷問題。

考慮到測試工程師需要的技術技能、領導力、對產品的深厚理解力等多方面要求,其職位描述會是令人恐懼的,如果沒有正確的指導,這個角色會很難去做。幸運的是,在谷歌,一個由測試工程師們組成的強大社區的出現解決了這個問題。在所有的工作角色中,測試工程師可能是最好可以相互提供幫助的角色,這個角色需要敏銳的洞察力和領導力,因此谷歌的高級測試經理們幾乎全部是從測試工程師這個層級做起的。

測試工程師的工作經常需要去打破常規。在任何時刻,一旦測試工程師進入項目,他就需要去評估項目、代碼、設計、用戶的當前狀態,並決定當前需要去首先關注些什麼。如果進入項目的時候,項目剛剛開始,這個時候測試計劃會是第一優先級要解決的問題。有些時候測試在產品的晚期才進入,這個時候需要去評估這個項目是否已久爲產品發佈做好了準備,或者在“beta”版本發佈之前還需要解決哪些主要的問題。如果測試工程師進入了一個新的產品,或者他對這樣產品中有較少經驗的時候,通常情況下會先去做一些不需要測試計劃的探索性測試工作。在另外一些時候,項目已經很久沒有發佈了,只是需要去做一些修飾或者安全方面的修復,或者用戶交互方面的更新,這需要測試工程師針對不同階段的項目使用不同的方法。谷歌的測試工程師需要在不同的項目做不同的事情,並且他們很少做相同的事情。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章