





當前受疫情影響,互聯網行業盈利困難,以往的持續快速增長變得不可持續,這個狀態可能會持續數年,直到疫情能完全被控制住。我們現在能感知到各行業的賺錢困難,互聯網企業也不例外,會同時影響到測試行業,會對測試工程師的崗位要求更高,性能測試,測試開發(自動化測試)等會成為測試工程師的必備技能,因此性能測試崗位未來的需求肯定會比以往更多,更大。除了一部分新生行業(區塊鏈、自動駕駛等)衍生出的新崗位需求外,還有大量崗位是普通測試工程師要求具備性能測試技能的場景。


從當前IT行業中,性能測試在整個測試領域中的需求量還蠻大的,尤其各個企業,對高級性能測試工程師的需求,都是求賢如渴的狀態。并且,性能測試工程師的薪資也是上漲的趨勢。




現在企業按cpu、帶寬流量收費,然后互聯網人群瞬間并發壓力大,一般中小型公司,都會要求軟件項目有做系統的性能測試。但是是否配備專門的性能測試崗位要看公司的具體情況,一般來說,有6-8人的測試團隊,至少會配備一名專門的性能測試人員,反正可能是兼職崗位,一般由資深的測試工程師兼任,或開發自己完成。專職性能測試工程師要掌握的要求技能不算高,屬于入門門檻較低的崗位(相比于測試去做自動化、測試開發等崗位)。具備性能測試工程師經驗能力,首先你要掌握理解性能測試的概念,然后你要會熟練使用一種壓測工具(能滿足需求即可,可以是Loadrunner、Jmeter等,甚至是自研的都可以)
然后工具會用后相當于能完成性能測試壓力模擬,后面就可以分層了,初中級性能工程師,只需要將性能測試結果整理匯報出來即可,可以和開發一起分析結果,資深一點的,針對不同場景數據問題,可以分析的更透徹一點,不影響性能測試的執行。


這是一個好問題,也是一個很”深奧”的問題。
當前的企業,針對性能工程師崗位,分為兩類: ① 大企業有專門的性能測試工程師:專門負責企業產品的性能測試。 ② 小企業/初創公司:沒有專門的性能測試工程師,都是測試工程師來兼職做產品的性能測試。 這就導致了一個問題: 非專職/專業的人來做專職的事情,必定會得到不專業的結果。
我們都知道,用戶是否喜歡用這個產品,除了產品的操作功能是否簡單、界面視覺是否好看外, 最重要其中一點就是響應時間。
響應時間的快慢,不僅體現在代碼上,還有數據庫、服務器、緩存、隊列,甚至與整個架構的合理性等。
所以,專項性能測試的人員需要掌握的技能,我給分為三類:
① 性能基礎:性能基礎知識,TPS,QPS,ResponseTime,吞吐量,并發度,并發用戶等;
② 技術棧:架構流程、開發語言(java)、數據庫(MySQL/MOngoDB)、緩存(Redis)、操作系統(CentOS)、監控(Promethues)、中間件(Tomcat)、隊列(Kafka)…
③ 業務需求:任何性能腳本的設計,都是來源于業務方/運維方的需求。
這也是側面反映出,為什么大企業對高級性能測試工程師的求賢如渴。




具備性能測試能力,就是這個公司可能沒有專門配備性能測試工程師,但是還是有一些業務場景是需要做性能壓測執行的(需要由專業的性能測試工程師完成),這個能力簡單說就是你只要掌握壓測工具的使用、結果的匯總報告即可,性能測試崗相當于是專職的性能測試人員,要求會更多一些,多的這部分,他并不一定具備很高的開發水平,多出的這部分,是他的測試數據匯總分析,問題定位這部分(當然,基本的壓測場景腳本能做出來,這個也是比較初級的要求)。


首先,針對企業來說,想要招來的員工都是全棧測試開發工程師;但是,現實總是相反的。
招聘自動化測試,同時兼顧性能測試:也就是說,這個性能測試不是主要的,但是,又要了解一點性能測試的基礎知識,例如:什么是TPS、吞吐量、響應時間、并發等。有沒有在項目中實踐,以及項目的規模,最后的性能測試結果,都不是很重要。
主要招聘性能測試工程師:這對應聘者的要求就很高了,需要具備的能力,
① 知識儲備:一定是我上面說的那些技能(至少包含70%~80%);
② 性能分析:只會設計腳本,不會性能分析的工程師,不能獨當一面;
③ 實戰經驗:沒有實戰經驗,再多的理論都白搭;
④ 流量/產品影響力:性能測試,流量為王。




在公司做性能測試,看公司具體情況,如果系統完全在內網,服務器都是相對獨立的,對帶寬、硬件資源沒有特殊要求,可能沒有太多流程,直接測試即可。
如果公司硬件服務器同時部署了多個跨部門服務,應用軟件有外網交互,這些就可能需要具體分析,找出對外的影響點,因為性能測試對帶寬、硬件開銷是比較大的,需要較平時使用占用更多的資源,需要提前對這些資源的主管部門進行報備,詢問壓測影響(時間段),一般是和運維部門溝通壓測事項。
然后至于基本的測試數據制造這些,一般由測試人員自己完成,不熟悉系統的,需要對應開發進行配合完成。


性能測試上到老板,下到員工,橫跨 產品、架構、開發、測試、運維 整個部門都需要配合。
因為涉及到跨部門合作,所以,性能測試的流程一定是規范的,詳細的,但是又稍微的”繁瑣”的,具體流程如下:
業務學習→需求分析→工作評估→性能模型→性能方案→評審→準備環境/設計腳本→性能監控→執行測試→調優/缺陷管理→分析問題→解決/驗證問題→性能報告/結果。




發現性能瓶頸時,總體來說,要能分析出來瓶頸在哪個位置,這個位置越詳細越好。
舉例子,系統瓶頸,要能區分是應用瓶頸,還是數據庫瓶頸。數據庫瓶頸,是在應用數據庫,還是緩存數據庫,應用數據庫瓶頸,是哪個操作,哪個SQL引起,能做到區分到這些,你基本上就是一個符合一名中級性能測試工程師水平了。
如果還能進一步分析到具體原因,舉例子,應用瓶頸,是哪個應用(一般性能壓測,一個系統可能由數10個應用提供服務)。
要做到這些,一般來說要了解整個系統的運行部署架構,同時了解系統的開發語言和依賴中間件,還有配套DB。了解系統業務業務場景的執行,會做哪些事情,比如點擊登錄,前端會將用戶賬號密碼發給web服務器,web服務器會將賬號密碼發給應用服務器,應用服務器會執行登錄邏輯,去對應db檢索用戶信息,要能了解這個流程,同時能掌握對應系統的開發語言則更優。然后掌握一些常用的Linux系統瓶頸定位,數據庫瓶頸定位,這些是必須的,也是比較容易的(比如系統CPU、IO高,交換分區內存不足等常見問題分析定位)


測試過程中,如果會做性能定位,這是拉開性能測試等級的一個分界點,性能定位分析需要具備能力:
①業務壓力場景;
②系統架構流程;
③服務部署流程;
④監控服務:應用、緩存、數據庫、日志監控等;
⑤操作系統(CentOS);
⑥數據庫;
⑦開發語言:java/C/Python/Go等。




所有最終性能問題,都是開發解決,這個固然沒錯。但是舉例子,如果一個性能測試工程師能快速指出性能問題所在,把問題點直接拋出來的時候,你給別人的感覺是不是不一樣。舉例子壓測出現性能瓶頸,經過你分析,你指出是某個SQL慢引起,經過排查,是某個表的查詢沒有命中索引導致,你能發出這個結果到群里,和你只能發出有性能瓶頸的結果,哪個對你的升職加薪更有利一目了然。
所以我們測試工程師還是要提高技術水平,在做性能測試時,能給更多更專業的測試結果,對你自身的工作加薪升職幫助是很大的。


在整個系統鏈路中,涉及到代碼級/架構級,就需要開發同學來調試; 但是,涉及到網絡、資源配置、操作系統、數據庫等問題,可能就需要運維、DBA等人員參與; 當然,在整個調優過程中,測試人員需要:確定問題瓶頸,協助開發定位分析、以及驗證調優結果。
貫穿到整個性能流程,測試人員需要承擔的工作:業務學習,需求理解(業務級/架構級),方案設計、策略制定、性能模型設計、腳本設計、數據準備、腳本執行、瓶頸定位及分析、驗證調優的結果、測試報告編寫及風險預估。




可以算是個性能測試名詞,和傳統意義的性能測試沒有區別,全鏈路說通俗點就是全面場景的性能測試,就是完整的業務場景的性能測試(不在是某個單一的接口壓測,或者單一的功能壓測),這個全,是指要業務功能場景要覆蓋全,這樣能更真實的模擬用戶對系統的實際壓力,能看出整個業務運行時,所有相關依賴系統的壓力。至于測試方法,和普通性能測試沒有差別,主要就是場景疊加要全,注意這一點滿足需求即可。


“全鏈路性能測試”從概念提出到落地實踐,也有些年了,也被業界稱為 “核武器”。但是,真正能做起來的,也就是屈指可數的那些大廠了。
相比于傳統性能測試,全鏈路壓測主要是在線上進行,并不是說全鏈路性能測試不能在線下做,只是在綜合考量后,線下做的價值并不高。 在這,也例舉幾個不同點:
業務項 | 全鏈路性能測試 | 傳統性能測試 |
---|---|---|
業務流程改造 | 必須要做 | 不需要 |
流量平臺搭建 | 必須要做 | 不需要 |
基礎數據改造 | 必須要做 | 不需要 |
壓力流量改造 | 必須要做 | 不需要 |




之前我有相關視頻課,介紹普通測試人員,如何向專項測試工程師轉型(點擊鏈接可直達 ),性能測試相對來說是入門門檻較低。對編程技術沒有太高的要求,能掌握基本的壓測工具使用,理解接口,和掌握接口壓測腳本開發即可,這塊可以參考一些性能測試入門的基本課程即可。


有幾點可以參考,也是根據初級→中級→高級路線來規劃的:
(1) 知識儲備:
① 掌握性能基礎知識:TPS、QPS、響應時間、吞吐量;
② 學習Linux系統,如:各種操作命令,IO/Disk/CPU/Mem/Network等知識;
③ 學習性能測試工具的使用:Jmeter、LoadRunner、Locust等等;
④ 學習MySQL/MongoDB/Redis/Tomcat等知識及操作;
⑤ 學習各個應用服務:數據庫應用,Java應用,緩存應用
⑥ 學習性能模型,方案設計;
(2) 項目實戰: 最快的成長方式,就是在項目中歷練自己,所以,如果有項目讓你參與,一定要去。
(3) 網站學習: 有專業的老師講解,會讓你在學習過程中躲避很多坑,達到事半功倍的效果。




一般來說,企業人數達到一定規模,測試人員數量大于10個以上,這時候可能會需要一名或多名專職性能測試工程師。性能測試相對于其他專項測試工程師不同,技術上來說它是通吃的,無論你是什么行業,你掌握了性能測試,都能適應。說簡單點,無論你的后臺服務是go,還是java,還是。Net,或者公司是互聯網、或者是區塊鏈,都不影響你的性能測試執行,因為你只需要掌握最基本的目標,就是模擬大量客戶端訪問對應服務端,產生真實壓力即可,無需關注其他。
這也是性能測試是入門門檻低,適用性廣的原因,不像自動化,可能有api自動化、gui自動化、還有安卓和ios,每個都不一樣,都夠你折騰研究好幾年。


互聯網行業對性能測試的要求相對較高,尤其大廠的產品:手淘、京東、美團、拼多多等; 不同行業,對性能技術的差別主要體現在:
①技術棧能力:讀代碼,編寫性能腳本,搭建服務,監控服務,優化等;
②負載測試、容量測試、異常場景測試、穩定性測試。




測試工程師向上的發展空間,無外乎2條路,測試技術專家,或測試管理。 測試管理,一般也都是會從測試人員中挑選更多測試經驗的同事,性能測試工程師一般來說晉升測試管理崗位,優勢會比普通工程師更大,畢竟掌握了一門專項測試技能。
因此,相比較普通工程師而已,性能測試工程師的晉升發展空間就大很多了,既可以做測試技術專家,也可以做測試管理崗位,畢竟你是具備較高測試專業技能的。 然后性能測試做多了,精通了,慢慢轉型測試開發(或開發),也不是沒有這個可能,總之得行動起來,嘗試起來。


性能測試工程師的未來發展方向,可以分為三個:業務路線、技術路線、管理路線。
業務路線:有QA經理、業務專家、產品經理、行業咨詢專家等;
技術路線:自動化測試工程師,性能工程師,測試開發全棧工程師,性能培訓講師;
管理路線:測試開發主管,測試開發經理,測試開發總監。

看過本次專題后,小伙伴們對性能測試有新的認識了么?還有什么想要補充的知識或是有什么問題都可以在下方評論區交流~
有關性能測試工程師的現狀,在51Testing軟件測試2022軟件測試行業現狀調查問卷中也有體現,感興趣的小伙伴,戳這里參與調查,還有禮品贈送哦~
另外,不知道大家還想看哪方面的知識或技術?又或者有哪位大佬有擅長的技術想要迫不及待分享給大家呢?可以微信添加or掃描二維碼聯系我們哦~