如何用Jmeter測(cè)試微服務(wù)接口
本文介紹如何使用Jmeter測(cè)試云上Spring Cloud或Dubbo服務(wù)接口功能。
測(cè)試流程
權(quán)限說(shuō)明
為防止對(duì)云上環(huán)境內(nèi)的接口誤調(diào)用,在運(yùn)行Jmeter前您需具備以下權(quán)限。
目標(biāo)應(yīng)用的讀權(quán)限:能夠選擇該應(yīng)用發(fā)起接口訪(fǎng)問(wèn)。
接口訪(fǎng)問(wèn)權(quán)限:能夠?qū)涌谶M(jìn)行成功調(diào)用。
- 登錄EDAS控制臺(tái)。
在左側(cè)導(dǎo)航欄,選擇系統(tǒng)管理 > 權(quán)限助手。
在權(quán)限助手頁(yè)面,單擊創(chuàng)建權(quán)限策略。
在創(chuàng)建權(quán)限策略配置向?qū)ы?yè)面的創(chuàng)建自定義權(quán)限策略頁(yè)簽,設(shè)置權(quán)限策略的策略名稱(chēng)和備注。
在創(chuàng)建自定義權(quán)限策略頁(yè)簽,單擊新增權(quán)限語(yǔ)句,在加授權(quán)語(yǔ)句面板,設(shè)置對(duì)應(yīng)應(yīng)用的查看權(quán)限和接口訪(fǎng)問(wèn)權(quán)限,然后單擊確認(rèn)。
在權(quán)限效力下方,選擇允許。
在操作與資源授權(quán)區(qū)域的左側(cè)權(quán)限列表,選擇應(yīng)用 > 查看應(yīng)用和應(yīng)用 > 接口訪(fǎng)問(wèn),在右側(cè)資源列表中根據(jù)您的需求設(shè)置對(duì)應(yīng)的地域、微服務(wù)空間和應(yīng)用。
在創(chuàng)建權(quán)限策略配置向?qū)ы?yè)面,單擊下一步。
在策略預(yù)覽頁(yè)簽預(yù)覽權(quán)限,根據(jù)頁(yè)面提示在RAM控制臺(tái)創(chuàng)建自定義權(quán)限策略,并授權(quán)給對(duì)應(yīng)的RAM用戶(hù),然后單擊完成。具體操作,請(qǐng)參見(jiàn)步驟三:創(chuàng)建RAM用戶(hù)并添加授權(quán)。
控制臺(tái)面板提示新增策略授權(quán)成功,單擊返回列表查看,返回權(quán)限助手頁(yè)面,查看新建的權(quán)限策略模板。
操作步驟
步驟一:安裝插件
下載并解壓插件包jmeter-plugins-edas.jar.zip,將解壓后的jmeter-plugins-edas.jar插件文件放在Jmeter的lib/ext
目錄下,然后啟動(dòng)Jmeter。
步驟二:配置賬號(hào)及環(huán)境
在測(cè)試計(jì)劃中選擇Add > Config Element > EDAS Config,打開(kāi)配置頁(yè)面。
在EDAS Config頁(yè)面設(shè)置賬號(hào)AccessKeyId和AccessKeySecret ,并配置目標(biāo)測(cè)試環(huán)境。
步驟三:測(cè)試接口
測(cè)試Spring Cloud接口
在測(cè)試計(jì)劃中選擇Add > Sampler > EDAS Spring Cloud Sample。
EDAS Spring Cloud Sample的界面配置如下圖所示。
配置說(shuō)明如下:
配置項(xiàng)模塊
配置項(xiàng)
說(shuō)明
樣例
服務(wù)
服務(wù)
目標(biāo)Spring Cloud服務(wù)。
service-provider
路徑
目標(biāo)SpringCloud服務(wù)的接口路徑。
/echo/{string}
指定目標(biāo)調(diào)用(可選)
應(yīng)用
默認(rèn)情況下,Jmeter插件會(huì)對(duì)該微服務(wù)空間下的目標(biāo)Spring Cloud服務(wù)發(fā)起接口訪(fǎng)問(wèn)。如果該Spring Cloud服務(wù)存在多應(yīng)用,您可指定應(yīng)用進(jìn)行調(diào)用。
無(wú)
實(shí)例
默認(rèn)情況下,Jmeter插件會(huì)對(duì)該微服務(wù)空間下的目標(biāo)Spring Cloud服務(wù)發(fā)起接口訪(fǎng)問(wèn)。如果該Spring Cloud服務(wù)存在多實(shí)例,您可指定實(shí)例進(jìn)行調(diào)用。
說(shuō)明K8s應(yīng)用在每次部署后實(shí)例IP會(huì)發(fā)生變化,因此在回歸測(cè)試等場(chǎng)景中盡量避免指定目標(biāo)實(shí)例。
無(wú)
測(cè)試通道
使用EDAS測(cè)試引擎調(diào)用
默認(rèn)情況下,通過(guò)EDAS測(cè)試引擎發(fā)起測(cè)試請(qǐng)求。EDAS測(cè)試引擎會(huì)限制請(qǐng)求發(fā)送頻率,建議每秒請(qǐng)求不要超過(guò)5個(gè)。
默認(rèn)使用
使用EDAS云原生工具箱調(diào)用
通過(guò)EDAS云原生工具箱發(fā)起測(cè)試請(qǐng)求,該方式不限制發(fā)送頻率。
說(shuō)明若您需配置該方式,請(qǐng)加入釘群(釘群號(hào):34556175)聯(lián)系產(chǎn)品技術(shù)專(zhuān)家咨詢(xún)處理。
無(wú)
參數(shù)
Params
設(shè)置請(qǐng)求的Query參數(shù)。
設(shè)置如下Query參數(shù):
key:name
value:Jack
Body
設(shè)置POST和PUT請(qǐng)求的Body參數(shù)。當(dāng)前支持以下幾種Body參數(shù)類(lèi)型:
none(無(wú)Body參數(shù))
x-www-form-urlencoded
json
xml
text/plain
設(shè)置Body參數(shù)類(lèi)型:
x-www-form-urlencoded
設(shè)置key/value:
key:age
value:20
Headers
設(shè)置請(qǐng)求的Header參數(shù)。
設(shè)置如下Header:
key:User-Agent
value:Mozilla/5.0
Cookies
設(shè)置請(qǐng)求的Cookie參數(shù)。
設(shè)置如下Cookie:
key:SessionId
value:123
配置完成后,單擊圖標(biāo)開(kāi)始發(fā)起測(cè)試。您可單擊右上角的圖標(biāo),查看引擎初始化過(guò)程和調(diào)用過(guò)程的詳細(xì)日志。
說(shuō)明首次發(fā)起測(cè)試時(shí),需初始化云端測(cè)試引擎,大概持續(xù)10~20秒左右。初始化引擎后,在1個(gè)小時(shí)內(nèi)無(wú)需重新初始化。
測(cè)試Dubbo接口
在測(cè)試計(jì)劃中選擇Add > Sampler > EDAS Dubbo Sample。
EDAS Dubbo Sample界面配置如下圖所示。
配置說(shuō)明如下:
配置項(xiàng)模塊
配置項(xiàng)
說(shuō)明
樣例
服務(wù)
接口
目標(biāo)Dubbo接口。
org.apache.dubbo.springboot.demo.DemoService(版本:1.0.0,分組:dev)
方法
目標(biāo)Dubbo方法。
sayHello
指定目標(biāo)調(diào)用(可選)
應(yīng)用
默認(rèn)情況下,Jmeter插件會(huì)對(duì)該微服務(wù)空間下的目標(biāo)Dubbo服務(wù)發(fā)起接口訪(fǎng)問(wèn)。如果該Dubbo服務(wù)存在多應(yīng)用,您可指定應(yīng)用進(jìn)行調(diào)用。
無(wú)
實(shí)例
默認(rèn)情況下,Jmeter插件會(huì)對(duì)該微服務(wù)空間下的目標(biāo)Dubbo服務(wù)發(fā)起接口訪(fǎng)問(wèn)。如果該Dubbo服務(wù)存在多實(shí)例,您可指定實(shí)例進(jìn)行調(diào)用。
說(shuō)明K8s應(yīng)用在每次部署后實(shí)例IP會(huì)發(fā)生變化,因此在回歸測(cè)試等場(chǎng)景中盡量避免指定目標(biāo)實(shí)例。
無(wú)
測(cè)試通道
使用EDAS測(cè)試引擎調(diào)用
默認(rèn)情況下,通過(guò)EDAS測(cè)試引擎發(fā)起測(cè)試請(qǐng)求。EDAS測(cè)試引擎會(huì)限制請(qǐng)求發(fā)送頻率,建議每秒請(qǐng)求不要超過(guò)5個(gè)。
默認(rèn)使用
使用EDAS云原生工具箱調(diào)用
通過(guò)EDAS云原生工具箱發(fā)起測(cè)試請(qǐng)求。該方式不限制發(fā)送頻率。
說(shuō)明若您需配置該方式,請(qǐng)加入釘群(釘群號(hào):34556175)聯(lián)系產(chǎn)品技術(shù)專(zhuān)家咨詢(xún)處理。
無(wú)
參數(shù)
接口參數(shù)
設(shè)置Dubbo方法的參數(shù)。
paramType:參數(shù)類(lèi)型。
paramValue:參數(shù)值。
null:設(shè)置參數(shù)值為NULL。
參數(shù)類(lèi)型(paramType):
java.lang.String
參數(shù)值(paramValue):
helloworld
Attachment
設(shè)置Dubbo方法的調(diào)用隱式參數(shù)。
key:隱式參數(shù)鍵。
value:隱式參數(shù)值。
更多信息,請(qǐng)參見(jiàn)調(diào)用鏈路傳遞隱式參數(shù)。
key:color
value:blue
以下是Dubbo接口參數(shù)的更多樣例。
paramType
paramValue
備注
int
java.lang.String
100
Jack
接口使用兩個(gè)參數(shù),第一個(gè)參數(shù)為int型,第二個(gè)參數(shù)為字符串。
java.util.Map
{"color": "blue"}
Map類(lèi)型參數(shù)使用JSON Object形式,即使用大括號(hào)表示:{"color": "blue"}。
java.util.List
["Apple", "Banana", "Orange"]
該樣例中接口參數(shù)為L(zhǎng)ist類(lèi)型,且元素為字符串。List類(lèi)型參數(shù)使用JSON數(shù)組表示,即 ["Apple", "Banana", "Orange"]。
com.test.User
{"id": 100, "name": "Sam"}
該樣例中接口參數(shù)為自定義的User類(lèi)型,User中包含
id
和name
屬性。AbstractUser
{"id": 100, "name": "Sam", "class": "com.test.User"}
該樣例中接口參數(shù)定義為抽象類(lèi)AbstractUser。在實(shí)際參數(shù)中,需通過(guò)class屬性指明當(dāng)前參數(shù)的實(shí)際類(lèi)型,即"class": "com.test.User"。
配置完成后,單擊圖標(biāo)開(kāi)始發(fā)起測(cè)試。您可單擊右上角的圖標(biāo),查看引擎初始化過(guò)程和調(diào)用過(guò)程的詳細(xì)日志。
說(shuō)明首次發(fā)起測(cè)試時(shí),需初始化云端測(cè)試引擎,大概持續(xù)10~20秒左右。初始化引擎后,在1個(gè)小時(shí)內(nèi)無(wú)需重新初始化。
(可選)查看接口響應(yīng)
在測(cè)試計(jì)劃中選擇Add > Listener > View Results Tree。
添加完成后,重新單擊圖標(biāo)運(yùn)行配置,查看測(cè)試接口的響應(yīng)。
問(wèn)題反饋
如您在使用上述功能過(guò)程中有任何問(wèn)題,請(qǐng)加入釘群(釘群號(hào):34556175)聯(lián)系產(chǎn)品技術(shù)專(zhuān)家咨詢(xún)處理。