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

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

瀏覽器和服務器只須要要作一個握手的動做,而後,瀏覽器和服務器之間就造成了一條快速通道。二者之間就直接能夠數據互相傳送。在此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包
一、jetty-http-9.1.2.v20140210.jar
二、jetty-io-9.1.2.v20140210.jar
三、jetty-util-9.1.2.v20140210.jar
四、websocket-api-9.1.1.v20140108.jar
五、websocket-client-9.1.1.v20140108.jar
六、websocket-common-9.1.1.v20140108.jar
咱們準備好這些jar包後,講它們拷貝到Jmeter目錄的\lib\ext\目錄下。
下載地址:
下載後拷貝至Jmeter目錄的\lib\ext\下
 
其次,啓動Jmeter,鼠標右鍵選擇測試計劃->添加->Threads(users)->線程組,以下圖:
 
再次,選擇鼠標右鍵選擇上步添加的線程組->添加->Sampler->WebSocket Sampler,以下圖:
 
WebSocket建立完成後,測試計劃樹以下圖:
圖中,還建立了,查看結果樹、生成概要結果合用表格查看結果,這個三個均可以在鼠標右鍵選擇線程組->添加->監聽器中找到,主要是爲了查看Jmeter執行WebSocket的結果。
 
最後,咱們須要配置WebSocket的地址、端口、請求和參數了,以下圖:
圖中:
一、Server Name or IP:WebSocket服務器的地址;
二、Port Number:WebSocket服務訪問的端口;
 
 
三、Protocol【ws/wss】:根據本身的實際狀況填寫;
四、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組中:
一、Filename:上步中要求創建的.bat文件的全路徑;
二、File encoding:文件的編碼格式,根據實際狀況來;
三、Variable Names(comma-delimited):字段名,多個以逗號分隔
四、Delimiter(use'\t' for tab):定義分隔符,例如逗號的話,直接填寫 逗號的符號便可
五、Allow quoted data?:選項選爲「true」的時候對全角字符的處理出現亂碼
六、Recycle on EOF:是否循環讀入,CSV Data Set Config一次讀入一行,分割後存入若干變量中交給一個線程,若是線程數超過文本的記錄行數,那麼能夠選擇從頭再次讀入
七、Stop thread on EOF ?:當Recycle on EOF爲False時,當讀取文件到結尾時,中止進程,當Recycle on EOF爲True時,此項無心義
根據實際狀況進行設置。將全部的設置完成後,保存。
值得注意的是,若是不確實配置是否正確,能夠暫緩參數化,直接在WebSocket頁面填入Request data,運行,查看結果,若是成功返回,在開始參數化。
 
執行Jmeter測試計劃,在結果樹中能夠查看發送和服務器返回的結果,以下圖:
 
上圖就是執行結果的查看樹,能夠在右邊的窗口中看到取樣器結果、請求、響應數據,其中,請求是客戶端向服務器發送的請求,響應數據是服務器接收請求後返回的結果,能夠選擇不一樣的結果查看方式,有json、html、xpath等等。
 
至此,咱們的jmeter對WebSocket的設置完成,能夠根據各自的需求添加其餘的任務來完成接口和性能測試了,固然,在這篇文中,我並無寫檢查點之類的結果判斷,你們能夠根據本身的需求來進行檢查點的設置。
相關文章
相關標籤/搜索