1. 程式人生 > >軟體測試,如何月薪過萬?

軟體測試,如何月薪過萬?

月薪過萬這個話題,在現在這個百花齊放的職場裡是個很流行的命題。

月薪過萬對於行業大佬來說,可能是個不屑一顧的追求,但對於職場新人而言通常是個很實際的人生目標。

我怎麼樣能達到月薪過萬呢,其實嚴格來說,要找到一份滿足你薪資期望的工作有三個要素:

  • 個人提升
  • 求職技巧
  • 你所在的地域

做為一個悶騷IT技術宅,我最能回答的主要是第一點:怎麼進行個人提升,畢竟功夫到家才是硬道理。

軟體測試從業人員可能都有這樣一種感受,就是幹這一行你要會的東西太多了,說的通俗一點就是知識庫龐雜。

在這個資訊爆炸的時代,我們可以學習的東西太多了,看起來很多東西都能實現個人價值的提升。比如去學一本駕照,比如去學游泳,學健康養生。。。

測試工程師學什麼?

我個人會把測試工程師的學習提升路線分為四條主線:

  • 測試技術
  • 行業知識
  • 職場能力
  • 管理技能

在不同的路線上去深化,會引領你走上不同的職業發展道路。

第一:先說測試技術,大致羅列一下,測試工程師需要學習的東西:

  •  測試理論
    • 測試基礎
    • 測試方法論
    • 測試思維
    • 基於經驗測試
    • 靜態測試
    • 單元測試
  •  工具技術
    • 作業系統知識
    • 伺服器相關技術
    • 資料庫技術
    • 基礎測試工具
    • 效能測試工具
    • 介面測試工具
    • 安全性測試工具
  •  程式設計技術
    • 指令碼程式設計技術
    • 白盒技術
    • 自動化程式設計技術
    • 測試開發技術

首先是測試的理論,有的人可能做了幾年測試,積累了一些經驗,就對這方面樣的知識有些瞧不起了。其實我個人認為,理論始終是指導實踐的最堅實基礎。

做測試我們可以在工具、技能上面不斷的雕琢,但其實測試的基礎同樣也是需要我們不斷鑽研的東西。

要學會從巨集觀的高度去看待測試工作:

測試的最終目的是交付高質量的產品;

產品的質量需求又是由專案性質決定;

測試工作不能脫離團隊而存在;

測試如何服務於產品質量把控和風險緩解;

客戶想要的究竟是怎樣的產品特性和功能;

一個缺陷的背後,揭示的是怎麼樣的過程問題;

要學會從微觀的角度去切入測試工作:

對於複雜的測試目標,有哪些方法論可以幫助我實現測試;

對於模糊的質量定義,我怎麼挖掘其真實需求;

發現了問題,我怎麼去對他進行分類和定位;

測試的資料怎麼設計才能達到足夠的覆蓋;

測試用例怎麼編排描述才能達到最好的效果;

如何進行反饋才能讓發現的問題得到最有效的解決;

測試基礎和理論就像一個俠客的內功,無論你的劍耍得有多六,最終決勝負還是要靠內力。

再說測試工具,做為IT從業人士,工具的使用可能是個人能力的最直接體現,是一種很外露的本事。

軟體測試這個行業所涉及的領域非常廣泛,從行業的角度來說,現在幾乎所有行業都要上IT系統,連冰箱都要聯網了。涉及行業的廣泛,決定了我們在工作中可能用到的工具也種類繁多。

同時,軟體產品質量的維度也非常的多,功能性、安全性、互操作性、負載、壓力、易用性、相容性、可維護性、可移植性等等等等。每一種質量的維度可能都有最適合去應用的一些工具。

還有一些作業系統級別和基礎應用級別的工具,比如資料庫,比如linux,比如JDK,中介軟體,我們也要去掌握。他們是我們開展測試工作必不可少的(你遲早會用到)工具。

在一定程度上,學會了一種工具,就意味著你測試工作的領域就被拓寬了一點,很自然的這會是你升職加薪的有效砝碼。

不過在工具的學習上,還是有一些策略可以去應用的。不要被所謂工具的‘高大上’和‘酷炫感’這樣的特性吸引,盲目去學習那些看起來很厲害,實際應用價值和範圍卻不大的工具。

不管是從升職加薪的角度而言,還是自我提升的角度而言,我們應該優先去學習市場應用面廣的,最有用有實際價值的工具。人的精力和時間都是有限的,從最有用的學起,切忌好高騖遠。先把基礎的常用的工具學好,慢慢再去學習高階工具是一個最優策略。

而且工具這個東西,其實是觸類旁通的,等你學好了一部分工具,另外看起來高階的那些說不定對你來說就已經很容易了,無非是去體驗他的實際應用場景而已。

最後呢,學習工具不要只停留在應用級別,即不要只會用,要知其然知其所以然。工具的操作流程,不如他實現的原理對你來說更有價值。

接下來是程式設計技術,其實很多理論裡把測試程式設計技術也歸為工具的使用,不過我們把他單拿出來說。

也許有一些測試工程師其實是因為不愛寫程式碼才做了測試這行,但是要在測試技術領域深化下去,程式設計技能又是不可或缺的。

是不是很糾結。

測試工程師的程式設計能力到底有什麼用處呢?總結一下主要在以下方面:自動化測試、指令碼程式設計,白盒/單元測試以及測試開發。

自動化測試是現在比較火的一個領域,不必多說。學些自動化測試程式設計,我們的目標應該不單單是應用,更應該深化到框架的編寫。

指令碼程式設計是指令碼語言的應用,比如shell指令碼和windows批處理這類工作控制語言,許多IT專案會很依賴這類指令碼去做工作自動化控制,比如CI環境部署。

掌握程式設計知識同樣也會幫助我們去完成白盒/單元測試這樣的任務。如果我們在程式設計能力和測試能力雙向深入發展,測試開發是一個很好(薪水也很高)的發展方向。

一個前提要說到的就是,測試工程師的程式設計技術門檻是比較低的。我們在學習程式碼編寫以應用到測試工作時,一開始其實不需要多深入。

比如做為一個測試工程師去學習自動化程式設計,入門級級別來說,我們只用學習現有自動化工具和類庫的使用,其實學習難度並沒有想象的那麼高。

隨著學習的深入,當你有了更高的追求,再進一步去在程式設計領域內深造是個不錯的選擇。比如上文提到的去寫框架,去改進框架,去引領一個機構的自動化測試。

學好了這些技術,不管是綜合發展還是專項深造,我們的職業發展路線會向技術型深入。比如成為自動化測試工程師,效能測試工程師,白盒測試工程師又或者是安全測試專家等。這些職位比起測試基礎崗而言,薪資水平是有著顯著上升的。

第二:是行業知識

IT歸根結底屬於第三產業,第三產業是什麼?通俗一點來講就是服務業。IT產業是為其他基礎行業服務的,最終我們要完成的事情是讓傳統的事務處理IT化,自動化,網路化。

這就牽扯到一個問題,不論我們做怎麼樣的專案、系統或軟體,他的最終應用會是在另一個與計算機體系無關的領域,比如金融,比如零售,比如醫療,等等。

做為IT從業人員,除了本行的計算機應用技術以外,這些行業的知識就成為了我們需要學習掌握的第二學科。

將行業理解的透徹,是另一條IT人員必點的技能樹,對於軟體測試而言尤其如此。因為做為專案的測試和質量把控,我們只有非常瞭解軟體應用的領域,才能更好的幫助我們對專案質量進行把關;而軟體測試傾向的使用者立場,也要求我們必須能夠以專業的角度去衡量我們的產品在專有領域的適用程度。

比如在金融領域,真的要做好這一行的測試,財務領域知識、基金會計技能有的時候可能比你的測試技術更為重要。畢竟如果不精通這一領域的東西,你可能連繫統到底要怎麼實現使用者/市場需求都把握不準,更不要提很好的把控產品的質量了。其他領域也各自都有不同程度的對行業知識的要求。

當然,有的時候測試工程師可能會有這樣的經歷,自己就像個僱傭兵,在數個專案之間來來回回,根本沒有固定在某一個行業領域當中。客戶要什麼系統,我們就去測什麼系統,在數個不同領域之中輾轉徘徊、淺嘗輒止,根本沒有時間讓我在某個領域中間去沉澱。

這是一種現實情況,在這種情況下,你對於某個行業的積累仍然可以幫助到你,但是你卻很難成為該領域的專家。

不過如果你有機會在某個領域的測試工作中穩定下來的話,我會更推薦你去在這樣的領域內深入,將測試技術和行業知識雙向發展。

當測試工程師有了足夠深入的某行業領域專業知識和技能以後,那麼我們的發展方向就可以是‘領域測試專家’和‘領域測試諮詢’。這樣的人才在該行業內,一定是非常受歡迎的,高薪當然不成問題。

第三:是職場能力

職場能力可以說是一種個人素質和綜合能力。

不論我們有多好的測試技術和行業知識,都需要有強大的職場能力去輔助,我們才能將自己的專業能力更好的發揮出來,否則別說當大牛拿高薪,可能工作能不能保得住都難說。

職場能力有哪些呢,我歸納了一下:

  • 溝通能力
  • 自律能力
  • 學習能力
  • 思考能力
  • 抗壓能力
  • 規劃能力
  • 時間觀念
  • 團隊精神
  • 善於思考
  • 承擔責任

溝通能力:自不用說,測試工程師可能在一個IT團隊裡是溝通任務最重的,也是最需要溝通能力的。我們的測試工作強依賴著其他工作團隊的產出,所以我們不但要溝通,還要會溝通;其次,我們測試工程又承擔著專案質量反饋和過程改進的作用,這又要求我們要把測試結果和結論進行很好的溝通。測試人員不能不講究溝通,溝通技能的差別是關係到我們團隊地位和個人評價的非常重要的因素。

自律能力、時間觀念和用於擔當放到一起說,都是一個人責任感的體現。我們不鼓吹放棄自己應有的生活和娛樂,一心一意撲在工作上,做測試崗位上的勞模。但是在你分內的工作時間內,我們要盡心盡責的去做好本職工作,做自己該做的事情,該擔當的責任要用於擔當,捨得奉獻。用自己的目標鞭策自己,不管你是為了養家餬口還是自我實現。進一步說,要主動去發現工作中的樂趣,幹一行愛一行,切忌眼高手低。

學習和思考能力:要求我們有好的學習和思考意識,也要掌握好的方法論。IT行業不斷髮展,新興領域不斷湧入對我們的行業產生衝擊,都要求我們必須肯學而且能學,在學習和工作中勤於獨立思考,善於發現問題,總結問題,提出解決方案。創新能力則是學習和思考能力的一個進階體現。

規劃能力:測試基礎工作說起來是由一些很繁雜的事項組成的。即使你的職位在測試路線上越走越遠,你仍然擺脫不了一定程度上的雜事。所以這就要求我們有系統的規劃能力,測試新人在剛入行的時候可能會覺得,細心細緻對於測試這樣一個‘找問題’的工種而言可能是最重要的素質,其實系統的規劃能力才是我們做事的必備技能。即使是天生不夠細心細緻的人,通過有效的系統規劃,也可以避免我們因為粗枝大葉而犯下錯誤,並且可以幫助我們對繁雜的工作事項和物件進行抽絲剝繭,把握主線,幫我們更為輕鬆高效無紕漏的完成工作。

抗壓能力:做IT做測試,免不了會有工作上的壓力,不管是工作時長上的,還是工作成果上的。要學會抗壓,遇到挫折時不能輕易氣餒,完成成果時戒驕戒躁。也要學會判斷壓力是否合理,加班的壓力合理嗎?領導的質疑合理嗎?要學會科學的判斷,科學的應對。其實相較而言,測試崗位的壓力其實算是中等水平,不要被工作壓垮,否則又何談升職加薪。

第四:是管理能力

對於測試工程師來說,隨著經驗的積累和在這個行業的深入,轉做管理崗可能是我們每個人都會去思考的一個方向。

當領導當然有很多好處,比如地位的上升,比如薪資的上漲--特別是在薪資的上限上,做管理和純做技術還是有著明顯差別的。

要做測試管理,除了有相應的機遇之外,當然我們個人在管理能力上也要做好準備。

我將測試管理能力劃分為三個維度,分別是:

  • 測試組織能力
  • 測試技術能力
  • 團隊管理能力

測試組織能力讓我們學會怎麼去組織,策劃,實施,監控和彙報一個測試專案。讓我們能把測試這個工程給完成好,也要讓他很好的完成風險管控、質量反饋和過程改進的作用。

測試技術能力讓我們做為測試的管理人員瞭解技術在測試活動中的應用場景和機會,讓我們有能力去把控一個測試工程對於技術的引入和使用。也需要我們有相應的技術能力,去指導具體技術在工程裡的使用,說起來其實還是需要我們在第一點:測試技術上面下功夫。

團隊管理能力是與人打交道的能力,對上溝通,對下管理,團隊建設,團隊提升,管理團隊內部各種各樣的人才,讓他們能為你所用。這也是一門專門的學問。

學習好了管理能力,再遇到適合的機遇,我們就可以去向測試lead,測試經理,測試主管方向發展。

當然其實一旦你做到管理崗,後續的可能性就要增大很多,高管的機會大門就將向你敞開。取決於個人的把握,其實最後成為CTO,部門經理,VP都是有可能的,當然他就不屬於測試崗位的直接進階了。

以上我們說到的四個方向,大部分都不是獨立存在的,在實際應用的場景中更多的是交織在一起,形成一個測試人員的能力體系。他們之中可以有側重,這些能力上的側重指引就我們的職業方向。

比如說在測試技術方面加重投入,我們的方向可能是測試技術專家和技術專項領域;

測試技術和管理能力雙修,那麼可能的方向可以是測試架構師,測試lead;

測試技術和行業知識雙修,那麼又可以成為領域測試專家。