如何使用Jmeter實現WebSocket協議的介面測試

TestingGDR發表於2018-11-29

WebSocket protocol 是HTML5一種新的協議。它實現了瀏覽器與伺服器全雙工通訊(full-duplex)。

瀏覽器和伺服器只需要要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以資料互相傳送。在此WebSocket 協議中,為我們實現即時服務帶來了兩大好處:

  1. Header 互相溝通的Header是很小的-大概只有 2 Bytes

  2. Server Push

  3. 下面是客戶端瀏覽器請求和伺服器回應

  4. 瀏覽器請求

  5. GET /demo HTTP/1.1

  6. Host: 你的網址.com

  7. Connection: Upgrade

  8. Sec-WebSocket-Key2: 12998 5 Y3 1 .P00

  9. Upgrade: WebSocket

  10. Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5

  11. 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,裡面大牛已經為我們整理好了許多的學習資料,有自動化,介面,效能等等的學習資料!人生是一個逆水行舟的過程,不進則退,我們們一起加油吧!

相關文章