天天看點

軟體測試工程師的“三十六變”

其實這篇博文是寫出來想給大家分享一下測試工程師的職業發展的,顯然是老話題了,是以我假設本文的目标讀者為:

1. 想進入軟體測試領域,還不太清楚實際的軟體測試長什麼樣的童鞋。

2. 剛上走上測試這條路不久,接觸過一些實際項目了,但還沒“擰”上道的童鞋。

3. 做了一段時間測試,也明白了軟體測試是怎麼回事,想繼續從事測試行業,但是對前途感覺很茫然的童鞋。

4. 做了一段時間測試,感覺測試不是自己所想要的職業,仍然想在IT行業發展,但想轉行的童鞋。

如果您不屬于這其中的某一類人,或許這篇小文并不适合您,請不要浪費你的時間了,謝謝。

職業發展是個老生常談的問題,但一直都是一個很火的話題。随便翻翻,各個關于軟體測試的壇子裡,都不乏探讨軟體測試工程師職業發展的文章,為什麼我還要多寫這麼一篇呢?好吧,先來說說這篇博文的緣起:在我将近八年的職業軟體測試生涯中,遇到過不少剛剛進入測試領域的新人,也有不少做過三四年或者五六年的“老鳥”,不管做得好的還是不好的,我覺得都可以用兩個字來形容大多數人的狀态:“忙”與“茫”。前一個忙可能适合于大部分剛踏入測試領域的新人,他們興趣勃勃,對一切新鮮事物都充滿着好奇,總想學習更多的技術,參與更多的測試,好早點積累起屬于自己的測試經驗。後一個“茫”,可能更适合做了幾年測試的所謂“老鳥”,他們經曆了一些項目,也積累了不少的經驗,不管是否領悟了測試的“真谛”,他們中的大部分人都已經習慣了目前的工作狀态,成了熟練工種。或許在糾結着究竟以後的路該怎麼走,究竟是學技術還是做管理?學技術的話,什麼樣的技術學了才會讓自己在這個領域更具競争力?做管理的話,自己具備做管理的特質嗎?又或許自己根本不适合做測試?甚至于不适合做IT?可轉行的話,隐藏着巨大的機會成本,風險确實很大,用什麼樣的職業來轉行才更靠譜呢?“菜鳥”也終究有成為“老鳥“的那一天,是以這些問題是我們每個人都會遇到的,有句話說得非常好:二十歲的迷茫将導緻三十歲的恐慌,而接下來面對的是四十歲的無奈。不管你現在多少歲,如果你現在還沒有定下自己的目标,可能看到這句話都會有這樣的感覺,迷茫、恐慌和無奈,每個詞都不是什麼褒義詞,沒人想把它們放在自己的身上。正因為有這樣一些問題,這麼多的無奈,才有了這篇文章。我想通過這篇文章,和大家分享一下我這麼多年工作之中對測試職業生涯發展的思考,更重要的是,我同時還會給大家提供一些以後不做測試之後該如何華麗”轉行“的意見供大家參考,”三十六“變究竟應該怎麼變,我想這也是我這篇文章的價值所在。

本文準備分兩大部分來講不同方向的職業生涯發展之路。第一部分當然就留給那些想繼續留在測試行業發展的童鞋們,講講如果你想在測試行業繼續奮鬥下去的話,為了你的“錢途”,你應該往哪方面發展。第二部分應該算是其他文章講得較少的内容,那就是如果你幹了一段時間覺得你不願意再從事測試行業,想從一些相關的職業轉行離開測試領域,那麼請着重看這部分。

一、測試行業的職業發展之路

其實這部分是幾乎所有關于測試的職業發展文章都會探讨的部分,相信各位看官都已經耳熟能詳了。不過為了照顧本文的完整性,也便于大家比較,我也将我的經驗和觀點分享給大家,以作參考。如果有童鞋有更好的觀點,歡迎分享和探讨。

1. 技術方向

就技術方向的職業發展之路,我非常贊同之前看過的測試大牛sincky的一篇文章裡說的,如果你打定主意就想往測試技術方向去發展,做一個技術型的牛人,那擺在你面前的就隻有三條路:1. 自動化測試工程/架構師 2. 性能測試工程師 3. 行業性測試專家。你幾乎沒有其他選擇,甭管你的上司怎麼忽悠你,做手動測試大量需要勞動力也好,自動化測試現在還沒有大規模發展起來也罷,如果你隻會手動測試,并且你所測試的軟體也沒有什麼特别值得深究的方面的話,那麼可以告訴你你的測試生涯錢途堪憂,說白了也就是沒有什麼核心競争力,哪天boss們想砍人了,那你就是第一個。有些童鞋可能會說了,這個不對吧,看咱項目裡不是還是80%以上的人都是做手動的嘛,為什麼你卻說自動化/性能測試才更具有核心競争力呢?先說自動化吧,确實,就目前中國測試業的現狀來看,80%以上的IT公司裡面80%以上的測試人員都在做着黑盒的手工測試,這個假象确實麻痹了一些人,使得大家以為既然大部分人都在做着手工測試,那我也不需要去學習自動化或者性能測試了。就算很多已經實施了自動化測試的公司,也在痛苦地摸索着如何提高自動化測試的效率,如何能夠真正提高系統的性能。但不管現狀如何,很多公司也必須重視自動化測試,原因有二:1. 商業上的需要。很多公司,特别是測試外包公司,銷售們在推銷自己公司的團隊和産品的時候,測試的自動化程度都是一個重要的名額,這年頭說測試不說自動化都顯得自己“out”了,是以自動化測試能不香嗎?2. 項目需要。很多管理職位的人,如果不是做測試技術出身,都會非常迷信自動化測試的神力,把自動化測試當成測試的銀彈,戰無不用,用無不勝,是以相對來說,會比較重視自動化測試的人。對于性能測試和行業測試專家來說,那就是物以稀為貴了。真正能做好性能測試,并能夠通過性能測試結果分析出性能瓶頸,提出性能改進方案的人,寥寥無幾。行業測試專家也一樣,比如電信、醫療、ERP測試,能夠精通業務,真正能夠利用對業務的了解改進測試效率,也是數都能數出來的,你說他們的錢途用得着擔心嗎?呵呵。

好了,接下來再來說說這三個職位各需要什麼樣的具體技能吧(可能不是很全,歡迎各位看官補充)。

1.1 自動化測試工程師/架構師   

基本能力要求:

--熟悉自動化測試的理論及常用架構

--熟練使用常見的自動化測試工具并能夠根據項目實際需要選擇合适的工具或者開發相應的工具

--熟悉項目軟體架構及層次結構,能夠利用自動化測試工具或自定義的架構提高自動化測試的覆寫率和複用率

--熟悉腳本類及一到兩種常用的編譯型程式設計語言,網絡協定及linux平台

1.2 性能測試工程師

基本能力要求:

--熟悉性能測試過程模型和過程

--熟悉各種常見的應用協定

--熟悉性能測試工具的原理及使用

--能夠根據實際項目配置測試環境,選擇合适的性能測試工具或開發性能測試工具

--能夠通過對被測系統的分析,對性能測試場景進行分析和選取

--執行性能測試并根據結果分析性能瓶頸,提出性能提升改進的建議

1.3 行業測試專家

基本能力要求:

--精通某個業務性較強的行業的業務流程及關鍵技能,如醫療,通信,ERP等特征較明顯的行業。(如果你是測一般的網站或者是手機系統之類的話,還是省省吧,這個不是這裡指的行業專家)

--能夠根據對本行業業務的了解和對軟體測試的了解,對組織内的軟體測試流程和方法做出優化,提高測試效率,節省測試成本

2. 管理方向   

談完了技術,當然就該談談被無數人所追崇的管理職位了。當然了,能管别人,發号施令,誰不喜歡呢?古人雲:學而優則仕,就是這個道理。可職業發展這個金字塔上,能最終站上管理職位的那個塔尖的人又有多少呢?管理職位雖然看似很爽,很誘人,但絕不是每個人都适合做這個崗位的。也不是說你做了若幹年的技術,成了技術大牛,你就一定能去管項目管人,畢竟管理主要是跟人打交道的活,你雖然能把電

腦弄得服服帖帖,但不一定你去管人的時候,人就會服你,是以其實談到做管理,最關鍵的就不是技術了,用兩個比較時髦的詞來說,關鍵就是“溝通”和“協調”,你得會跟客戶去做溝通,你得會跟其他人去做協調,這是做管理的先決條件。如果你覺得自己不善言談,不想時時面對衆人,那兄弟你還是跳過這一節,繼續看看其他部分吧。

那麼就從做管理來說又可以有什麼樣的職位選擇呢?撇開高層管理什麼CXO的不談,就一般的管理而言,可以選擇的管理職位有兩類:

2.1 項目經理

基本能力要求:

--較高的溝通和協調能力。一方面你要能把客戶哄好了,另一方面你得牢牢取得團隊的支援,你要沒點溝通能力和協調能力,能行嗎?

--熟悉項目管理的相關知識,如果能夠取得PMP證書(項目管理師認證)是最好的,因為那至少可以證明你從理論上非常專業地學習了項目管理的基本概念,熟悉了項目管理的五大過程組及九大知識領域(詳細内容請參考相關PMP書籍),有一定的項目管理經驗,理論上是沒問題的了。

--技術方面呢,不需要你太精通技術,但作為IT行業的項目經理,我一直都認為沒有任何的技術背景其實是很難勝任這個行業的管理職位的,因為技術性确實太強,人家談論實作的時候,你啥都聽不懂,是不是挺尴尬的?關鍵是你還得做出決策。如果打個比喻來說明究竟項目經理需要掌握技術到什麼程度的話,可以用兩個詞:一平方公裡和一米。你的知識面必須得有一平方公裡寬,但這些知識的深度隻有一米。什麼都知道一點,什麼都不精,或許對做技術的人來說不是什麼好事,但如果你是做管理的,那恭喜你,兄弟,繼續幹吧。

2.2 測試經理

基本能力要求:

--參照項目經理的第一條,必須滴~~

--你不需要有特别多項目管理理論基礎及經驗,但你必須精通軟體測試的方方面面,從流程、方法、工具、架構、組織等等,你都必須了解,并最好有實際的項目經驗,能夠随時指導測試團隊的工作,對團隊裡面的問題提出一定的參考意見和解決方案,對團隊的測試流程和方法做出改進。

二、從測試行業轉行的選擇

好了,看了上面的那些測試行業本身的職業發展選擇,有的童鞋可能會感覺不蛋定了,壓力山大了,哎呀,本人天生就是程式設計白癡,書看了不少,什麼語言之類的人家說起來或者看着書上感覺都會,可自己一坐到電腦面前打開IDE就茫然,思路全無,硬是敲不進一行代碼,我怎麼可能做自動化?我怎麼發展?我從事的測試就是測測手機上的遊戲,我怎麼做行業測試專家?說溝通和協調吧,我自己都是宅男宅女,選擇性話痨,最煩跟不熟的人(客戶)多說一句話,我怎麼溝通?怎麼做管理?得,如果您是屬于這類人,其實說實話,軟體測試這個職位可能并不是您的菜,您可能還需要重新考慮一下更适合你的職位。當然我們都知道,轉行的機會成本是相當高的,本來做了三五年軟體測試,突然讓你去做醫生或者建築師,那估計誰心裡都沒底,除非您就是一天才。綜合比較來看,比較保險的辦法應該是繼續從事IT行業,但不做軟體測試,轉到比較相關的行業,再看看自己是否适合,這樣做的機會成本會低很多,風險相對較小。那麼什麼樣的職業選擇是和軟體測試相關的呢?它們又應該具備什麼樣的技術技能呢?接下來本人會為大家一一道來。當然,這些意見都是根據我自己的一些淺薄的經驗,無奈當初樓主在一些小公司被劈成幾半用的時候,除了測試外,幾乎軟體工程裡面該有的一些主要職位都做過了,如需求分析,開發,售前,售後等等,是以才會有這些結論出來,下面的内容關于能力方面的要求是最基本的,歡迎大家補充,個人見識有限,這裡權當抛磚引玉了,呵呵。

1. SQA

說到SQA,其實很多公司現在都已經跟軟體測試是一個概念了,測試人員既做QA又做QC的情況非常普遍,隻有一些規模較大,流程确實非常正規的公司還保留有專門的SQA的職位,這裡隻是權當做個參考和選擇之一。或許有不少童鞋會對QA和QC的差別心存疑惑,甚至有不少人根本不知道這是兩個不同的職業,那麼他們有什麼差別呢?我這裡随便解釋下。如果用一個比喻來形容QA和QC的關系的話,我覺得用法官和警察的關系來形容是比較貼切的。法院的法官制定法律,但他們不親自去抓罪犯,而警察呢,則依據法院制定的法律去判斷某人是否違法,是否是應該被抓捕的罪犯,并親自去把他們抓住。QA就如同法官,他們制定了一系列的流程,工作的輸入輸出,哪些文檔,如何審計測試的效率,如果改進測試流程,都是他們在掌握。而QC,就是測試人員,他們則在QA的流程下,運用各種測試的方法去抓bug,盡量減少産品的缺陷,保證産品的品質。是以SQA的工作比較适合不太喜歡親自去找bug,但喜歡從比較high level的角度去看待問題的人,說白了就是動手能力不太強,但确實對測試還比較感興趣,對各種品質理論感興趣的人。

基本能力要求:

--熟悉常見的品質控制體系及軟體項目成熟度模型等,如CMM/CMMI,6 sigma,ISO9000,RUP等等

2. 售前工程師

為什麼說測試工程師同樣也适合轉售前呢?因為測試工程師其實是最了解産品需求和産品功能的那個人,甚至他比子產品化的開發人員還了解公司的系統或者産品。在清楚系統的功能的前提下,很容易就能夠針對各種客戶的需求提出相應的解決方案,再加上如果您有較好的文字功底或者是溝通技巧,那其實售前工程師是一個相當好的轉行的方向。當然,這個職位也特别适合那些想做銷售但又上了測試這條船的童鞋,這可是一個很好的跳闆啊,呵呵。

基本能力要求:

--熟悉産品的使用及實施,能夠根據客戶的需求提出相應的解決方案

--較好的溝通和表達能力

--較強的文字功底和報告功底

3. 使用者體驗師

使用者體驗師或許還不是一個很火的職業,但根據目前和以後的軟體業的趨勢,火是必然的了。因為使用者使用産品,除了功能外,越來越重視的是使用者體驗,功能誰都有,那當然是誰的好用就用誰的了,比如最近熱得燙手的蘋果産品就是最好的例子。當然使用者注重使用者體驗了,那當然各大軟體公司就必須得重視了,自然使用者體驗師就應運而生。其實很多大公司早已有專門的使用者體驗師的職位,比如蘋果,喬布斯就可以說是蘋果的首席使用者體驗師,同樣國内的如百度,騰訊等大公司也都有,而且騰訊的馬總也是首席體驗師,任何新産品他都會親自使用并提出改進意見,由此重要性可見一斑。那麼如何又扯到跟測試這個職業相關了呢?大家想想,平時我們在做諸如易用性測試,界面UI測試等等,遇到使用者體驗不好的,或者給使用者操作帶來阻礙的東東是不是也應該算是bug呢?是以我們也可以說是對使用者體驗有足夠的了解了,隻是對使用者體驗師這個職位來說,還不是很專業罷了。那麼要成為專業的使用者體驗師,我們又應該具備什麼樣的能力呢?

基本能力要求:

--具備較豐富的UI設計經驗和較強的設計能力,并且對使用者體驗較為敏感。

--具備人機互動工程學,人體力學等專業知識,并且具備一定的使用者體驗測試經驗。

4. 需求分析工程師

其實做過測試的童鞋都應該知道,在項目裡面,除了客戶之外,可能就是測試團隊對項目需求是最了解的了。大家可以說天天都在和需求打着交道,因為需求就是我們做一些測試的依據。随着很多公司開始應用靈活模式來進行軟體開始,可能傳統意義上的需求分析工程師的數量正在減少,取而代之的是測試人員在團隊中擔當了需求分析和功能模組化的角色。但不要擔心,還是有很多公司對需求分析有專門的需求的,當然,你如果是有需求分析師證書的話,那就更好了。

基本能力要求:

--了解軟體項目需求分析過程,具備需求模組化能力及系統用例分析及設計能力,能夠使用uml模組化語言模組化。

--較強的溝通,交流及了解能力,要善于引導客戶說出真正的需求或者了解客戶真正的需求。

5. 開發工程師

這個就不說了,這個職位适合于對編碼确實感興趣的童鞋,可以考慮從測試轉開發,盡管現實中一般都是開發轉測試,你懂的,呵呵。

基本能力要求:

--代碼編寫能力較強,願意做一個碼農或者苦逼的程式猿

6. 售後及技術支援

相信每一個測試工程師測完被測系統後,你都敢拍着胸脯說,OK,我現在對這個系統的功能是最熟悉的了,哪裡最容易出問題,哪裡該注意什麼,可能對于你來說都不在話下,甚至你還可以寫出你負責測試那個子產品的使用者手冊。沒錯,這就足以說明你已經勝任售後及技術工程師的角色了,如果你确實不願意再去做測試,不妨也考慮一下這個職位。

基本能力要求:

--非常熟悉産品的各項功能及使用,并具備較強的解決問題的能力

--較強的溝通和了解能力。要跟客戶打交道的崗位,必須滴的哈。。。

7. 軟體測試教育訓練及咨詢

其實這個職位是比較适合資格較老的測試工程師,他們已經對軟體測試爛熟于心,技術能力較強,并且可以靈活變通,了解各種測試工具及方法,升職無望或者不想再從事具體的測試工作,可以考慮這個方向,并且從現在的待遇來看,教育訓練及咨詢行業的行情還是很不錯的喲,呵呵。

基本能力要求:

--精通軟體測試理論及具備一定的項目實踐經驗,熟悉各種主流工具、流程及方法等。

--較強的溝通、表達及引導能力。這條其實非常重要,你想想,在衆人面前,你講不出來,怯場,那什麼都完了。

--能夠根據企業或學員的具體情況給出理想的解決方案或教育訓練方案。

繼續閱讀