說明:本文轉自陳紹英的blog
解析測試工程師職業(yè)發(fā)展瓶頸
經過這幾年的發(fā)展,國內IT公司的測試水平有了很大的提高,但是與此同時,很多測試工程師也迎來了個人的發(fā)展瓶頸:很多人從測試工程師做到了測試經理的職位,不知道下一步如何發(fā)展;或者每天機械地從事著功能測試工作。
本文首先從分析測試工程師的發(fā)展現狀和職業(yè)化過程遇到的問題入手;接著分析什么樣的測試人員才是合格的;最后介紹測試人員的職業(yè)歷程以及如何突破自己的職業(yè)發(fā)展瓶頸。
1
測試工程師帖子解析
下面是在一些測試網站上收集的帖子,主要是一些測試工程師介紹自己的成長歷程或者對測試行業(yè)的看法。從這些帖子中,我們可以看出測試工程師職業(yè)發(fā)展遇到的一些問題。
帖子一:踏實地發(fā)展自己
我在北京工作有4年了。職業(yè)發(fā)展依次經歷了測試員-測試工程師-測試分析師-測試經理。這就是我在北京的4年測試生涯。個人對測試工作有如下的觀點:
1
)軟件測試不像一些人看起來那么簡單,需要相當深厚的技術背景。但只要掌握要領,也不像我們一些人所認為的那么困難;
2
)測試工程師和開發(fā)人員相比,可以有機會接觸更多的、不同行業(yè)的項目,是一個大的優(yōu)勢。
3
)測試工程師要想成功,更多的是靠平時的積累。不管是項目的積累,還是平時學習,兩者都至關重要。
4
)測試工程師要充分利用網絡資源,與同行們充分交流,在互相幫助和學習的氛圍中,可以加快自己成長速度。
點評:這是一位比較踏實的測試工程師,一步一個膠印地走著自己的測試之路,我們可以認為他是相對成功的典范。現實中我們很多測試工程師不是抱怨工資低,就是抱怨自己公司的測試環(huán)境不好。如果要想在測試領域走向成功,重要的秘訣就是踏踏實實地學習,認認真真地做好本職工作。
帖子二:執(zhí)著的測試工程師
我做測試工作快6年了。剛開始的時候,我是公司的第一個測試員,雖然公司也在做ISO9000,但是什么規(guī)范都得自己摸索。可是,我仍然堅持下來了,而且大有收獲,雖然在公司里不受重視。
但是隨著測試工作的不斷深入,自己對公司的主流業(yè)務(我們作的是行業(yè)軟件)從外行變成了內行。而且還發(fā)現了一些產品的設計方面的欠缺,在老板和開發(fā)主管面前樹立了自己的一些威信。至少在一些項目進行需求分析的時候,會來征求我的意見。而且,目前做到了不經測試的產品不給客戶。當然,在我和開發(fā)經理發(fā)生分歧的時候,大部分時間老板還是支持開發(fā)經理,但我認為是正確的地方還是會據理力爭的。
一句話,測試人員是孤獨的,寂寞的。但只要堅持,總能有收獲的,尤其是在發(fā)現了隱藏很深的一些BUG的時候,那種成就感和自豪感真的是一種很好的感覺。
實際上,做任何一行工作,都會遇到不公平。但為什么要去跟別人比呢,只要自己有提高,就是好的。
點評:“敢做冷板凳的人”才是勇敢的人,這位發(fā)帖子的測試工程師不但有勇氣坐了冷板凳,而且能夠堅持下來,直到取得了不錯的成績。“
實際上,做任何一行工作,都會遇到不公平。但為什么要去跟別人比呢,只要自己有提高,就是好的。
”幾句樸實無華的話說出了如何做好測試工作的真諦。
測試人員一定要給自己正確的定位,既然選擇了目前地位有些低的測試工作,就應該踏實的做好,這是走向成功的必由之路。
帖子三:好學而有信心的新手
我在一家外企作了一段時間的兼職測試,之前我從未接觸過測試。開始的時候只作一些Manual test,后來就開始做Automated test,修改原有的test cases,或者重寫一些test cases。然后test小組的leader建議我寫測試文檔,他說寫文檔有利于一個tester技術水平的提高。因為你必須要熟悉軟件項目的整體框架,洞悉軟件深層的結構才能寫出高質量的測試用例。
于是,我在網上查了一些關于測試方面的資料,發(fā)現測試真的很重要。對一個軟件項目而言,老外對軟件測試尤其重視。我兼職的這個外企是有一半的員工是測試的,大概有7、8個人。個人認為,國內的軟件企業(yè)對測試的重視程度還不夠,但是毋庸置疑,測試是軟件企業(yè)產品線上和開發(fā)同等重要的。可以預言,未來的國內軟件行業(yè),軟件測試人員可能會占據軟件團隊半數左右。同時,對測試人員的能力要求也是比較高的。
綜上,我覺得Software test很有前途。當然,這些都是一個測試新手的看法,可能比較片面,全當給大家打打氣了。
點評:可以看出這是一位很有遠見的測試工程師。現實中很多測試工程師是由于不能從事其它工作才從事測試的,因而工作中也是不斷地抱怨待遇、團隊環(huán)境等不能滿足自己的要求。在此建議測試工程師,如果選擇了這個行業(yè),就應該認真地對待工作,抱怨永遠解決不了問題。只有像這位測試工程師一樣認真分析自己的行業(yè),才可以有更好的職業(yè)化發(fā)展,否則還不如換一個自己喜歡的工作去試一試。
帖子四:郁悶而猶豫的測試工程師
我做軟件測試也有兩年多的時間了,但是在這兩年中似乎沒有太多的提高。因為都是黑盒測試,所以一般就是使用產品,最多也就是一些工具測試。可是這都是想到哪就測到哪,也沒有真正按照測試文檔執(zhí)行。公司測的東西組合情況也很多,根本沒辦法。而且公司測試流程也不規(guī)范。
剛開始沒簽約的時候,還是專職測試,簽了以后簡直就變成打雜的了。什么都要做,連一些設計文檔都推了過來,有時候還要去現場了解客戶需求,真是非常佩服老板把一個人當三個人用的能力。總的感覺在小公司里,根本就沒有測試員這個概念,測試員一般什么都得做。當你提出一堆建議的時候,老板總是會說,現在公司規(guī)模還不具備條件,以后會慢慢的改善的,可我感覺過兩年公司可能已經倒閉了。
真是有點郁悶,改行做開發(fā),又不想放棄這個被很看好的職業(yè)。可是光被看好又怎么樣呢?說不定十幾年前,掃大街的就像現在的做測試的。都是做質量保證,掃大街的要保證城市環(huán)境的質量,現在呢?他們又怎么樣?
點評:其實測試和開發(fā)一樣,都不是那么想當然的理想,國內開發(fā)環(huán)境也和測試一樣混亂。而開發(fā)人員發(fā)展到高級程序員就會成為很多人的發(fā)展瓶頸,薪資和職務都很難再提升。而測試與開發(fā)相比的一個巨大優(yōu)勢在于它是一個新興的領域,擁有更多的機會,測試人員工作三五年,再有一些管理經驗,很容易做到測試主管,雖然薪資待遇相對低些,但是給個人的長期發(fā)展打好了基礎。看準了就應該去做,實實在在的學到知識才是最重要的。
2
國內軟件測試測試工程師職業(yè)發(fā)展現狀
我們可以從兩個方面來解析測試測試工程師的職業(yè)瓶頸問題:
l
????????
從企業(yè)方面:多數企業(yè)較難招聘到滿意的測試工程師,尤其在軟件測試外包企業(yè),人才問題成了這類企業(yè)的發(fā)展瓶頸,這些恰恰反映了整個測試行業(yè)的發(fā)展遇到了瓶頸;
l
????????
從個人方面:很多測試人員薪資和職位到了一定階段就很難得到提升,例如很多測試工程師做到測試經理后,幾年內得不到提升。
職業(yè)發(fā)展尤其體現在待遇方面。下表是北京市一些
IT
企業(yè)測試工程師的月薪數據。這些數據主要從一些網站收集,由一些測試工程師發(fā)布。
職稱名
|
稅前月薪(人民幣:元)
|
備注
|
少于100人
|
100
~200人
|
200
人以上
|
初級工程師
|
1500
~2000
|
2000
~2500
|
3000
~4000
|
手工執(zhí)行功能測試,這些人通常是一年以內工作經驗的新手。
|
2000
~3000
|
2500
~3500
|
一年到兩年經驗的測試工程師,工作內容通常以功能測試為主。
|
中級工程師
|
2500
~3500
|
3000
~4000
|
2500
~3500
|
編寫并執(zhí)行測試用例,通常工作兩年以上。
|
3500
~4000
|
4000
~4500
|
3500
~4500
|
編寫并執(zhí)行測試用例,能夠使用一些測試工具。通常工作兩年以上。
|
高級工程師
|
4000
~5000
|
5000
~6000
|
6000
~7000
|
熟練使用測試工具,制定測試計劃,編寫并執(zhí)行測試用例等。工作經驗通常三年以上。
|
7000
~8000
|
能編寫自動化測試腳本與進行白盒測試工作。具有一定的開發(fā)技能。工作經驗通常三年以上。
|
測試分析師
|
4000
~5000
|
5000
~6000
|
6000
~7000
|
具有一定分析能力的高級測試工程師。工作經驗通常四年以上。
|
6000
~7000
|
7000
~8000
|
能夠設計測試方案,執(zhí)行測試并對測試結果進行全面的分析,例如性能測試分析。
|
測試組長
|
4000
~5000
|
6000
~7000
|
6000
~7000
|
帶領10人以內的測試小組執(zhí)行測試任務。
|
5000
~6000
|
7000
~8000
|
7000
~8000
|
帶領15人以內的測試小組執(zhí)行測試任務。
|
通過上面的數據,我們可以看出:
(1)
??????
企業(yè)規(guī)模越大,越重視測試,而測試人員的待遇也越高;
(2)
??????
掌握測試工具的測試人員待遇往往高于那些只能進行手工測試的工程師;
(3)
??????
測試技術越熟練,待遇越高,而具備一定領導能力的測試工程師待遇會更高些;
但是我們就整個
IT
行業(yè)來看,尤其是與開發(fā)人員相比,測試工程師的待遇顯得很低。就作者掌握的資料來看,同一級別的開發(fā)工程師要比測試工程師高
1
~
2K
(人民幣),甚至更多。
與開發(fā)人員相比,測試工程師的職業(yè)目標則很少,主要下面幾類:
l
????????
測試組長(也可稱之為測試負責人、測試經理):這類測試人員通常是測試項目負責人,既要具備較高的測試技術能力,還要具備一定的管理能力。主要職責是制定測試與編寫測試計劃、監(jiān)控和管理整個測試過程。測試組長職位之所以受青睞,是因為測試組長可以向上發(fā)展為測試部門經理、質量經理,也可以橫向發(fā)展為項目經理,因此通常待遇相對高些。
l
????????
測試分析師:主要職責是對系統(tǒng)的測試結果進行綜合的分析,例如缺陷分析、性能分析等。測試分析師不但測試技術能力較強,還要具備數據庫、操作系統(tǒng)等多方面的技術知識。這類職務的發(fā)展空間也不錯,可以發(fā)展成系統(tǒng)設計師等。
l
????????
自動化測試工程師、測試開發(fā)工程師:主要職責是編寫測試程序、執(zhí)行自動化測試任務。這類職位的測試人員至少要達到初級程序員的能力,因為經常和程序打交道。發(fā)展空間也不錯,甚至可以發(fā)展為程序員。
(在國外,這類工作多由具有開發(fā)背景的測試人員來負責。而國內的IT公司不重視測試,程序員不愿意去做待遇較低的測試工作,因此測試人員在具有一定的開發(fā)能力后,將會考慮轉行去做開發(fā)。)
但是,國內的測試人員多數在測試圈子“打轉轉”,很難進入到開發(fā)領域。多數測試人員發(fā)展成測試經理
/
高級測試工程師后,職業(yè)化幾乎到了盡頭。于是,出現了一些大企業(yè)的測試人員自己去創(chuàng)業(yè)的情形,但這種情形更是少之又少。
實際上,這一切的根本原因是由測試工程師的能力水平決定的。國內測試工程師普遍根基不牢,自然難獲得較大的發(fā)展。下面將從測試工程師的基本素質談起:只有那些基礎知識扎實、潛質較好的測試工程師才是合格的工程師。
3
測試工程師基本素質
很多年輕或者剛剛從事測試工作的工程師,經常會問:“測試工程師需要什么技能或者具有什么素質才是合格的?”與開發(fā)人員相比,測試人員不但需要一技之長,還需要掌握諸如操作系統(tǒng)、數據庫、網絡等多方面的知識。
根據作者多年的經驗,一個有競爭力的測試人員要具有下面三個方面的素質:
(1).
???????
計算機專業(yè)技能
計算機領域的專業(yè)技能是測試工程師應該必備的一項素質,是做好測試工作的前提條件。盡管沒有任何
IT
背景的人也可以從事測試工作,但是一名要想獲得更大發(fā)展空間和持久競爭力的測試工程師,計算機專業(yè)技能則是必不可少的。計算機專業(yè)技能主要包含三個方面:
l
????????
測試專業(yè)技能
現在軟件測試已經成為一個很有潛力的專業(yè)。要想成為一名優(yōu)秀的測試工程師,首先應該具有扎實的專業(yè)基礎,這也是本書的編寫目的之一。因此,測試工程師應該努力學習測試專業(yè)知識,告別簡單的“點擊”之類的測試工作,讓測試工作以自己的專業(yè)知識為依托。
測試專業(yè)知識很多,本書內容主要以測試人員應該掌握的基礎專業(yè)技能為主。測試專業(yè)技能涉及的范圍很廣:既包括黑盒測試、白盒測試、測試用例設計等基礎測試技術,也包括單元測試、功能測試、集成測試、系統(tǒng)測試、性能測試等測試方法,還包括基礎的測試流程管理、缺陷管理、自動化測試技術等知識。
l
????????
軟件編程技能
“測試人員是否需要會編程?”可以說是測試人員最常提出的問題之一。實際上,由于在我國開發(fā)人員待遇普遍高于測試人員,因此能寫代碼的幾乎都去做開發(fā)了,而很多人則是因為做不了開發(fā)或者不能從事其它工作才“被迫”從事測試工作。最終的結果則是很多測試人員只能從事相對簡單的功能測試,能力強一點的則可以借助測試工具進行簡單的自動化測試(主要錄制、修改、回放測試腳本)。
軟件編程技能實際應該是測試人員的必備技能之一,在微軟,很多測試人員都擁有多年的開發(fā)經驗。因此,測試人員要想得到較好的職業(yè)發(fā)展,必須能夠編寫程序。只有能給編寫程序,才可以勝任諸如單元測試、集成測試、性能測試等難度較大的測試工作。
此外,對軟件測試人員的編程技能要求也有別于開發(fā)人員:測試人員編寫的程序應著眼于運行正確,同時兼顧高效率,尤其體現在與性能測試相關的測試代碼編寫上。因此測試人員要具備一定的算法設計能力。依據作者的經驗,測試工程師至少應該掌握
Java
、
C#
、
C++
之類的一門語言以及相應的開發(fā)工具。
l
????????
網絡、操作系統(tǒng)、數據庫、中間件等知識:
與開發(fā)人員相比,測試人員掌握的知識具有“博而不精”的特點,“藝多不壓身”是個非常形象的比喻。由于測試中經常需要配置、調試各種測試環(huán)境,而且在性能測試中還要對各種系統(tǒng)平臺進行分析與調優(yōu),因此測試人員需要掌握更多網絡、操作系統(tǒng)、數據庫等知識。
在網絡方面,測試人員應該掌握基本的網絡協議以及網絡工作原理,尤其要掌握一些網絡環(huán)境的配置,這些都是測試工作中經常遇到的知識。
操作系統(tǒng)和中間件方面,應該掌握基本的使用以及安裝、配置等。例如很多應用系統(tǒng)都是基于
Unix
、
linux
來運行的,這就要求測試人員掌握基本的操作命令以及相關的工具軟件。而
WebLogic
、
Websphere
等中間件的安裝、配置很多時候也需要掌握一些。
數據庫知識則是更應該掌握技能,現在的應用系統(tǒng)幾乎離不開數據庫。因此不但要掌握基本的安裝、配置,還要掌握
SQL
。測試人員至少應該掌握
Mysql
、
MS Sqlserver
、
Oracle
等常見數據庫的使用。
作為一名測試人員,盡管不能精通所有的知識,但要想做好測試工作,應該盡可能地去學習更多的與測試工作相關的知識。
(2).
???????
行業(yè)知識
行業(yè)主要指測試人員所在企業(yè)涉及的行業(yè)領域,例如很多
IT
企業(yè)從事石油、電信、銀行、電子政務、電子商務等行業(yè)領域的產品開發(fā)。行業(yè)知識即業(yè)務知識,是測試人員做好測試工作的又一個前提條件,只有深入地了解了產品的業(yè)務流程,才可以判斷出開發(fā)人員實現的產品功能是否正確。
很多時候,軟件運行起來沒有異常,但是功能不一定正確。只有掌握了相關的行業(yè)知識,才可以判斷出用戶的業(yè)務需求是否得到了實現。
行業(yè)知識與工作經驗有一定關系,通過時間即可以完成積累。
(3).
???????
個人素養(yǎng)
作為一名優(yōu)秀的測試工程師,首先要對測試工作有興趣:測試工作很多時候都是顯得有些枯燥的,因此熱愛測試工作,才更容易做好測試工作。因此,除了具有前面的專業(yè)技能和行業(yè)知識外,測試人員應該具有一些基本的個人素養(yǎng),即下面的“五心”。
專心:主要指測試人員在執(zhí)行測試任務的時候要專心,不可一心二用。經驗表明,高度集中精神不但能夠提高效率,還能發(fā)現更多的軟件缺陷,業(yè)績最棒的往往是團隊中做事精力最集中的那些成員。
細心:主要指執(zhí)行測試工作時候要細心,認真執(zhí)行測試,不可以忽略一些細節(jié)。某些缺陷如果不細心很難發(fā)現,例如一些界面的樣式、文字等。
耐心:很多測試工作有時候顯得非常枯燥,需要很大的耐心才可以做好。如果比較浮躁,就不會做到“專心”和“細心”,這將讓很多軟件缺陷從你眼前逃過。
責任心:責任心是做好工作必備的素質之一,測試工程師更應該將其發(fā)揚光大。如果測試中沒有盡到責任,甚至敷衍了事,這將會把測試工作交給用戶來完成,很可能引起非常嚴重的后果。
自信心:自信心是現在多數測試工程師都缺少的一項素質,尤其在面對需要編寫測試代碼等工作的時候,往往認為自己做不到。要想獲得更好的職業(yè)發(fā)展,測試工程師們應該努力學習,建立能“解決一切測試問題”的信心。
“五心”只是做好測試工作的基本要求,測試人員應該具有的素質還很多。例如測試人員不但要具有團隊合作精神,而且應該學會寬容待人,學會去理解“開發(fā)人員”,同時要尊重開發(fā)人員的勞動成果——開發(fā)出來的產品。
案例:測試人員首先要學會尊重自己
軟件測試人員首先應該尊重自己的勞動成果——軟件缺陷報告。我見過很多測試人員都不能清晰地描述一個軟件缺陷,尤其分不清缺陷跟蹤系統(tǒng)中Summary和Description的區(qū)別,例如圖2-2中的軟件缺陷描述——Summary和Description中就輸入了完全一樣的內容。
嚴格的講,Summary通常用于概要性地描述軟件缺陷內容或者發(fā)生問題時的現象,主要用于項目經理進行缺陷分配,因此要用最簡短、精悍的語言來描述是什么缺陷,使項目經理很快明白是什么問題、應該分配給哪個開發(fā)人員;而Description則用來描述缺陷的詳細信息,通常描述缺陷的重現步驟,主要供開發(fā)人員修改缺陷時候查看。圖2-3就是一個非常規(guī)范的軟件缺陷描述。
軟件缺陷報告是測試人員最直接的勞動成果,因此應該認真地描述自己所提交的每一個軟件缺陷,這也是尊重自己勞動成果的一種表現。缺陷描述不清晰,不但將會增加溝通成本,更重要的是不會得到開發(fā)人員的認可與尊重。測試人員在為開發(fā)人員的成果——產品找問題的同時,也要保證自己的成果沒有問題。
因此,作為測試人員首先要學會清晰、準確地報告一個缺陷,這將是與開發(fā)人員互相贏得對方尊重的開端,也是尊重自己的表現。試想,如果自己都不愛惜自己的勞動成果,那別人如何會尊重你的成果呢?
|
圖
1
不規(guī)范的軟件缺陷報告
圖
2
規(guī)范的軟件缺陷報告
4
軟件測試職業(yè)展望
實際上,測試工程師如果按照前面的要求打好基礎,職業(yè)前景是非常廣闊的。我們可以借鑒一下國外測試工程師的職業(yè)發(fā)展歷程,很多時候,國內的軟件都是跟著國外的發(fā)展趨勢,測試行業(yè)也一樣,國外至少比國內起步早
15
到
20
年。
與國外的專業(yè)測試工程師相比,國內測試工程師突出特點是晉升非常快,
2-3
年可能走完了國外
10
年的路。實際上有很多測試(部)經理也就
2
到
3
年的工作經驗,而在國外,測試工程師很多至少會有
5
年以上的開發(fā)經驗。在國外,通常測試工程師會經過下面的職業(yè)發(fā)展歷程:
1
.初級測試工程師
主要是計算機相關專業(yè)的本科生或具有一些手工測試經驗的個人,主要工作內容是開發(fā)測試腳本并開始熟悉測試生存周期和測試技術。我們國內的大多數工程師都在這個水平上,這也是我們軟件質量上不去的一個重要原因。
2
.測試工程師
/
程序分析員
具有
1-2
年經驗的測試工程師或程序員,主要職責是編寫自動測試腳本程序并擔任測試編程初期的領導工作,進一步拓展編程語言、操作系統(tǒng)、網絡與數據庫方面的技能。國內的高級測試工程師的水平比這個級別還要略低些。
3
.高級測試工程師
/
程序分析員
具有
3-4
年經驗的測試工程師或程序員。幫助開發(fā)或維護測試或編程標準與過程,負責同級的評審,并為其它初級的測試工程師或程序員充當顧問。繼續(xù)拓展編程語言、操作系統(tǒng)、網絡與數據庫方面的技能。其能力相當于國內的測試負責人。
4
.測試組負責人
具有
4-6
年經驗的測試工程師或程序員。負責管理
1
至
3
名測試工程師或程序員。擔負一些進度安排和工作規(guī)模
/
成本估算職責。更集中于技能方面。
5
.測試
/
編程負責人
具有
6-10
年經驗的測試工程師或程序員。負責管理
8
至
10
名技術人員。負責進度安排、工作規(guī)模
/
成本估算、按進度表和預算目標交付產品。負責開發(fā)項目的技術方法。為一些用戶提供支持與演示。開發(fā)一些特定領域的技術專長。
6
.測試
/
質量保證
/
開發(fā)(項目)、經理
具有
10
多年的工作經驗。管理
8
名或更多的人員參加的
1
個或多個項目。負責這一領域(測試
/
質量保證
/
開發(fā))內的整個開發(fā)生存周期業(yè)務。為一些用戶提供交互和大量演示。負責項目成本、進度安排、計劃和人員分工。
7
.計劃經理
具有
15
年以上開發(fā)與支持(測試
/
質量保證)活動方面的經驗。管理從事若干項目的人員以及整個開發(fā)生存周期。負責把握項目方向與盈虧責任。
國內測試工程師早期的發(fā)展和國外有些類似,基本遵循從初級測試工程師到中級、高級測試工程師,再從測試負責人到測試經理。但是接下來就很難提升,很少有測試工程師發(fā)展成為
IT
企業(yè)的技術總監(jiān),主要原因就是技術能力不夠。
5
小結
測試工程師要想突破職業(yè)發(fā)展瓶頸,就應該充分了解各個職業(yè)發(fā)展階段的技能要求,并在每個階段打好基礎。職業(yè)瓶頸往往是個人能力達不到要求的直接體現,因此測試工程師應該按照“五心”的要求發(fā)展自己,尤其要充滿信心!
最后送各位測試同行一句:打好基礎,不斷學習!唯有學習才能永遠不敗!
?
?
?