這兩天一篇阿裡、京東縮招的新聞刷爆了朋友圈,兩家公司也都出來辟謠沒有這回事。不管縮招是不是真的,這個行業變化快是真的,要求越來越高也是真的,在這樣的大背景下,未來測試崗位将何去何從,測試工程師該如何規劃好自己的職業生涯,快速成長,成了很多工程師困惑的點。
有這麼個普遍現象
測試招聘者,特别是一、二線網際網路公司的招聘者最苦惱的事兒就是招人。想找到一個合适的人難于上青天,每天各種撒網,履歷看幾百份,面大幾十人,能撈到一個中意的小夥伴就謝天謝地了。
但同時很多測試小夥伴發現找工作很難,特别是進大一點的廠,他們特别挑:代碼要會寫,要有軟體架構能力,問一大坨平時根本用不到的技術問題,還挑經驗,挑溝通能力,挑這挑那,有時候還特麼挑學曆、挑年齡。。。
供求總難以比對起來,造成了雙方都很痛苦。
Why?
能力要求不比對是最核心的問題。
軟體、網際網路近20年來飛速成長,其實也經曆了很多階段:
行業軟體興盛階段和外包興盛階段(2000-2010年)行業進入了大量的測試人員,當時最主流的測試實踐是:重心放在系統驗收階段。測試人員的主要工作基本都投入在了基于業務的黑盒測試上,對代碼能力、系統了解的能力要求不多。
2010年後,網際網路行業的真正興起讓國内軟體開發模式開始緩慢調頭,快速疊代的模式逐漸興起,開發周期越來越短,疊代越來越快,但系統越來越越龐大、複雜。
原來的測試工作模式和工作範圍越來越無法滿足要求了。但大量從業人員技能範圍轉變是一件很難的事情,行業是有巨大慣性的。從宏觀上看大量 QA 技能轉變跟不上需求轉變是造成市場供求不比對的主要原因。
So What?
三個觀點:
隻做手工測試,不懂系統實作的測試工程師的職業發展會越來越受限;
能夠轉型成适應市場需求的同學将在近幾年的時間獲得超額回報(因為市場供不應求,企業不得不擡高價格來尋找這樣的人);
對于個體來說,自我成長永遠最重要,自己永遠要對自己的發展負責,别依賴外部環境,自己想辦法變成市場的香饽饽才靠譜。
到底什麼樣的人搶手?
測試的底子-項目經驗
有比較複雜系統的測試實戰經驗,你就超過了50%以上的應聘者。
什麼叫做比較複雜系統呢?投入50人年開發出來的系統就可以稱作一個複雜系統了。是以,複雜系統并不是很罕見。但是,如果你隻接觸一個簡單的子產品,甚至隻是測試一個穩定子產品的維護性開發,而不是通盤了解,不能說是測試過複雜系統。有從頭到尾接觸一個完整項目的經曆很寶貴。
測試的底子-基礎知識
對照三本書:《ISTQB基礎教程》 《進階軟體測試設計》 《進階軟體測試管理》(後兩本是 ISTQB 的進階認證教程)。這裡邊的内容你都能熟練應用(真的是熟練應用,而不隻是有概念),你就能超過80%以上的應聘者了。
面試過數百人,我經常會問幾個問題:
如果測試時間不夠,你會怎麼辦?
如果讓你去測試一個你完全不熟悉的系統,你會怎麼辦?
你平時會使用那些測試設計方法?
看似很稀松平常的問題,非常考驗人。因為大部分從業者都沒有經受過系統訓練和學習,工作多年,依然技能不足,意識跑偏。
熟練使用一門主語言
滿足這條,你就超過了70%的應聘者。
什麼叫做熟練呢?拿 Java 來說吧:
系統學習過Java的教程,高頻面試50題 這樣的題可以自測一下,可以回答上35個以上;
熟悉最主流的 Spring 架構,能夠寫出一個簡單的網站,實作基礎的Restful 服務;
讀懂過一個測試架構,如 mockito 或者 Junit 的源碼;能夠熟練實施接口測試(基于一些測試架構 如:rest-assured+Junit );
能夠讀懂開發的業務代碼,對他們的代碼進行 Code Review;
對一門語言有比較深入了解
滿足這條,你就超過了90%的應聘者。
什麼叫有深入了解呢?還拿 Java 來說吧:
熟練使用 Java 的常見 API;
深入了解基于語言特性/系統特性的知識,如 Collections的實作機制、類型系統、I/O、網絡、多線程等;
熟知設計模式(廣義範圍的設計模式,不局限于 GOF 的設計模式);
熟悉 JVM 的工作模式;熟練使用調試排查工具解決性能問題;熟練掌握市面上常見的腳手架;熟練掌握周邊知識( OPs 相關,網絡知識相關)有不錯的實戰開發經驗(做過真正被生産檢驗的東西);
對于測試開發,AOP,Java 位元組碼技術是很重要的知識。。。
這是一個很長的學習 list,需要幾年時間來養成。做到這點,其實你可以勝任普通的開發崗位了,這也是進階測試開發崗位的技術底子。
在一個領域知識有不錯的了解
人不可能什麼都懂,但工作幾年之後,會在工作的域内一定要有積累才行。
例如,你測試一個核心電商系統的交易子產品三年了
業務上你一定要熟練講出來:商品清單、購物車、下單、退單、廢單、支付、發貨、庫存、退款、優惠使用等等一坨業務流程,和可能出現的常見的坑(各類問題産生的資損、各類問題産生的服務不可用、邏輯沖突),不然根本無法展現你經驗沉澱和深入思考;
技術角度上,你要能夠畫得出來系統的互動圖,熟悉最核心的接口和最核心的參數,能夠讀懂開發的代碼,熟練使用 trace 和監控工具,診斷定位線上問題到代碼行。
用技術保障品質的能力
測試開發崗一定會問到一個問題:你能夠舉一個你用技術手段提高測試效率,增強測試能力的例子麼?
這是面試時最大的一個坎。 很多人會講一些自動化測試回歸的例子,但是真正成功的例子非常少,因為為什麼做,怎麼做都沒有想好就照網上一個教程攢了一個,結果變成了玩具。
做好自動化,不僅僅是會使用工具、架構,其實要對被測物特性,軟體生命周期有很深的了解并且有很強的開發知識才行。實際上,在環境、CI、資料、測試用例生成、資料比對的很小的一些點上,都能有不錯的提效産出,從這些點能夠做得好,會得到不錯的加分。
有一個不錯的成功案例,你勝出的幾率就超過了80%,沒有短闆,就十拿九穩了。
技能以外的東西- 實戰案例
以前的工作印證了你的能力。
能夠講清楚一件特别拿得出手的工作,證明你能力的案例是面試時候最有用的投名狀。
技能以外的東西 - 你的個人特質
一般有如下特質會大大加分:快速學習、系統性學習、學以緻用、系統性思考、強大的推動力、技術思維、突出的溝通能力、條理性、抗壓性、樂觀精神、抗挫折能力、迅速調整的能力、疊代改進的意識、ownership、團隊合作、願景和規劃。
這些特性展現人的核心,有強大核心的人,做什麼都行,技能暫時不足,也一定能補足。是以,在招聘的時候往往對是否錄用的判斷起決定性作用。
(文章來源于霍格沃茲測試學院)
更多優秀内容及資料可點選擷取