軟體測試工程師的“三十六變”
其實這篇博文是寫出來想給大家分享一下測試工程師的職業發展的,顯然是老話題了,因此我假設本文的目標讀者為:
- 想進入軟體測試領域,還不太清楚實際的軟體測試長什麼樣的童鞋。
- 剛上走上測試這條路不久,接觸過一些實際專案了,但還沒“擰”上道的童鞋。
- 做了一段時間測試,也明白了軟體測試是怎麼回事,想繼續從事測試行業,但是對前途感覺很茫然的童鞋。
- 做了一段時間測試,感覺測試不是自己所想要的職業,仍然想在IT行業發展,但想轉行的童鞋。
如果您不屬於這其中的某一類人,或許這篇小文並不適合您,請不要浪費你的時間了,謝謝。
職業發展是個老生常談的問題,但一直都是一個很火的話題。隨便翻翻,各個關於軟體測試的罈子裡,都不乏探討軟體測試工程師職業發展的帖子,為什麼我還要多寫這麼一篇呢?好吧,先來說說這篇博文的緣起:在我將近八年的職業軟體測試生涯中,遇到過不少剛剛進入測試領域的新人,也有不少做過三四年或者五六年的“老鳥”,不管做得好的還是不好的,我覺得都可以用兩個字來形容大多數人的狀態:“忙”與“茫”。前一個忙可能適合於大部分剛踏入測試領域的新人,他們興趣勃勃,對一切新鮮事物都充滿著好奇,總想學習更多的技術,參與更多的測試,好早點積累起屬於自己的測試經驗。後一個“茫”,可能更適合做了幾年測試的所謂“老鳥”,他們經歷了一些專案,也積累了不少的經驗,不管是否領悟了測試的“真諦”,他們中的大部分人都已經習慣了目前的工作狀態,成了熟練工種。或許在糾結著究竟以後的路該怎麼走,究竟是學技術還是做管理?學技術的話,什麼樣的技術學了才會讓自己在這個領域更具競爭力?做管理的話,自己具備做管理的特質嗎?又或許自己根本不適合做測試?甚至於不適合做IT?可轉行的話,隱藏著巨大的機會成本,風險確實很大,用什麼樣的職業來轉行才更靠譜呢?“菜鳥”也終究有成為“老鳥“的那一天,所以這些問題是我們每個人都會遇到的,有句話說得非常好:二十歲的迷茫將導致三十歲的恐慌,而接下來面對的是四十歲的無奈。不管你現在多少歲,如果你現在還沒有定下自己的目標,可能看到這句話都會有這樣的感覺,迷茫、恐慌和無奈,每個詞都不是什麼褒義詞,沒人想把它們放在自己的身上。正因為有這樣一些問題,這麼多的無奈,才有了這篇文章。我想通過這篇文章,和大家分享一下我這麼多年工作之中對測試職業生涯發展的思考,更重要的是,我同時還會給大家提供一些以後不做測試之後該如何華麗”轉行“的意見供大家參考,”三十六“變究竟應該怎麼變,我想這也是我這篇文章的價值所在。
本文準備分兩大部分來講不同方向的職業生涯發展之路。第一部分當然就留給那些想繼續留在測試行業發展的童鞋們,講講如果你想在測試行業繼續奮鬥下去的話,為了你的“錢途”,你應該往哪方面發展。第二部分應該算是其他文章講得較少的內容,那就是如果你幹了一段時間覺得你不願意再從事測試行業,想從一些相關的職業轉行離開測試領域,那麼請著重看這部分。
一、測試行業的職業發展之路
其實這部分是幾乎所有關於測試的職業發展文章都會探討的部分,相信各位看官都已經耳熟能詳了。不過為了照顧本文的完整性,也便於大家比較,我也將我的經驗和觀點分享給大家,以作參考。如果有童鞋有更好的觀點,歡迎分享和探討。
- 技術方向
就技術方向的職業發展之路,我非常贊同之前看過的測試大牛sincky的一篇文章裡說的,如果你打定主意就想往測試技術方向去發展,做一個技術型的牛人,那擺在你面前的就只有三條路:1. 自動化測試工程/架構師 2. 效能測試工程師 3. 行業性測試專家。你幾乎沒有其他選擇,甭管你的領導怎麼忽悠你,做手動測試大量需要勞動力也好,自動化測試現在還沒有大規模發展起來也罷,如果你只會手動測試,並且你所測試的軟體也沒有什麼特別值得深究的方面的話,那麼可以告訴你你的測試生涯錢途堪憂,說白了也就是沒有什麼核心競爭力,哪天boss們想砍人了,那你就是第一個。有些童鞋可能會說了,這個不對吧,看咱專案裡不是還是80%以上的人都是做手動的嘛,為什麼你卻說自動化/效能測試才更具有核心競爭力呢?先說自動化吧,確實,就目前中國測試業的現狀來看,80%以上的IT公司裡面80%以上的測試人員都在做著黑盒的手工測試,這個假象確實麻痺了一些人,使得大家以為既然大部分人都在做著手工測試,那我也不需要去學習自動化或者效能測試了。就算很多已經實施了自動化測試的公司,也在痛苦地摸索著如何提高自動化測試的效率,如何能夠真正提高系統的效能。但不管現狀如何,很多公司也必須重視自動化測試,原因有二:1. 商業上的需要。很多公司,特別是測試外包公司,銷售們在推銷自己公司的團隊和產品的時候,測試的自動化程度都是一個重要的指標,這年頭說測試不說自動化都顯得自己“out”了,所以自動化測試能不香嗎?2. 專案需要。很多管理職位的人,如果不是做測試技術出身,都會非常迷信自動化測試的神力,把自動化測試當成測試的銀彈,戰無不用,用無不勝,所以相對來說,會比較重視自動化測試的人。對於效能測試和行業測試專家來說,那就是物以稀為貴了。真正能做好效能測試,並能夠通過效能測試結果分析出效能瓶頸,提出效能改進方案的人,寥寥無幾。行業測試專家也一樣,比如電信、醫療、ERP測試,能夠精通業務,真正能夠利用對業務的瞭解改進測試效率,也是數都能數出來的,你說他們的錢途用得著擔心嗎?呵呵。
好了,接下來再來說說這三個職位各需要什麼樣的具體技能吧(可能不是很全,歡迎各位看官補充)。
1.1 自動化測試工程師/架構師
基本能力要求:
–熟悉自動化測試的理論及常用框架
–熟練使用常見的自動化測試工具並能夠根據專案實際需要選擇合適的工具或者開發相應的工具
–熟悉專案軟體架構及層次結構,能夠利用自動化測試工具或自定義的框架提高自動化測試的覆蓋率和複用率
–熟悉指令碼類及一到兩種常用的編譯型程式語言,網路協議及Linux平臺
1.2 效能測試工程師
基本能力要求:
–熟悉效能測試過程模型和過程
–熟悉各種常見的應用協議
–熟悉效能測試工具的原理及使用
–能夠根據實際專案配置測試環境,選擇合適的效能測試工具或開發效能測試工具
–能夠通過對被測系統的分析,對效能測試場景進行分析和選取
–執行效能測試並根據結果分析效能瓶頸,提出效能提升改進的建議
1.3 行業測試專家
基本能力要求:
–精通某個業務性較強的行業的業務流程及關鍵技能,如醫療,通訊,ERP等特徵較明顯的行業。(如果你是測一般的網站或者是手機系統之類的話,還是省省吧,這個不是這裡指的行業專家)
–能夠根據對本行業業務的瞭解和對軟體測試的瞭解,對組織內的軟體測試流程和方法做出優化,提高測試效率,節省測試成本
- 管理方向
談完了技術,當然就該談談被無數人所追崇的管理職位了。當然了,能管別人,發號施令,誰不喜歡呢?古人云:學而優則仕,就是這個道理。可職業發展這個金字塔上,能最終站上管理職位的那個塔尖的人又有多少呢?管理職位雖然看似很爽,很誘人,但絕不是每個人都適合做這個崗位的。也不是說你做了若干年的技術,成了技術大牛,你就一定能去管專案管人,畢竟管理主要是跟人打交道的活,你雖然能把電
腦弄得服服帖帖,但不一定你去管人的時候,人就會服你,所以其實談到做管理,最關鍵的就不是技術了,用兩個比較時髦的詞來說,關鍵就是“溝通”和“協調”,你得會跟客戶去做溝通,你得會跟其他人去做協調,這是做管理的先決條件。如果你覺得自己不善言談,不想時時面對眾人,那兄弟你還是跳過這一節,繼續看看其他部分吧。
那麼就從做管理來說又可以有什麼樣的職位選擇呢?撇開高層管理什麼CXO的不談,就一般的管理而言,可以選擇的管理職位有兩類:
2.1 專案經理
基本能力要求:
–較高的溝通和協調能力。一方面你要能把客戶哄好了,另一方面你得牢牢取得團隊的支援,你要沒點溝通能力和協調能力,能行嗎?
–熟悉專案管理的相關知識,如果能夠取得PMP證書(專案管理師認證)是最好的,因為那至少可以證明你從理論上非常專業地學習了專案管理的基本概念,熟悉了專案管理的五大過程組及九大知識領域(詳細內容請參考相關PMP書籍),有一定的專案管理經驗,理論上是沒問題的了。
–技術方面呢,不需要你太精通技術,但作為IT行業的專案經理,我一直都認為沒有任何的技術背景其實是很難勝任這個行業的管理職位的,因為技術性確實太強,人家談論實現的時候,你啥都聽不懂,是不是挺尷尬的?關鍵是你還得做出決策。如果打個比喻來說明究竟專案經理需要掌握技術到什麼程度的話,可以用兩個詞:一平方公里和一米。你的知識面必須得有一平方公里寬,但這些知識的深度只有一米。什麼都知道一點,什麼都不精,或許對做技術的人來說不是什麼好事,但如果你是做管理的,那恭喜你,兄弟,繼續幹吧。
2.2 測試經理
基本能力要求:
–參照專案經理的第一條,必須滴~~
–你不需要有特別多專案管理理論基礎及經驗,但你必須精通軟體測試的方方面面,從流程、方法、工具、框架、組織等等,你都必須瞭解,並最好有實際的專案經驗,能夠隨時指導測試團隊的工作,對團隊裡面的問題提出一定的參考意見和解決方案,對團隊的測試流程和方法做出改進。
二、從測試行業轉行的選擇
好了,看了上面的那些測試行業本身的職業發展選擇,有的童鞋可能會感覺不蛋定了,壓力山大了,哎呀,本人天生就是程式設計白痴,書看了不少,什麼語言之類的人家說起來或者看著書上感覺都會,可自己一坐到電腦面前開啟IDE就茫然,思路全無,硬是敲不進一行程式碼,我怎麼可能做自動化?我怎麼發展?我從事的測試就是測測手機上的遊戲,我怎麼做行業測試專家?說溝通和協調吧,我自己都是宅男宅女,選擇性話癆,最煩跟不熟的人(客戶)多說一句話,我怎麼溝通?怎麼做管理?得,如果您是屬於這類人,其實說實話,軟體測試這個職位可能並不是您的菜,您可能還需要重新考慮一下更適合你的職位。當然我們都知道,轉行的機會成本是相當高的,本來做了三五年軟體測試,突然讓你去做醫生或者建築師,那估計誰心裡都沒底,除非您就是一天才。綜合比較來看,比較保險的辦法應該是繼續從事IT行業,但不做軟體測試,轉到比較相關的行業,再看看自己是否適合,這樣做的機會成本會低很多,風險相對較小。那麼什麼樣的職業選擇是和軟體測試相關的呢?它們又應該具備什麼樣的技術技能呢?接下來本人會為大家一一道來。當然,這些意見都是根據我自己的一些淺薄的經驗,無奈當初樓主在一些小公司被劈成幾半用的時候,除了測試外,幾乎軟體工程裡面該有的一些主要職位都做過了,如需求分析,開發,售前,售後等等,所以才會有這些結論出來,下面的內容關於能力方面的要求是最基本的,歡迎大家補充,個人見識有限,這裡權當拋磚引玉了,呵呵。
- SQA
說到SQA,其實很多公司現在都已經跟軟體測試是一個概念了,測試人員既做QA又做QC的情況非常普遍,只有一些規模較大,流程確實非常正規的公司還保留有專門的SQA的職位,這裡只是權當做個參考和選擇之一。或許有不少童鞋會對QA和QC的區別心存疑惑,甚至有不少人根本不知道這是兩個不同的職業,那麼他們有什麼區別呢?我這裡隨便解釋下。如果用一個比喻來形容QA和QC的關係的話,我覺得用法官和警察的關係來形容是比較貼切的。法院的法官制定法律,但他們不親自去抓罪犯,而警察呢,則依據法院制定的法律去判斷某人是否違法,是否是應該被抓捕的罪犯,並親自去把他們抓住。QA就如同法官,他們制定了一系列的流程,工作的輸入輸出,哪些文件,如何審計測試的效率,如果改進測試流程,都是他們在掌握。而QC,就是測試人員,他們則在QA的流程下,運用各種測試的方法去抓bug,儘量減少產品的缺陷,保證產品的質量。所以SQA的工作比較適合不太喜歡親自去找bug,但喜歡從比較high level的角度去看待問題的人,說白了就是動手能力不太強,但確實對測試還比較感興趣,對各種質量理論感興趣的人。
基本能力要求:
–熟悉常見的質量控制體系及軟體專案成熟度模型等,如CMM/CMMI,6 sigma,ISO9000,RUP等等
- 售前工程師
為什麼說測試工程師同樣也適合轉售前呢?因為測試工程師其實是最瞭解產品需求和產品功能的那個人,甚至他比模組化的開發人員還了解公司的系統或者產品。在清楚系統的功能的前提下,很容易就能夠針對各種客戶的需求提出相應的解決方案,再加上如果您有較好的文字功底或者是溝通技巧,那其實售前工程師是一個相當好的轉行的方向。當然,這個職位也特別適合那些想做銷售但又上了測試這條船的童鞋,這可是一個很好的跳板啊,呵呵。
基本能力要求:
–熟悉產品的使用及實施,能夠根據客戶的需求提出相應的解決方案
–較好的溝通和表達能力
–較強的文字功底和報告功底
- 使用者體驗師
使用者體驗師或許還不是一個很火的職業,但根據當前和以後的軟體業的趨勢,火是必然的了。因為使用者使用產品,除了功能外,越來越重視的是使用者體驗,功能誰都有,那當然是誰的好用就用誰的了,比如最近熱得燙手的蘋果產品就是最好的例子。當然使用者注重使用者體驗了,那當然各大軟體公司就必須得重視了,自然使用者體驗師就應運而生。其實很多大公司早已有專門的使用者體驗師的職位,比如蘋果,喬布斯就可以說是蘋果的首席使用者體驗師,同樣國內的如百度,騰訊等大公司也都有,而且騰訊的馬總也是首席體驗師,任何新產品他都會親自使用並提出改進意見,由此重要性可見一斑。那麼如何又扯到跟測試這個職業相關了呢?大家想想,平時我們在做諸如易用性測試,介面UI測試等等,遇到使用者體驗不好的,或者給使用者操作帶來阻礙的東東是不是也應該算是bug呢?所以我們也可以說是對使用者體驗有足夠的瞭解了,只是對使用者體驗師這個職位來說,還不是很專業罷了。那麼要成為專業的使用者體驗師,我們又應該具備什麼樣的能力呢?
基本能力要求:
–具備較豐富的UI設計經驗和較強的設計能力,並且對使用者體驗較為敏感。
–具備人機互動工程學,人體力學等專業知識,並且具備一定的使用者體驗測試經驗。
- 需求分析工程師
其實做過測試的童鞋都應該知道,在專案裡面,除了客戶之外,可能就是測試團隊對專案需求是最瞭解的了。大家可以說天天都在和需求打著交道,因為需求就是我們做一些測試的依據。隨著很多公司開始應用敏捷模式來進行軟體開始,可能傳統意義上的需求分析工程師的數量正在減少,取而代之的是測試人員在團隊中擔當了需求分析和功能建模的角色。但不要擔心,還是有很多公司對需求分析有專門的需求的,當然,你如果是有需求分析師證書的話,那就更好了。
基本能力要求:
–瞭解軟體專案需求分析過程,具備需求建模能力及系統用例分析及設計能力,能夠使用uml建模語言建模。
–較強的溝通,交流及理解能力,要善於引導客戶說出真正的需求或者理解客戶真正的需求。
- 開發工程師
這個就不說了,這個職位適合於對編碼確實感興趣的童鞋,可以考慮從測試轉開發,儘管現實中一般都是開發轉測試,你懂的,呵呵。
基本能力要求:
–程式碼編寫能力較強,願意做一個碼農或者苦逼的程式猿
- 售後及技術支援
相信每一個測試工程師測完被測系統後,你都敢拍著胸脯說,OK,我現在對這個系統的功能是最熟悉的了,哪裡最容易出問題,哪裡該注意什麼,可能對於你來說都不在話下,甚至你還可以寫出你負責測試那個模組的使用者手冊。沒錯,這就足以說明你已經勝任售後及技術工程師的角色了,如果你確實不願意再去做測試,不妨也考慮一下這個職位。
基本能力要求:
–非常熟悉產品的各項功能及使用,並具備較強的解決問題的能力
–較強的溝通和理解能力。要跟客戶打交道的崗位,必須滴的哈。。。
- 軟體測試培訓及諮詢
其實這個職位是比較適合資格較老的測試工程師,他們已經對軟體測試爛熟於心,技術能力較強,並且可以靈活變通,瞭解各種測試工具及方法,升職無望或者不想再從事具體的測試工作,可以考慮這個方向,並且從現在的待遇來看,培訓及諮詢行業的行情還是很不錯的喲,呵呵。
基本能力要求:
–精通軟體測試理論及具備一定的專案實踐經驗,熟悉各種主流工具、流程及方法等。
–較強的溝通、表達及引導能力。這條其實非常重要,你想想,在眾人面前,你講不出來,怯場,那什麼都完了。
–能夠根據企業或學員的具體情況給出理想的解決方案或培訓方案。
好了,我能想到的就這麼多了。顯然題目比較誇張了,這裡給出大家的職業發展選擇遠遠沒有“三十六行”那麼多,但我想應該能夠給到大家一些新的idea,至少我很少看到有人寫到關於非軟體測試行業本身應該有哪些比較“靠譜”的職業選擇的。其實早就想把這篇文章寫出來,現在終於如願了。不管怎麼說,我都希望各位看官能夠在看完本文後,不管你仍然選擇奮戰在測試戰線上也好,還是準備轉行也好,都能夠對自己將來的職業發展有一點點的想法和方向,那麼我覺得你就沒有浪費這麼三五分鐘看完本文,我就沒有浪費那麼三五個小時完成本文,呵呵。當然,我也希望藉由這篇短文,大家可以談談自己心目中理想的職業發展方向,畢竟我們都不是高帥富,有個好的職業生涯發展是每個人都希望的事。