websocket協議性能測試(jmeter版)


一、Websocket接口性能測試的場景

場景1: 大量鏈接的創建和關閉——不斷模擬大量用戶對Websocket鏈接的創建、關閉過程。

場景2: 長時間保持大量連接——創建大量鏈接,保持鏈接較長時間。

場景3:大量推送消息——可以少量鏈接較長時間保持,不斷觸發消息推送

二、測試工具

JMeter

下載插件及依賴包

插件地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.2.23.363f59572g7WZB

需要的依賴包:

將下載的插件包、依賴包放到 JMeter的 lib\ext 目錄下,之后啟動JMeter。

三、測試步驟

1、步驟一

右鍵單擊左側導航樹中的 Test Plan,選擇 Add > Config Element,可看到新增的配件元件選項 WebSocket Binary Frame Filter、WebSocket Ping/Pong Frame Filter 和 WebSocket Text Frame Filter 。    查看插件是否安裝成功

右鍵單擊左側導航樹中的 Test Plan,選擇 Add > Assertions,可看到新增的斷言選項 Binary Response Assertion。

查看新增的斷言選項

右鍵單擊左側導航樹中的 Test Plan,選擇 Add > listener > View Results Tree,在編輯頁面左下方的下拉列表中,可看到新增的選項 Binary。

查看新增選項

右鍵單擊左側導航樹中的 Test Plan,選擇 Add > Threads(Users) > Thread Group ,右鍵單擊 Thread Group,選擇 Add > Sampler,可看到以下新增的采樣器選項,具體說明如

 
Sampler 名稱 說明
WebSocket Open Connection 建立一個 WebSocket 連接
WebSocket Ping/Pong 控制幀,發送 ping 並接收 pong
WebSocket request-response Sampler 發送和接收文本或二進制 WebSocket 幀
WebSocket Single Write Sampler 發送文本或二進制 WebSocket 幀
WebSocket Single Read Sampler 接收文本或二進制 WebSocket 幀
WebSocket Close 關閉 Websocket 連接

下一步,需要配置這些 Sampler。

 

2、步驟二

下面將演示如何在測試場景中添加並配置 Sampler。以下為簡單示例,您可以根據業務需要進行調整。

在 Jmeter 頁面中,右鍵單擊 Test Plan,選 Add > Thread (Users) > Thread Group,將一個線程組添加到測試計划中。

在線程組中依次添加采樣器(Sampler),並進行配置。右鍵單擊 Thread Group,選擇 Add > Sampler > WebSocket Open Connection。當前的 Sampler 將建立 WebSocket 連接。

建立 websocket 鏈接
說明 我們以 Gateway Echo 服務來創建腳本(wss://echo.websocket.org) 。這是一個 Echo 服務,因此發送到此服務的所有消息都將回顯給客戶端。

相關的配置如下:

配置項 示例值 說明
協議 WS 協議可以是 WS 或 WSS(Secure WebSocket)。使用 WSS 進行加密連接。
Server name or IP echo.websocket.org 域名或 IP
Port 443 端口
Path - 可為空
Connection timeout(ms) 20000 建連的超時時間
Read timeout(ms) 6000 等待服務器響應的超時時間

右鍵單擊 Thread Group,選擇 Add > Sampler > WebSocket Ping/Pong。該 Sampler 用來測試 Ping/Pong 功能。

設置 sampler

相關配置如下:

Pong(讀)超時(ms):6000

Pong(讀)超時表示如果 JMeter 在 6 秒內沒有收到 Pong 消息,則 Sampler 將失效。此 Sampler 會復用已有連接。

右鍵單擊 Thread Group,選擇 Add > Sampler > WebSocket request-response Sampler。

websocket結果樹二進制視圖4

相關配置如下:

配置項 示例值 說明
Connection use existing connection 創建新的連接或復用已有連接。
數據類型 文本 指定數據類型、請求數據和響應超時值。
Request data PTS 請求數據,這里以文本為例
Response(read)timeout(ms) 6000 響應超時時間

右鍵單擊 Thread Group,選擇 Add > Sampler > WebSocket Single Write Sampler 。此請求是非阻塞的,只是將數據發送到服務端不需要等待響應。

websocket結果樹二進制視圖5

相關配置如下:

配置項 示例值 說明
Connection use existing connection 創建新的連接或復用已有連接
數據類型 文本 指定數據類型、請求數據和響應超時值
Request data PTS 請求數據,這里以文本為例
Response(read)timeout(ms) 6000 響應超時時間

右鍵單擊 Thread Group,選擇 Add > Sampler WebSocket Single Read Sampler。接收服務端的消息響應需要使用這個 Sampler。

websocket結果樹二進制視圖6

相關配置如下:

配置項 示例值 說明
Connection use existing connection 創建新的連接或復用已有連接
數據類型 文本 指定數據類型、請求數據和響應超時值
Response(read)timeout(ms) 6000 響應超時時間

右鍵單擊 Thread Group,選擇 Add > Sampler WebSocket Close。接收服務端的消息響應需要使用這個 Sampler。

websocket結果樹二進制視圖7

相關配置如下:

配置項 示例值 說明
Close Status 二進制 關閉連接時定義的狀態碼,數據幀的頭兩個字節
Response(read)timeout(ms) 6000 響應超時時間

此采樣器將關閉現有的 WebSocket 連接,由於是協商關閉,顯示原因為 “1000:sampler requested close”。

右鍵單擊 Thread Group,選擇 Add Listener View Results Tree,在線程組中添加監聽器 View Results Tree。接收服務端的消息響應需要使用這個 Sampler。

3、步驟三:運行腳本

腳本編輯完成后,單擊頁面頂部的開始按鈕,運行腳本。

通過 View Results Tree 監聽器查看腳本是否運行正常。在左側導航樹中,選擇View Results Tree,檢查所有 Sampler 是否都配置正確並符合預期。在該監聽器中,如果 Sampler 前面有綠色對勾表示運行正常。

如出現運行異常的 Sampler,請參見步驟二:創建腳本進行調試。

部分示例結果如下:

WebSocket request-response Sampler

根據腳本配置,Request 信息如下:

示例結果圖1

根據腳本配置,Binary 格式的 Response data 如下:

示例結果圖2

WebSocket Single Read Sampler

根據腳本配置,Text 格式的 Response data 如下:

示例結果圖3

根據腳本配置,Binary 格式的 Response data 如下:

示例結果圖4

 

 

轉載:https://help.aliyun.com/document_detail/93627.html#section-rvj-q97-lii


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM