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