使用JMeter模擬裝置通過MQTT傳送資料

語言: CN / TW / HK

highlight: arduino-light

本文正在參加「金石計劃 . 瓜分6萬現金大獎」

需求: 需要一個工具能夠支援MQTT協議傳送各種不同的資料。

目的: 模擬小型溫室裝置反饋,搭建一個測試環境,根據測試的資料顯示硬體的狀態和數值。

工具:JMeter

環境:需要配置Java執行環境。

操作步驟:

1. 下載JMeter執行包

下載地址:http://jmeter.apache.org/download_jmeter.cgi,下載後可以解壓到任意目錄

2. 安裝JDK,配置Java的執行環境(請自行用谷歌或必應搜尋)

3. 啟動jmeter的執行程式

開啟解壓檔案的bin目錄,執行命令:sh jmeter

開啟後如下圖,在新增測試計劃的具體事例時,我們是找不到MQTT協議的。所以我們還需要安裝MQTT的外掛包

0

4. 安裝MQTT外掛

  1. 從 GitHub 上下載最新版本外掛 mqtt-xmeter-2.0.2-jar-with-dependencies.jar,該外掛支援 JMeter 3.2 及以上版本。
  2. 將外掛 jar 包拷貝到 JMeter 的外掛目錄:$JMETER_HOME/lib/ext
  3. 重新啟動 JMeter。

這時候在去建立測試事例,就能看到支援MQTT協議的測試入口了

0

5. 切換到中文

預設是英文,可以手動切換成中文。

0

如果想修改預設的語言配置,開啟bin目錄下的jmeter.properties檔案,搜尋language,把#language=en 改成language=zh_CH

0

重啟後,預設開啟就是中文了。接下來我們開始建立一個MQTT的測試。

6. 建立測試用例

a. 建立執行緒組

主要設定執行緒數、Ramp-Up時間和迴圈次數。下面表示的1秒鐘內啟動2個執行緒,傳送1次請求資料。如果迴圈次數勾選永遠,就會一直髮送。

0

b. 建立MQTT連線

  1. 先建立一個Connect連線MQTT

00

注意超時時間,這裡預設的是10毫秒,如果MQTT服務不穩定,可能會出現偶爾連不上的問題,建議1000毫秒

  1. 建立MQTT pub Sampler錄入要傳送MQTT的topic,如果需要傳送不同資料,可以建立一個CVS,從表裡獲取資料。這時候在Pub sampler 裡就需要使用${}來獲取資料,字串要加“”。

0

如果想要重複獲取資料,在遇到檔案結束符再次迴圈要選true,停止執行緒那裡要選false。

0

  • 最好設定一個定時器,控制傳送的頻率。比如設定10毫秒一次,相當於1個執行緒1秒傳送100次資料

0

最後,建立一個檢視結果數,可以檢視傳送的明細。看彙總就建立一個彙總報告。

如果要模擬多個裝置,那就建立多個執行緒組即可。如果想要測試MQTT服務能承受多大的併發, 可以根據需要設定執行緒數和間隔時間,不過這個數量如果特別大的話,併發量會不精準,但總體上還是可以達到我們的測試目的。

本文正在參加「金石計劃 . 瓜分6萬現金大獎」