jmeter 测试websocket接口(一)
生活随笔
收集整理的這篇文章主要介紹了
jmeter 测试websocket接口(一)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
jmeter 測(cè)試websocket接口時(shí),需要對(duì)jmeter添加測(cè)試websocket的jar包。
下載地址:
https://download.csdn.net/download/qq_14913813/8568431
https://github.com/emqtt/mqtt-jmeter
https://github.com/emqtt/mqtt-jmeter/releases
一、添加Jmeter對(duì)WebSocket協(xié)議的支持插件
1、到https://github.com/maciejzaleski/JMeter-WebSocketSampler下載Jmeter的WebSocket協(xié)議的支持插件:JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar,并直接將這個(gè)jar包放到Jmeter軟件的\lib\ext\目錄下。 2、另外,查閱https://github.com/maciejzaleski/JMeter-WebSocketSampler/wiki/Dependencies看到,這個(gè)插件需要以下幾個(gè)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 對(duì)于1.0.1的版本,這些可以到http://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.1.1.v20140108/網(wǎng)站下載。網(wǎng)上也有整理好的,可以到360云盤(pán)下載http://yunpan.cn/cFDUNhHywxsMh?(提取碼:2c0b),也可以到http://download.csdn.net/detail/qq_14913813/8568431CSDN網(wǎng)站下載。直接放到Jmeter目錄的\lib\ext\目錄下即可。 3、以上jar包都準(zhǔn)備好并放到Jmeter目錄的\lib\ext\目錄下后,重啟Jmeter之后可以在sampler中看到websocket sampler這一項(xiàng)。?
? 二、WebSocket Sampler簡(jiǎn)介
1、WebServer (1)Server Name or IP:WebSocket發(fā)送的目標(biāo)服務(wù)器的地址或者名稱(chēng)(2)Port Number:WebSocker服務(wù)器監(jiān)聽(tīng)的端口號(hào)。(一般是HTTP 80端口,可以通過(guò)WireShark數(shù)據(jù)包得到) 2、Timeout:? (1)Connection – 發(fā)送一個(gè)連接請(qǐng)求后,Jmeter等待連接完成的最長(zhǎng)時(shí)間,單位是毫秒。 (2)Response - 對(duì)響應(yīng)消息的最大等待時(shí)間。
3、WebSocket Request (1)Implementation – 只支持RFC6455(v13) ,WebSocket協(xié)議標(biāo)準(zhǔn)的最新版。
(2)Protocol – 有ws與wss之分,??ws前綴是WebSocket連接的辨別標(biāo)識(shí),wss前綴是WebSocket安全連接的辨別標(biāo)識(shí)。根據(jù)自己的實(shí)際情況填寫(xiě) (3)Streaming Connection – 選擇這個(gè)TCP session要不要保持,如果勾上標(biāo)識(shí)連接會(huì)一直存在,如果沒(méi)有勾上,那么得到第一次響應(yīng)后該鏈接就會(huì)被關(guān)閉。 (4)Request data:填入將要發(fā)送的請(qǐng)求,要跟開(kāi)發(fā)溝通好,這個(gè)是什么格式的消息。 4.WebSocket Response (1)Response Pattern – 采樣器將等待含有該標(biāo)識(shí)的消息并繼續(xù)通信(或者直到timeout,該連接關(guān)閉) (2)Close Connection Pattern –?如果服務(wù)器返回的消息含有這樣的字符,就結(jié)束會(huì)話。 (3)Message Backlog – 定義服務(wù)器返回消息保留的最大長(zhǎng)度。
?
? ?三、試驗(yàn)
按照網(wǎng)上的例子,可以用http://www.websocket.org/echo.html這個(gè)網(wǎng)站做一些試驗(yàn),網(wǎng)站會(huì)將收到的數(shù)據(jù)(你的request數(shù)據(jù))在服務(wù)器響應(yīng)中原樣返回。 將網(wǎng)站提供的host等信息填入即可與網(wǎng)站通信,下面是我的實(shí)驗(yàn),用于理解Jmeter中websocket sampler?
1、streaming選項(xiàng)的影響
?
(1)不勾選streaming
?
test plan設(shè)置如下:?
不勾選streaming connection結(jié)果如下:
可以看出發(fā)送的Ground control to Major Tom被返回,這個(gè)實(shí)驗(yàn)是成功的,從result tree的sampler result中Execution FLow中可以看出測(cè)試的結(jié)果與上面我們的設(shè)置之間的關(guān)系:用了5000毫秒的時(shí)間等待服務(wù)器的連接,用了20000毫秒的時(shí)間等待服務(wù)器的消息,且在接受到第一條消息后,關(guān)閉了這個(gè)websocket會(huì)話。?
(2)勾上streaming connection
可以看到在結(jié)束測(cè)試的時(shí)候,勾上streaming那個(gè)小勾后,測(cè)試結(jié)束時(shí)streaming connection還是開(kāi)著的。
?
(3)發(fā)送兩條消息
???????? 只發(fā)送一條消息可能看不出什么區(qū)別,將Websocket sampler復(fù)制一下,發(fā)送兩條信息。這樣就可以看出第二條消息發(fā)送時(shí)是直接用的第一條消息打開(kāi)的連接,服務(wù)器的響應(yīng)被歸類(lèi)到一次會(huì)話的響應(yīng)窗口。(4)、參照參考文檔設(shè)置一個(gè)測(cè)試(添加一個(gè)loop controller,設(shè)置循環(huán)次數(shù)為3)
結(jié)果如下: 循環(huán)中的sampler都勾選了streaming,最后一個(gè)sampler沒(méi)有勾選此選項(xiàng),結(jié)果中可以看出:在loop controller中的sampler使用的是一個(gè)連接,在loop外面的這個(gè)sampler會(huì)打開(kāi)一個(gè)新的連接,可以得出一個(gè)結(jié)論,實(shí)際上,當(dāng)勾選了streaming connection時(shí),不僅會(huì)在結(jié)束會(huì)話后保留連接,而且勾選了的sampler會(huì)在有可用連接是直接使用,而沒(méi)有勾選的sampler即使存在可用連接也會(huì)重新打開(kāi)一個(gè)新的連接。因此,如果是要在一個(gè)會(huì)話中發(fā)送多條消息,請(qǐng)勾選這個(gè)streaming connection。?
2、如何人為的結(jié)束一段對(duì)話
這就要用到之前提到過(guò)的response pattern和close pattern,先給出三個(gè)請(qǐng)求在沒(méi)有設(shè)置response pattern和close pattern的運(yùn)行結(jié)果以便于比較然后在第一個(gè)sampler中設(shè)置response pattern和close pattern如下(由于只建立一次連接,所以只會(huì)讀取第一個(gè)sampler中的pattern設(shè)置信息)
這樣在第二個(gè)請(qǐng)求的響應(yīng)返回不符合father這個(gè)標(biāo)識(shí),又符合了close pattern時(shí),就會(huì)斷開(kāi)連接了,此時(shí)第三個(gè)websocket勾選了streaming使用上一個(gè)連接,但實(shí)際上卻連接不上這個(gè)遠(yuǎn)程終端時(shí)就會(huì)報(bào)錯(cuò)了。(response響應(yīng)在這種情況下不能設(shè)置為空,如果先檢測(cè)到返回的內(nèi)容符合response pattern,就不會(huì)再去判斷是否符合close pattern了)
?
?
3、Message Backlog的設(shè)置
上面的試驗(yàn)使用的都是默認(rèn)的3,因此如果試驗(yàn)中的三個(gè)socket都是是在一個(gè)會(huì)話中通信,點(diǎn)擊第三個(gè)是可以看到最近的三個(gè)服務(wù)器響應(yīng)的。當(dāng)這個(gè)選項(xiàng)設(shè)置為1時(shí),就只能看到最近的一條響應(yīng)信息了轉(zhuǎn)載于:https://www.cnblogs.com/111testing/p/9535340.html
總結(jié)
以上是生活随笔為你收集整理的jmeter 测试websocket接口(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 欧拉回路【洛谷习题】无序字母对
- 下一篇: B1230 [Usaco2008 Nov