天天看點

性能測試教育訓練:WebSocket協定的接口性能之Jmeter

性能測試教育訓練:WebSocket協定的接口性能之Jmeter

 poptest是國内唯一一家培養測試開發工程師的教育訓練機構,以學員能勝任自動化測試,性能測試,測試工具開發等工作為目标。poptest測試開發工程師就業教育訓練感興趣,請大家咨詢qq:908821478

WebSocket protocol 是一種新的協定,loadrunner中已經有涉及到,那麼jmeter如何操作呢?

我們先介紹下WebSocket,它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

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的設定完成,可以根據各自的需求添加其他的任務來完成接口和性能測試了,當然,在這篇文中,我并沒有寫檢查點之類的結果判斷,大家可以根據自己的需求來進行檢查點的設定。

繼續閱讀