一個8年軟件測試工程師的經驗分享——軟件測試工程師必看

混跡於測試行業這麼長時間了,一直想寫一篇關於軟件測試的經驗分享的文章,但苦於工作原因遲遲未下筆。最近終於有了些閒餘時間,遂決定把自己的心路歷程及所感所想記錄下來,與各位同行共勉。
軟件測試究竟是做什麼的呢?
軟件測試是爲了發現錯誤而執行程序的過程。或者說,軟件測試是根據軟件開發各階段的規格說明和程序的內部結構而精心設計一批測試用例(即輸入數據及其預期的輸出結果),並利用這些測試用例去運行程序,以發現程序錯誤的過程。
簡而言之就是證明程序的正確性,檢察系統是否滿足用戶需求,發現bug,證明程序有錯。(劃重點:找bug不是改bug哦~)

軟件測試前景又如何?
• 軟件測試工程師行業前景好、職業壽命長:根據相關招聘網站發佈的最新一期的IT職場人氣排行榜,其中軟件測試工程師、高級程序員、產品項目經理等高薪職位進入"三甲",成爲IT就業市場最新風向標。隨着項目經驗的增加,項目從業經驗越久經歷的項目越豐富,就更具有核心競爭力。
•軟件測試工程師職業空間大、發展方向多元化:頂測科技所培養的軟件測試人員不僅僅侷限於通信及互聯網、應用軟件二大行業,在金融及其他行業都佔有一定的比量,行業範圍非常廣。同時由於工作的特殊性,測試人員不但需要對軟件的質量進行檢測,而且對於軟件項目的立項、管理、售前、售後等領域都要涉及。向上可以發展成爲測試經理、質量經理,橫向可以發展成爲項目經理等。
好了說完了軟件測試的概念和前景該說說自身了。
自我定位
在踏入軟件測試行業的前幾年,不少測試人員會陷入迷茫期,主要是對職業發展方向不清晰。網上很多談軟件測試人員職業發展方向及核心競爭力的文章,也確實能爲各位測試同行提供不錯的建議。作爲一名軟件測試從業者,也曾迷茫過,準確的說直至2016年才真正找準自我定位,在此就“自我定位”這個話題談談自己的一些看法。

筆者曾接觸不少測試同行,偶爾會聽到測試人員抱怨沒有得到應有的認可,主要體現在以下幾個方面:
1、被人覺得測試工作沒有技術含量,相比開發,測試更像是一門體力活。
2、測試人員缺乏相關的技術背景,慢慢形成了有事找開發的工作模式。
3、大部分測試人員只專注於工作的完成度,缺乏更深度的思考和總結,比如如何提高測試效率、如何對業務進行連貫性總結等。

以上三點,提到了兩個關鍵詞,“技術”和“業務”。結合《google軟件測試之道》及看法,把測試人員的定位區分如下。
功能測試:理論上說,該定位的測試人員應該是對業務需求理解最透徹的羣體,專注於用戶角度的測試,組織整體質量實踐,分析測試運行結果,驅動測試執行。當然除了業務技能過硬,常用的測試工具也是必須掌握的。
功能測試人員下一階段的的發展軌跡一般是測試經理崗位,因爲很多公司的測試經理並不要求具備很強的技術能力,測試經理更看重的是協調溝通、統籌全局、目標管理、執行管理等能力。
性能測試:相比功能測試人員,性能測試人員對業務的理解相對沒那麼深入,其更偏向於技術的運用及數據分析,目的是找出系統瓶頸。性能測試是一個缺口比較大的崗位,最大的原因是由於對測試人員要求較高,市面上的優秀人才相對較少。我們不妨看看拉勾、獵聘、boss直聘等招聘網站對性能測試人員的常見要求。
1、對經驗尤爲看重,一般要求3年以上的性能測試經驗。
2、熟練掌握主流的性能測試工具,Jmeter、LR等。
3、掌握操作系統、數據庫、網絡知識等。
4、能夠獨立規劃和組織性能測試,搭建性能測試環境;能夠設計性能測試場景,分析性能問題,定位系統瓶頸。
結合自身的工作經歷及調研,筆者整理了性能測試需具備的技能,歡迎各位同行拍磚。
安全測試:提到這個崗位,估計很多童鞋也只是遊離於“安全”兩字的字面理解。但筆者想說的是,安全測試是異常複雜的,一個專業的安全測試專家在某種程度上來說就是一個全棧工程師,需具備以下專業素養(部分內容引用《爲什麼不推薦去做安全測試工程師》《致測試同仁們:讓我們一起做安全測試吧》)。
1、要使用別具一格的視角來審視需要測試的軟件。
2、要改變測試中模擬的對象。
3、使用專用的測試工具。
4、瞭解安全漏洞的原理。
5、瞭解安全漏洞的測試方法及防範知識。
6、掌握上圖中“性能測試主要技能”的相關知識。
筆者畢竟不是從事安全測試崗位的工作,以上理解也可能存在偏差,歡迎相關童鞋指正。
測試開發:工作重心在可測試性和通用測試基礎框架上,編寫單元測試框架和自動化測試框架,關注質量的提升和測試覆蓋率,持續集成實施等。除了具備業務技能,不同崗位對技術要求也不一樣。

測試架構師:可以說該崗位屬於測試人員職業發展金字塔的頂端了,這也是筆者努力的方向。關於測試架構師所需具備的專業素養,有興趣的童鞋可以拜讀一下《一個測試架構師工作心得》這篇文章。總而言之,萬丈高樓平地起,作爲一名軟件測試人員,只有不斷的學習、積累,才能邁向金字塔頂端。
另外,除了以上描述的發展定位,筆者經過多年的思索,感悟出了一套測試人員價值理論,越往上,價值越大,當然收入也會越高^_^,希望能對各位同行的發展有所幫助。
1、基本技能,編寫案例,發現bug等。每一個軟件測試人員必須具備的,毋庸置疑。
2、識別盲點,發現深層次的問題。這一層次更看重的是個人經驗及思維方式,工作1年和工作5年的測試員對同一需求理解的深度和廣度肯定有差距。
3、發現痛點,提升團隊效率。該層次更多是能站在團隊角度思考,通過分析團隊痛點,整合資源來改善團隊工作模式,提升測試效率。筆者在文章《如何使用Jmeter提高接口測試效率》中提到的工作方法正是從提升團隊效率角度出發。
4、建立個人品牌,授人予漁,愚教於樂。該層次的人在某個領域已經具備了比較深度的知識體系,其通過博客、雲課堂、線下培訓等渠道面向大衆傳授知識,並掙取一定的費用,從而實現職業與財富自由。
5、創新,整合資源,改善行業工作的方式。單憑個人的能力很難達到該層次,所以往往是指某些公司或組織。比如現在盛行的各類雲測平臺、DevOps等。
廣而不精,未能形成知識體系
很多測試人員喜歡在簡歷上寫着精通各類測試工具,比如Jmeter、selenium、robot framework等,結果面試的時候,自己卻只能卻只能遊離於工具框架的基本使用,並沒有深入去了解工具的精髓,這就是我們所講的廣而不精。
一切工具的運用說到底是爲了提高效率和保證質量,測試行業很推崇自動化測試,下面就以jmeter爲例,來闡述如何建立知識體系。

在開展這個話題前,我們先來簡單說說有名的GROW模型,筆者的知識體系建立也是以該模型爲基礎。
G(Goal setting):目標。
R(Reality Check):現狀分析。
O(Options):解決方案。
W(Way Forward):行動計劃。
16年跳槽到新公司後,本人確定了一個目標,那就是在測試組建立一體化測試管理體系(自動化測試+缺陷管理+案例管理集成)。通過對測試組工作內容(後臺接口測試)及工作方式(傳統手工測試)的分析,在對比postman、jmeter、soupui等接口測試工具的優劣勢後,最終敲定使用jmeter作爲測試組的自動化測試工具,主要原因是Jmeter支持外部jar包的方法調用,而筆者剛好有一定的java基礎。依賴於jmeter提供的csv data config功能,我們採用數據驅動測試的模式,但是很快就碰到難題了,那就是jmeter的察看結果樹對每個請求都是單獨展現的,如果同時執行上百條測試案例,檢查結果對測試人員來說無疑是個噩夢,於是,筆者致力於解決該問題,並把Jmter+jira+Testlink進行集成,最終我們形成了以下的測試體系。
一體化測試管理體系的建立僅是筆者推廣半自動化測試的開始,結合docker、moutebank等技術,筆者搭建了持續集成環境,進一步提升了迴歸測試的效率,同時高效地進行質量監控。
以上筆者的經歷更像一張橫向的知識網,因爲其中用到jenkins、docker、moutebank、java編程等,還需要花更多的精力去深入學習,當每項技能都能掌握到一定深度,才能稱爲一個完整的知識體系。
軟件測試學習交流扣扣羣:747981058

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章