大家都知道 dubbo 是一個優秀 rpc 框架,它一般(dubbox 除外)通過對外提供 tcp協議的接口進行外部調用。而我們日常使用的測試工具 jmeter 並不支持 dubbo 協議的請求。所以本文到此結束,謝謝觀看,再見。
當然 jmeter 本身的確是不支持 dubbo 的請求,但是呢,有一個老哥,他通過 dubbo 的泛化調用特性寫了一個jmeter 的插件,使用這個插件可以很方便的進行 dubbo 接口的調用。下面就來說說如果使用 jmeter 進行 dubbo 接口測試。
安裝插件
- 首先我們要安裝的這個插件叫 jmeter-plugins-for-apache-dubbo,下面是他相關的幾個地址
- 項目的 github 地址
- 官方文檔地址
- 各版本下載地址
- 下載插件
安裝插件的第一件事肯定是下載了,點擊上面的各版本下載地址去下載最新的插件,這里有兩點要注意。
- 第一,作者版本記錄放在github,下載的包放在的卻是碼雲,可能基於下載速度的考慮。但是碼雲下載超過1M 要強制登錄,所以前提你要有一個碼雲賬號。
- 第二,作者打了兩種包,一種是包含依賴的包 jmeter-plugins-dubbo-x.x.x-jar-with-dependencies.jar,另一種不包含依賴的包 jmeter-plugins-dubbo-x.x.x.jar。一般情況下推薦使用第一種,直接可以使用。第二種還要下載項目依賴的包再一個一個放進去。除非出現依賴沖突,否則別沒事找事。
- 安裝插件
安裝就比較簡單了,把上步下載的包放入jmeter 安裝目錄下的 ${JMETER_HOME}\lib\ext,重啟就 OK 了
打開 Jmeter
默認會創建一個 Test Plan (測試計划)
創建線程組
在 Test Plan 上右擊,然后添加 -> 線程 -> 線程組
線程組配置
如果只是接口測試的話直接用默認配置的就可以了,這些配置與壓測有關,后面會另起文章說明
添加 dubbo 默認配置
右擊線程組,添加 -> 配置元件 -> Dubbo Config
配置 dubbo 默認配置
這里就需要按照你項目的具體情況進行配置了
- Protocol 對應項目中 dubbo 使用的協議,這里我們使用的 zk 協議
- Address 就是你的注冊中心的地址了
- Group 項目配置的分組
其它按需配置就可以了
添加 Dubbo 取樣器
右擊 線程組,添加 -> 取樣器 -> Dubbo Sample
配置 Dubbo 取樣器
- 獲得接口列表
如果不想直接輸入的話,點擊 Get Provider List 會自動連接上面 Dubbo Config 配置的 zk 地址獲得所有注冊的服務
- 點擊 Get Provider List
1. - 確定提示
1. 點擊按鈕后會有一個可能會比較耗時的提示,不管點 Yes 就行 - 獲取完成后提示
1. - 選擇要進行測試的接口與方法
- 選擇你要調用的接口
1. 在 Interfaces 的下拉框選擇,當然你也可以直接輸入 - 選擇你要調用的方法
1. 在 Methods 下拉框選擇,當然你同樣可以輸入 - 設置參數
1. 我們以一個判斷是否為工作日的接口為例- 接口定義
- 參數定義
- 響應值定義
2. 添加參數
1. 點擊 Args 右邊的,增加按鈕
1. 在 paramType 框內添加參數類的全限定名,注意這里是 paramType 是**參數類型**而不是參數名稱
1. 在 paramValue 添加你要傳參的參數類的 json 形式
1. 
運行接口
添加察看結果樹
上一步運行后,運行一閃而過,除非查服務端日志,否則我們肯定不知道響應的接口是什么。所以要配置一下結果記錄
右擊 線程組,添加 -> 監聽器 -> 察看結果樹 再運行一次,發現察看結果樹內已經有請求記錄了,其中響應數據就是本次請求的結果。請求結果比真正的返回類多了一個 class 字段,因為是使用的泛化調用,這里是告知響應類的類型