效能測試進階實踐篇:10分鐘教你使用JMeter進行websocket測試!
摘要
本次測試案例主要是分享如何使用jmeter進行websocket協議下的聊天介面效能測試。包含websocket外掛的下載安裝、執行緒組及sampler的設定、csv引數化和組建分散式測試的方法、如何通過調整引數來獲得發壓機的最大併發數以及對測試過程的總結。整篇文章只側重介紹進行websocket測試的思路,對具體工具的使用步驟較少著墨,因為網上已有不少相關介紹文章。希望本篇文章可以對其他正準備用jmeter進行websocket測試的讀者提供一些參考。本人水平有限,如有錯誤懇請批評指正,感謝! 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~
最近收到一個任務,需要對公司的即時通訊服務端進行壓測及聊天介面效能測試,這款即時通訊軟體的客戶端是通過websocket協議與服務端通訊的。但我之前只做過http協議的測試,websocket協議還是第一次。
於是我在網上搜尋websocket協議的壓測工具,一番比較後選中了jmeter,選擇jmeter的原因有以下幾點:
1.jmeter是一款免費開源的軟體,有成熟的社群及外掛管理工具,滿足使用者的各種需求。
2.jmeter包含windows、mac、linux多平臺版本,對發壓機支援較好。
3.jmeter支援GUI和CLI兩種操作模式,配置分散式壓測步驟簡單快捷,網上有很多關於jmeter的安裝使用說明,這裡我就不再贅述直接進入websocket的相關測試工作。
一.安裝JMeterWebsocketSampler外掛
jmeter不自帶websocket功能,需要安裝外掛,這個外掛直接安裝最新的就行了,我用的是1.2.8版本。將下載好的jar包放在jmeter目錄下的lib/ext裡,然後開啟jmeter將websocket sampler勾選上再重啟jmeter就安裝好JMeterWebsocketSampler外掛了。
然後新增websocket connection sampler、websocket send sampler、websocket connection close sampler,分別用於建立連線、傳送請求、斷開連線操作。由於是壓測案例,所以我用到了Loop Controller,可以用於控制sampler的迴圈次數,並且客戶端只管傳送,不接收服務端的響應,因為我依靠另一端實際接收到的訊息數判斷髮送是否成功,這樣可以避免等待響應阻塞程式。我的配置如圖所示:
我把infinite勾選上了,表示在5分鐘的壓測時間內讓sampler不限次數地迴圈,這樣可以測出sampler在指定時間內能夠完成的最大次數。
三.CSV引數化
對於jmeter來說,每一個執行緒就是一個使用者,所以設定100個執行緒就需要100個測試使用者的賬號、密碼及傳送資料。新增CSV DATA Set Config步驟,csv的配置我這裡不再贅述,不過需要說明的是測試服務端處理聊天訊息的效能,最好是多組一對一聊天這樣的設定,比如我的就是50個使用者分別給另外50個使用者傳送訊息,這樣符合真實使用場景,也能測出服務端的真實效能。
四.分散式測試
按以上步驟找到每臺壓測機的最大執行緒數後,就可以開始分散式測試了。另找一臺機器作為主控機,確保每臺壓測機與主控機的網路互通。在jemter.properties裡的remote_hosts新增壓測機的ip和埠,server_port是jmeter啟動的埠,壓測機用jmeter-server啟動。如果主控機與壓測機之間的RMI不是SSL連線,記得將server.rmi.ssl.disable=true的註釋解開。server-rmi-localport是用於本機跟其它機器通訊的RMI埠,如果要使壓測機的壓測資料回傳主控機,需要將壓測機及主控機jemter.properties裡的mode=standard註釋解開。
儲存後主控機使用CLI輸入命令jmeter -n -t “Webim Thread Group.jmx” -R x.x.x.x,y.y.y.y -l wbeimlog.jtl -e -o repoort(-R後跟壓測機ip,多臺用逗號分隔)就可以使用主控機對壓測機傳送指令了。壓測機接收到指令後會在CLI介面上顯示如下資訊:
五.測試過程總結
整個測試的關鍵點有三處:一是調整發壓機引數使併發數達到最大。二是設定每對聊天賬號都是一對一,不等待服務端響應,以便獲得最真實的服務端效能。三是根據壓測機回傳的資料分析出壓測機所需的數量,進而測試出服務端的最大效能。我這邊整個測試工作都處於測試環境進行,取得的測試資料並不能完成代表真實生產環境下的情況,僅可以用作預測生產環境下的效能表現。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2838185/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Jmeter進行效能測試實戰:詳解HTTP請求和JDBC request進階篇JMeterHTTPJDBC
- 效能測試學習篇:Jmeter進階實錄——手把手教你實現指令碼錄製JMeter指令碼
- 使用JMeter進行壓力測試JMeter
- 使用 jMeter 對 SAP Spartacus 進行併發效能測試JMeter
- 使用Loadrunner進行效能測試
- 介面測試進階篇
- 使用 Sysbench 進行 Linux 效能測試Linux
- Postman 如何進行 Websocket 介面測試PostmanWeb
- 測試開發之效能篇-JMeter介面測試JMeter
- Jmeter測試Websocket介面JMeterWeb
- 使用JMeter進行負載測試快速入門JMeter負載
- go 單元測試進階篇Go
- JMeter 如何與 MySQL 進行整合測試JMeterMySql
- Jmeter介面測試+效能測試JMeter
- 效能測試乾貨分享:JMeter如何使用Bean Shell進行引數化?JMeterBean
- Jmeter效能測試實戰JMeter
- linux環境下使用jmeter進行分散式測試LinuxJMeter分散式
- JMeter效能測試JMeter
- 哪些功能需要進行效能測試?
- 如何使用jMeter對某個OData服務進行高併發效能測試JMeter
- 使用jMeter構造大量併發HTTP請求進行微服務效能測試JMeterHTTP微服務
- Jmeter效能測試簡單使用JMeter
- 使用python對oracle進行簡單效能測試PythonOracle
- 如何使用Jmeter實現WebSocket協議的介面測試JMeterWeb協議
- 使用PostMan進行API測試PostmanAPI
- 使用 HTTPie 進行 API 測試HTTPAPI
- jmeter之效能測試JMeter
- jmeter做效能測試JMeter
- JMeter效能測試工具使用入門JMeter
- 【TEST】Oracle19c使用benchmarksql進行效能測試OracleSQL
- 介面自動化測試世界裡的“身份證”—測試工具Jmeter實踐篇JMeter
- Jmeter效能測試:高併發分散式效能測試JMeter分散式
- c++效能測試工具:google benchmark進階(一)C++Go
- 『動善時』JMeter基礎 — 50、使用JMeter測試WebSocket介面JMeterWeb
- Locust效能測試實踐
- 使用JUnit進行單元測試
- 使用jest進行單元測試
- 使用 MeterSphere 進行 Dubbo 介面測試