Jmeter實現WebSocket協議的接口和性能測試方法


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

瀏覽器和服務器只需要要做一個握手的動作,然后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。在此WebSocket 協議中,為我們實現即時服務帶來了兩大好處:
1. Header  互相溝通的Header是很小的-大概只有 2 Bytes
2. 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
^n:ds[4U
 
服務器回應
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
8jKS’y:G*Co,Wxa-
 
以上算是一個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\目錄下。
 
其次,啟動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的設置完成,可以根據各自的需求添加其他的任務來完成接口和性能測試了,當然,在這篇文中,我並沒有寫檢查點之類的結果判斷,大家可以根據自己的需求來進行檢查點的設置。
 


免責聲明!

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



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