如何使用Jmeter實現WebSocket協議的介面測試
WebSocket protocol 是HTML5一種新的協議。它實現了瀏覽器與伺服器全雙工通訊(full-duplex)。
瀏覽器和伺服器只需要要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以資料互相傳送。在此WebSocket 協議中,為我們實現即時服務帶來了兩大好處:
-
Header 互相溝通的Header是很小的-大概只有 2 Bytes
-
Server Push
-
下面是客戶端瀏覽器請求和伺服器回應
-
瀏覽器請求
-
GET /demo HTTP/1.1
-
Host: 你的網址.com
-
Connection: Upgrade
-
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
-
Upgrade: WebSocket
-
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5
-
Origin: http://你的網址.com
伺服器回應
HTTP/1.1 101
WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://你的網址.com
Sec-WebSocket-Location: ws://你的網址.com/demo
Sec-WebSocket-Protocol: sample
以上算是一個WebSocket的不算詳細的解釋和定義吧,下面我們看下怎麼使用Jmeter實現WebSocket的介面測試和效能測試:
首先,我們需要準備Jmeter的WebSocket協議的支援外掛:
JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar
這外掛依賴一下幾個jar包
1、jetty-http-9.1.2.v20140210.jar
2、jetty-io-9.1.2.v20140210.jar
3、jetty-util-9.1.2.v20140210.jar
4、websocket-api-9.1.1.v20140108.jar
5、websocket-client-9.1.1.v20140108.jar
6、websocket-common-9.1.1.v20140108.jar
我們準備好這些jar包後,講它們拷貝到Jmeter目錄的\lib\ext\目錄下。
下載地址:
http://download.csdn.net/download/log_1/10108285
下載後拷貝至Jmeter目錄的\lib\ext\下
其次,啟動Jmeter,滑鼠右鍵選擇測試計劃->新增->Threads(users)->執行緒組。
編輯
請點選輸入圖片描述
再次,選擇滑鼠右鍵選擇上步新增的執行緒組->新增->Sampler->WebSocket Sampler,如下圖:
編輯
請點選輸入圖片描述
WebSocket建立完成後,測試計劃樹如下圖:
編輯
請點選輸入圖片描述
圖中,還建立了,檢視結果樹、生成概要結果合用表格檢視結果,這個三個都可以在滑鼠右鍵選擇執行緒組->新增->監聽器中找到,主要是為了檢視Jmeter執行WebSocket的結果。
最後,我們需要配置WebSocket的地址、埠、請求和引數了,如下圖:
編輯
請點選輸入圖片描述
圖中:
1、Server Name or IP:WebSocket伺服器的地址;
2、Port Number:WebSocket服務訪問的埠;
3、Protocol【ws/wss】:根據自己的實際情況填寫;
4、Request data:需要傳送的請求,根據實際情況來,我的是傳送一個Json串,上圖中的Request data是做了引數化處理的,可以直接填入串:
{“openid”:”o-8pqwY4nb5k_n2NN-ydzj3mLJ8U”,”servCode”:”900001”},執行,在結果樹種檢視結果。
到此,我們完成了Jmeter的WebSocket的訪問設定,那麼,我們要做介面和效能測試必須要有引數化,否則,不都是一個請求反覆執行嗎,怎麼去引數化呢。
首先,我們需要建立一個文字檔案,講需要引數化的欄位按照逗號進行分割(當然也可以用其他的分隔符),例如:a,b — 表示兩個欄位內容,特別注意的是,如果串中本身有雙引號的,此處也要加上。
將建立好的文字檔案儲存,並改為.bat結尾的檔案。
其次,滑鼠右鍵選擇執行緒組->新增->配置元件->選擇:CSV Data Set Config,新增引數化檔案(Jmeter有幾種引數化方式,此處以CSV舉例),如下圖:
編輯
請點選輸入圖片描述
在Configure the CSV Data Source組中:
1、Filename:上步中要求建立的.bat檔案的全路徑;
2、File encoding:檔案的編碼格式,根據實際情況來;
3、Variable Names(comma-delimited):欄位名,多個以逗號分隔
4、Delimiter(use’\t’ for tab):定義分隔符,例如逗號的話,直接填寫 逗號的符號即可
5、Allow quoted data?:選項選為“true”的時候對全形字元的處理出現亂碼
6、Recycle on EOF:是否迴圈讀入,CSV Data Set Config一次讀入一行,分割後存入若干變數中交給一個執行緒,如果執行緒數超過文字的記錄行數,那麼可以選擇從頭再次讀入
7、Stop thread on EOF ?:當Recycle on EOF為False時,當讀取檔案到結尾時,停止程式,當Recycle on EOF為True時,此項無意義
根據實際情況進行設定。將所有的設定完成後,儲存。
值得注意的是,如果不確實配置是否正確,可以暫緩引數化,直接在WebSocket頁面填入Request data,執行,檢視結果,如果成功返回,在開始引數化。
執行Jmeter測試計劃,在結果樹中可以檢視傳送和伺服器返回的結果,如下圖:
編輯
請點選輸入圖片描述
上圖就是執行結果的檢視樹,可以在右邊的視窗中看到取樣器結果、請求、響應資料,其中,請求是客戶端向伺服器傳送的請求,響應資料是伺服器接收請求後返回的結果,可以選擇不同的結果檢視方式,有json、html、xpath等等。
至此,我們的jmeter對WebSocket的設定完成,可以根據各自的需求新增其他的任務來完成介面和效能測試了,當然,在這篇文中,我並沒有寫檢查點之類的結果判斷,大家可以根據自己的需求來進行檢查點的設定。
結語:
跟大家推薦一個學習資料分享群:175317069,裡面大牛已經為我們整理好了許多的學習資料,有自動化,介面,效能等等的學習資料!人生是一個逆水行舟的過程,不進則退,我們們一起加油吧!
相關文章
- Jmeter測試Websocket介面JMeterWeb
- 『動善時』JMeter基礎 — 50、使用JMeter測試WebSocket介面JMeterWeb
- Jmeter實現 Dubbo介面測試JMeter
- Jmeter TCP協議效能測試JMeterTCP協議
- 試著使用 jmeter 實現介面自動化測試JMeter
- websocket和http有什麼不同?以及websocket協議如何實現?WebHTTP協議
- Jmeter介面測試JMeter
- Postman 如何進行 Websocket 介面測試PostmanWeb
- Jmeter介面測試+效能測試JMeter
- Locust 壓測websocket協議Web協議
- 使用Jmeter進行http介面測試JMeterHTTP
- Jmeter(免費測試介面及使用)JMeter
- JMeter測試WebSocket的經驗總結JMeterWeb
- jmeter介面測試教程以及介面測試流程JMeter
- STOMP協議——基於Websocket實現協議Web
- Jmeter介面測試demoJMeter
- 效能測試進階實踐篇:10分鐘教你使用JMeter進行websocket測試!JMeterWeb
- WebSocket原理與實踐(二)---WebSocket協議Web協議
- jmeter介面測試筆記JMeter筆記
- Web介面測試工具--JmeterWebJMeter
- JMeter 做介面加密測試JMeter加密
- 『動善時』JMeter基礎 — 51、使用JMeter測試WebService介面JMeterWeb
- 『動善時』JMeter基礎 — 52、使用JMeter測試Dubbo介面JMeter
- WebSocket協議Web協議
- 【譯】 WebSocket 協議第十二章——使用其他規範中的WebSocket協議Web協議
- 老司機帶你用 PHP 實現 Websocket 協議PHPWeb協議
- 如何實現介面異常場景測試?測試方法探索與測試工具實現
- JMeter 測試 thrift RPC 介面JMeterRPC
- JMeter 介面測試快速入門JMeter
- (一)Jmeter簡單介面測試JMeter
- 如何優雅的實現介面跳轉 之 統跳協議協議
- Jmeter使用Websocket外掛測試SingalR,外加還有阿里雲PTS的Jmeter原生測試爬坑日誌。JMeterWeb阿里
- Jmeter介面測試例項-牛刀小試JMeter
- 教你如何使用Zig實現Cmpp協議協議
- 測試開發之效能篇-JMeter介面測試JMeter
- websocket+stomp子協議 實現資料互通Web協議
- WebSocket的Frame協議解析Web協議
- WebSocket協議的深入探究Web協議