使用JMeter測試基于WebSocket協(xié)議的服務(wù)
一、WebSocket是什么?
示例:WebSocket是一種雙向網(wǎng)絡(luò)通信協(xié)議,與HTTP不同,它以ws://或wss://開頭。它是一個(gè)有狀態(tài)協(xié)議,這意味著客戶端和服務(wù)器之間的連接將保持活動(dòng)狀態(tài),直到被客戶端或服務(wù)器中的任何一方關(guān)閉連接之后,連接將從兩端終止。
二、為什么需要WebSocket
初次接觸 WebSocket的人,都會(huì)問同樣的問題:我們已經(jīng)有了HTTP協(xié)議,為什么還需要另一個(gè)協(xié)議?它能帶來什么好處?
答案很簡單,因?yàn)镠TTP協(xié)議有一個(gè)缺陷:通信只能由客戶端發(fā)起。
舉例來說,我們想了解今天的天氣,只能是客戶端向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器返回查詢結(jié)果。HTTP協(xié)議做不到服務(wù)器主動(dòng)向客戶端推送信息。
這種單向請(qǐng)求的特點(diǎn),注定了如果服務(wù)器有連續(xù)的狀態(tài)變化,客戶端要獲知就非常麻煩。我們只能使用"輪詢",每隔一段時(shí)候,就發(fā)出一個(gè)詢問,了解服務(wù)器有沒有新的信息。輪詢的效率低,非常浪費(fèi)資源。因此,工程師們一直在思考,有沒有更好的方法,WebSocket就是這樣發(fā)明的。
WebSocket的最大特點(diǎn)就是,服務(wù)器可以主動(dòng)向客戶端推送信息,客戶端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話,屬于服務(wù)器推送技術(shù)的一種。
三、WebSocket Sampler的簡單使用
1.安裝WebSocket插件和依賴包
方法1:
安裝JMeter插件管理器,下載plugins-manager.jar,放入lib/ext目錄,重啟JMeter
打開JMeter插件管理器后,點(diǎn)擊Available Plugins選項(xiàng)頁,在搜索框中輸入WebSocket,然后選擇安裝WebSocket Sampler by Maciej Zaleski插件
方法2:復(fù)制下載的jar包至jmeter的/lib/ext目錄下,并重啟jmeter
JMeterWebSocketSamplers-1.2.8.jar
jmeter-websocket-samplers-source
2.添加取樣器
WebSocket Sampler組件添加方式:選中“線程組”右鍵 —> 添加 —> 取樣器 —> WebSocket Sampler
根據(jù)場景需要添加取樣器,可添加的websocket取樣器有七種:
1)WebSocket Close —— 關(guān)閉ws連接
2)WebSocket Open Connection —— 打開ws連接
3)WebSocket Ping/Pong —— ping/pong心跳機(jī)制,檢測連接是否還存在
4)WebSocket Sampler
5)WebSocket Single Read Sampler —— 只接收響應(yīng)(消息推送)
6)WebSocket Single Write Sampler —— 只發(fā)送請(qǐng)求
7)WebSocket request-response Sampler —— 發(fā)送請(qǐng)求及接收響應(yīng)
界面如下圖所示:
3.WebSocket Sampler 取樣器界面詳解
針對(duì)界面中各選項(xiàng)說明:
名稱:WebSocket Sampler組件的自定義名稱,見名知意最好。
注釋:即添加一些備注信息,對(duì)該WebSocket Sampler組件的簡短說明,以便后期回顧時(shí)查看。
(1)WebServer
Server Name or IP:發(fā)送請(qǐng)求的目標(biāo)服務(wù)器的IP地址或者域名。
Port Number:服務(wù)器地址后的端口號(hào),有則填寫,沒有不用填寫。
(2)Timeout (milliseconds)
Connection:鏈接建立的最大超時(shí)時(shí)間,單位毫秒。如果達(dá)到超時(shí)時(shí)間設(shè)置后鏈接未建立,則sampler失敗。
Response :對(duì)響應(yīng)消息的最大等待時(shí)間,單位毫秒。到達(dá)設(shè)定時(shí)間后WebSocket鏈接關(guān)閉。
(3)WebSocket Request
Implementation:只支持RFC6455(v13) ,WebSocket協(xié)議標(biāo)準(zhǔn)的最新版。
Protocol:有ws與wss之分。ws前綴是WebSocket連接的辨別標(biāo)識(shí),wss前綴是WebSocket安全連接的辨別標(biāo)識(shí)。根據(jù)自己需要訪問接口的實(shí)際情況填寫。
Content encoding:內(nèi)容編碼。有中文推薦編寫UTF-8。
Connection Id:連接ID。
Path:訪問接口的路徑。
Ignore SSL certificate errors:忽略SSL證書錯(cuò)誤。
Streaming connection:選擇TCP session要不要保持,如果勾上標(biāo)識(shí)連接會(huì)一直存在,如果沒有勾上,那么第一次響應(yīng)后該鏈接就會(huì)被關(guān)閉。
(4)同請(qǐng)求一起發(fā)送參數(shù)
可以填寫key-value形式的參數(shù)。(發(fā)送了好像不太好使,請(qǐng)求參數(shù)還是填寫在下面的Request data中吧)
Request data:填入同請(qǐng)求一起發(fā)送參數(shù),與HTTP采樣器類似,結(jié)合被測接口說明文檔來進(jìn)行配置。
(5)Web Socket Response:接口響應(yīng)相關(guān)設(shè)置
Response pattern:采樣器將等待含有該標(biāo)識(shí)的消息并繼續(xù)通信(或者直到timeout,該連接關(guān)閉)
Close connection pattern:如果服務(wù)器返回的消息含有填寫的字符,就結(jié)束會(huì)話。
Proxy Server (currently not supported by Jetty):編輯代理服務(wù)器信息代(當(dāng)前不支持Jetty)
Server Name or IP:服務(wù)器IP地址或域名。
Port Number:端口號(hào)。
Username:用戶名。
Password:密碼。
Message Backlog:定義服務(wù)器返回消息保留的最大長度。
4.WebSocket Sampler 接口示例
(1)編輯取樣器中信息
(2)添加 —> 監(jiān)聽器 —> 察看結(jié)果樹
(3)運(yùn)行查看結(jié)果
四、設(shè)置取樣器順序方式
設(shè)置取樣器的先后執(zhí)行順序,一般為:
1)使用WebSocket Open Connection,建立ws連接;
2)使用WebSocket Single Write Sampler,請(qǐng)求訂閱相關(guān)數(shù)據(jù);
3)使用WebSocket Single Read Sampler,接收消息推送;
4)使用WebSocket Ping/Pong,確定長連接;
5)使用WebSocket Close,關(guān)閉ws連接。注:WebSocket request-response Sampler 兼具請(qǐng)求與響應(yīng)功能,可視需求選擇。
1.WebSocket Open Connection
設(shè)置ws的相關(guān)連接信息:
2.WebSocket Single Write Sampler
使用現(xiàn)有連接,發(fā)送訂閱請(qǐng)求:
3.WebSocket Single Read Sampler
使用現(xiàn)有連接,接收消息推送:
4.WebSocket Ping/Pong
心跳檢測:
5.WebSocket Close
關(guān)閉ws連接:
6.運(yùn)行,查看結(jié)果樹
文章來源:http://www.zghlxwxcb.cn/news/detail-460597.html
總結(jié)
以上,就我這次我跟大家分享的全部內(nèi)容了,如果大家覺得不錯(cuò),請(qǐng)留個(gè)贊吧!當(dāng)然也很期待你的打賞哦
如果大家有什么想法,歡迎跟我聯(lián)系~文章來源地址http://www.zghlxwxcb.cn/news/detail-460597.html
到了這里,關(guān)于使用JMeter測試基于WebSocket協(xié)議的服務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!