當前受疫情影響,互聯(lián)網(wǎng)行業(yè)盈利困難,以往的持續快速增長(cháng)變得不可持續,這個(gè)狀態(tài)可能會(huì )持續數年,直到疫情能完全被控制住。我們現在能感知到各行業(yè)的賺錢(qián)困難,互聯(lián)網(wǎng)企業(yè)也不例外,會(huì )同時(shí)影響到測試行業(yè),會(huì )對測試工程師的崗位要求更高,性能測試,測試開(kāi)發(fā)(自動(dòng)化測試)等會(huì )成為測試工程師的必備技能,因此性能測試崗位未來(lái)的需求肯定會(huì )比以往更多,更大。除了一部分新生行業(yè)(區塊鏈、自動(dòng)駕駛等)衍生出的新崗位需求外,還有大量崗位是普通測試工程師要求具備性能測試技能的場(chǎng)景。
從當前IT行業(yè)中,性能測試在整個(gè)測試領(lǐng)域中的需求量還蠻大的,尤其各個(gè)企業(yè),對高級性能測試工程師的需求,都是求賢如渴的狀態(tài)。并且,性能測試工程師的薪資也是上漲的趨勢。
現在企業(yè)按cpu、帶寬流量收費,然后互聯(lián)網(wǎng)人群瞬間并發(fā)壓力大,一般中小型公司,都會(huì )要求軟件項目有做系統的性能測試。但是是否配備專(zhuān)門(mén)的性能測試崗位要看公司的具體情況,一般來(lái)說(shuō),有6-8人的測試團隊,至少會(huì )配備一名專(zhuān)門(mén)的性能測試人員,反正可能是兼職崗位,一般由資深的測試工程師兼任,或開(kāi)發(fā)自己完成。專(zhuān)職性能測試工程師要掌握的要求技能不算高,屬于入門(mén)門(mén)檻較低的崗位(相比于測試去做自動(dòng)化、測試開(kāi)發(fā)等崗位)。具備性能測試工程師經(jīng)驗能力,首先你要掌握理解性能測試的概念,然后你要會(huì )熟練使用一種壓測工具(能滿(mǎn)足需求即可,可以是Loadrunner、Jmeter等,甚至是自研的都可以)
然后工具會(huì )用后相當于能完成性能測試壓力模擬,后面就可以分層了,初中級性能工程師,只需要將性能測試結果整理匯報出來(lái)即可,可以和開(kāi)發(fā)一起分析結果,資深一點(diǎn)的,針對不同場(chǎng)景數據問(wèn)題,可以分析的更透徹一點(diǎn),不影響性能測試的執行。
這是一個(gè)好問(wèn)題,也是一個(gè)很”深奧”的問(wèn)題。
當前的企業(yè),針對性能工程師崗位,分為兩類(lèi): ① 大企業(yè)有專(zhuān)門(mén)的性能測試工程師:專(zhuān)門(mén)負責企業(yè)產(chǎn)品的性能測試。 ② 小企業(yè)/初創(chuàng )公司:沒(méi)有專(zhuān)門(mén)的性能測試工程師,都是測試工程師來(lái)兼職做產(chǎn)品的性能測試。 這就導致了一個(gè)問(wèn)題: 非專(zhuān)職/專(zhuān)業(yè)的人來(lái)做專(zhuān)職的事情,必定會(huì )得到不專(zhuān)業(yè)的結果。
我們都知道,用戶(hù)是否喜歡用這個(gè)產(chǎn)品,除了產(chǎn)品的操作功能是否簡(jiǎn)單、界面視覺(jué)是否好看外, 最重要其中一點(diǎn)就是響應時(shí)間。
響應時(shí)間的快慢,不僅體現在代碼上,還有數據庫、服務(wù)器、緩存、隊列,甚至與整個(gè)架構的合理性等。
所以,專(zhuān)項性能測試的人員需要掌握的技能,我給分為三類(lèi):
① 性能基礎:性能基礎知識,TPS,QPS,ResponseTime,吞吐量,并發(fā)度,并發(fā)用戶(hù)等;
② 技術(shù)棧:架構流程、開(kāi)發(fā)語(yǔ)言(java)、數據庫(MySQL/MOngoDB)、緩存(Redis)、操作系統(CentOS)、監控(Promethues)、中間件(Tomcat)、隊列(Kafka)…
③ 業(yè)務(wù)需求:任何性能腳本的設計,都是來(lái)源于業(yè)務(wù)方/運維方的需求。
這也是側面反映出,為什么大企業(yè)對高級性能測試工程師的求賢如渴。
具備性能測試能力,就是這個(gè)公司可能沒(méi)有專(zhuān)門(mén)配備性能測試工程師,但是還是有一些業(yè)務(wù)場(chǎng)景是需要做性能壓測執行的(需要由專(zhuān)業(yè)的性能測試工程師完成),這個(gè)能力簡(jiǎn)單說(shuō)就是你只要掌握壓測工具的使用、結果的匯總報告即可,性能測試崗相當于是專(zhuān)職的性能測試人員,要求會(huì )更多一些,多的這部分,他并不一定具備很高的開(kāi)發(fā)水平,多出的這部分,是他的測試數據匯總分析,問(wèn)題定位這部分(當然,基本的壓測場(chǎng)景腳本能做出來(lái),這個(gè)也是比較初級的要求)。
首先,針對企業(yè)來(lái)說(shuō),想要招來(lái)的員工都是全棧測試開(kāi)發(fā)工程師;但是,現實(shí)總是相反的。
招聘自動(dòng)化測試,同時(shí)兼顧性能測試:也就是說(shuō),這個(gè)性能測試不是主要的,但是,又要了解一點(diǎn)性能測試的基礎知識,例如:什么是TPS、吞吐量、響應時(shí)間、并發(fā)等。有沒(méi)有在項目中實(shí)踐,以及項目的規模,最后的性能測試結果,都不是很重要。
主要招聘性能測試工程師:這對應聘者的要求就很高了,需要具備的能力,
① 知識儲備:一定是我上面說(shuō)的那些技能(至少包含70%~80%);
② 性能分析:只會(huì )設計腳本,不會(huì )性能分析的工程師,不能獨當一面;
③ 實(shí)戰經(jīng)驗:沒(méi)有實(shí)戰經(jīng)驗,再多的理論都白搭;
④ 流量/產(chǎn)品影響力:性能測試,流量為王。
在公司做性能測試,看公司具體情況,如果系統完全在內網(wǎng),服務(wù)器都是相對獨立的,對帶寬、硬件資源沒(méi)有特殊要求,可能沒(méi)有太多流程,直接測試即可。
如果公司硬件服務(wù)器同時(shí)部署了多個(gè)跨部門(mén)服務(wù),應用軟件有外網(wǎng)交互,這些就可能需要具體分析,找出對外的影響點(diǎn),因為性能測試對帶寬、硬件開(kāi)銷(xiāo)是比較大的,需要較平時(shí)使用占用更多的資源,需要提前對這些資源的主管部門(mén)進(jìn)行報備,詢(xún)問(wèn)壓測影響(時(shí)間段),一般是和運維部門(mén)溝通壓測事項。
然后至于基本的測試數據制造這些,一般由測試人員自己完成,不熟悉系統的,需要對應開(kāi)發(fā)進(jìn)行配合完成。
性能測試上到老板,下到員工,橫跨 產(chǎn)品、架構、開(kāi)發(fā)、測試、運維 整個(gè)部門(mén)都需要配合。
因為涉及到跨部門(mén)合作,所以,性能測試的流程一定是規范的,詳細的,但是又稍微的”繁瑣”的,具體流程如下:
業(yè)務(wù)學(xué)習→需求分析→工作評估→性能模型→性能方案→評審→準備環(huán)境/設計腳本→性能監控→執行測試→調優(yōu)/缺陷管理→分析問(wèn)題→解決/驗證問(wèn)題→性能報告/結果。
發(fā)現性能瓶頸時(shí),總體來(lái)說(shuō),要能分析出來(lái)瓶頸在哪個(gè)位置,這個(gè)位置越詳細越好。
舉例子,系統瓶頸,要能區分是應用瓶頸,還是數據庫瓶頸。數據庫瓶頸,是在應用數據庫,還是緩存數據庫,應用數據庫瓶頸,是哪個(gè)操作,哪個(gè)SQL引起,能做到區分到這些,你基本上就是一個(gè)符合一名中級性能測試工程師水平了。
如果還能進(jìn)一步分析到具體原因,舉例子,應用瓶頸,是哪個(gè)應用(一般性能壓測,一個(gè)系統可能由數10個(gè)應用提供服務(wù))。
要做到這些,一般來(lái)說(shuō)要了解整個(gè)系統的運行部署架構,同時(shí)了解系統的開(kāi)發(fā)語(yǔ)言和依賴(lài)中間件,還有配套DB。了解系統業(yè)務(wù)業(yè)務(wù)場(chǎng)景的執行,會(huì )做哪些事情,比如點(diǎn)擊登錄,前端會(huì )將用戶(hù)賬號密碼發(fā)給web服務(wù)器,web服務(wù)器會(huì )將賬號密碼發(fā)給應用服務(wù)器,應用服務(wù)器會(huì )執行登錄邏輯,去對應db檢索用戶(hù)信息,要能了解這個(gè)流程,同時(shí)能掌握對應系統的開(kāi)發(fā)語(yǔ)言則更優(yōu)。然后掌握一些常用的Linux系統瓶頸定位,數據庫瓶頸定位,這些是必須的,也是比較容易的(比如系統CPU、IO高,交換分區內存不足等常見(jiàn)問(wèn)題分析定位)
測試過(guò)程中,如果會(huì )做性能定位,這是拉開(kāi)性能測試等級的一個(gè)分界點(diǎn),性能定位分析需要具備能力:
①業(yè)務(wù)壓力場(chǎng)景;
②系統架構流程;
③服務(wù)部署流程;
④監控服務(wù):應用、緩存、數據庫、日志監控等;
⑤操作系統(CentOS);
⑥數據庫;
⑦開(kāi)發(fā)語(yǔ)言:java/C/Python/Go等。
所有最終性能問(wèn)題,都是開(kāi)發(fā)解決,這個(gè)固然沒(méi)錯。但是舉例子,如果一個(gè)性能測試工程師能快速指出性能問(wèn)題所在,把問(wèn)題點(diǎn)直接拋出來(lái)的時(shí)候,你給別人的感覺(jué)是不是不一樣。舉例子壓測出現性能瓶頸,經(jīng)過(guò)你分析,你指出是某個(gè)SQL慢引起,經(jīng)過(guò)排查,是某個(gè)表的查詢(xún)沒(méi)有命中索引導致,你能發(fā)出這個(gè)結果到群里,和你只能發(fā)出有性能瓶頸的結果,哪個(gè)對你的升職加薪更有利一目了然。
所以我們測試工程師還是要提高技術(shù)水平,在做性能測試時(shí),能給更多更專(zhuān)業(yè)的測試結果,對你自身的工作加薪升職幫助是很大的。
在整個(gè)系統鏈路中,涉及到代碼級/架構級,就需要開(kāi)發(fā)同學(xué)來(lái)調試; 但是,涉及到網(wǎng)絡(luò )、資源配置、操作系統、數據庫等問(wèn)題,可能就需要運維、DBA等人員參與; 當然,在整個(gè)調優(yōu)過(guò)程中,測試人員需要:確定問(wèn)題瓶頸,協(xié)助開(kāi)發(fā)定位分析、以及驗證調優(yōu)結果。
貫穿到整個(gè)性能流程,測試人員需要承擔的工作:業(yè)務(wù)學(xué)習,需求理解(業(yè)務(wù)級/架構級),方案設計、策略制定、性能模型設計、腳本設計、數據準備、腳本執行、瓶頸定位及分析、驗證調優(yōu)的結果、測試報告編寫(xiě)及風(fēng)險預估。
可以算是個(gè)性能測試名詞,和傳統意義的性能測試沒(méi)有區別,全鏈路說(shuō)通俗點(diǎn)就是全面場(chǎng)景的性能測試,就是完整的業(yè)務(wù)場(chǎng)景的性能測試(不在是某個(gè)單一的接口壓測,或者單一的功能壓測),這個(gè)全,是指要業(yè)務(wù)功能場(chǎng)景要覆蓋全,這樣能更真實(shí)的模擬用戶(hù)對系統的實(shí)際壓力,能看出整個(gè)業(yè)務(wù)運行時(shí),所有相關(guān)依賴(lài)系統的壓力。至于測試方法,和普通性能測試沒(méi)有差別,主要就是場(chǎng)景疊加要全,注意這一點(diǎn)滿(mǎn)足需求即可。
“全鏈路性能測試”從概念提出到落地實(shí)踐,也有些年了,也被業(yè)界稱(chēng)為 “核武器”。但是,真正能做起來(lái)的,也就是屈指可數的那些大廠(chǎng)了。
相比于傳統性能測試,全鏈路壓測主要是在線(xiàn)上進(jìn)行,并不是說(shuō)全鏈路性能測試不能在線(xiàn)下做,只是在綜合考量后,線(xiàn)下做的價(jià)值并不高。 在這,也例舉幾個(gè)不同點(diǎn):
業(yè)務(wù)項 | 全鏈路性能測試 | 傳統性能測試 |
---|---|---|
業(yè)務(wù)流程改造 | 必須要做 | 不需要 |
流量平臺搭建 | 必須要做 | 不需要 |
基礎數據改造 | 必須要做 | 不需要 |
壓力流量改造 | 必須要做 | 不需要 |
之前我有相關(guān)視頻課,介紹普通測試人員,如何向專(zhuān)項測試工程師轉型(點(diǎn)擊鏈接可直達 ),性能測試相對來(lái)說(shuō)是入門(mén)門(mén)檻較低。對編程技術(shù)沒(méi)有太高的要求,能掌握基本的壓測工具使用,理解接口,和掌握接口壓測腳本開(kāi)發(fā)即可,這塊可以參考一些性能測試入門(mén)的基本課程即可。
有幾點(diǎn)可以參考,也是根據初級→中級→高級路線(xiàn)來(lái)規劃的:
(1) 知識儲備:
① 掌握性能基礎知識:TPS、QPS、響應時(shí)間、吞吐量;
② 學(xué)習Linux系統,如:各種操作命令,IO/Disk/CPU/Mem/Network等知識;
③ 學(xué)習性能測試工具的使用:Jmeter、LoadRunner、Locust等等;
④ 學(xué)習MySQL/MongoDB/Redis/Tomcat等知識及操作;
⑤ 學(xué)習各個(gè)應用服務(wù):數據庫應用,Java應用,緩存應用
⑥ 學(xué)習性能模型,方案設計;
(2) 項目實(shí)戰: 最快的成長(cháng)方式,就是在項目中歷練自己,所以,如果有項目讓你參與,一定要去。
(3) 網(wǎng)站學(xué)習: 有專(zhuān)業(yè)的老師講解,會(huì )讓你在學(xué)習過(guò)程中躲避很多坑,達到事半功倍的效果。
一般來(lái)說(shuō),企業(yè)人數達到一定規模,測試人員數量大于10個(gè)以上,這時(shí)候可能會(huì )需要一名或多名專(zhuān)職性能測試工程師。性能測試相對于其他專(zhuān)項測試工程師不同,技術(shù)上來(lái)說(shuō)它是通吃的,無(wú)論你是什么行業(yè),你掌握了性能測試,都能適應。說(shuō)簡(jiǎn)單點(diǎn),無(wú)論你的后臺服務(wù)是go,還是java,還是。Net,或者公司是互聯(lián)網(wǎng)、或者是區塊鏈,都不影響你的性能測試執行,因為你只需要掌握最基本的目標,就是模擬大量客戶(hù)端訪(fǎng)問(wèn)對應服務(wù)端,產(chǎn)生真實(shí)壓力即可,無(wú)需關(guān)注其他。
這也是性能測試是入門(mén)門(mén)檻低,適用性廣的原因,不像自動(dòng)化,可能有api自動(dòng)化、gui自動(dòng)化、還有安卓和ios,每個(gè)都不一樣,都夠你折騰研究好幾年。
互聯(lián)網(wǎng)行業(yè)對性能測試的要求相對較高,尤其大廠(chǎng)的產(chǎn)品:手淘、京東、美團、拼多多等; 不同行業(yè),對性能技術(shù)的差別主要體現在:
①技術(shù)棧能力:讀代碼,編寫(xiě)性能腳本,搭建服務(wù),監控服務(wù),優(yōu)化等;
②負載測試、容量測試、異常場(chǎng)景測試、穩定性測試。
測試工程師向上的發(fā)展空間,無(wú)外乎2條路,測試技術(shù)專(zhuān)家,或測試管理。 測試管理,一般也都是會(huì )從測試人員中挑選更多測試經(jīng)驗的同事,性能測試工程師一般來(lái)說(shuō)晉升測試管理崗位,優(yōu)勢會(huì )比普通工程師更大,畢竟掌握了一門(mén)專(zhuān)項測試技能。
因此,相比較普通工程師而已,性能測試工程師的晉升發(fā)展空間就大很多了,既可以做測試技術(shù)專(zhuān)家,也可以做測試管理崗位,畢竟你是具備較高測試專(zhuān)業(yè)技能的。 然后性能測試做多了,精通了,慢慢轉型測試開(kāi)發(fā)(或開(kāi)發(fā)),也不是沒(méi)有這個(gè)可能,總之得行動(dòng)起來(lái),嘗試起來(lái)。
性能測試工程師的未來(lái)發(fā)展方向,可以分為三個(gè):業(yè)務(wù)路線(xiàn)、技術(shù)路線(xiàn)、管理路線(xiàn)。
業(yè)務(wù)路線(xiàn):有QA經(jīng)理、業(yè)務(wù)專(zhuān)家、產(chǎn)品經(jīng)理、行業(yè)咨詢(xún)專(zhuān)家等;
技術(shù)路線(xiàn):自動(dòng)化測試工程師,性能工程師,測試開(kāi)發(fā)全棧工程師,性能培訓講師;
管理路線(xiàn):測試開(kāi)發(fā)主管,測試開(kāi)發(fā)經(jīng)理,測試開(kāi)發(fā)總監。
- 熱門(mén)專(zhuān)題推薦
- 專(zhuān)家在線(xiàn)視頻
看過(guò)本次專(zhuān)題后,小伙伴們對性能測試有新的認識了么?還有什么想要補充的知識或是有什么問(wèn)題都可以在下方評論區交流~
有關(guān)性能測試工程師的現狀,在51Testing軟件測試2022軟件測試行業(yè)現狀調查問(wèn)卷中也有體現,感興趣的小伙伴,戳這里參與調查,還有禮品贈送哦~
另外,不知道大家還想看哪方面的知識或技術(shù)?又或者有哪位大佬有擅長(cháng)的技術(shù)想要迫不及待分享給大家呢?可以微信添加or掃描二維碼聯(lián)系我們哦~