Jmeter****使用mock測(cè)試性能
一称近、****背景
使用jmeter測(cè)試接口性能造虎,接口調(diào)用邏輯如下:
? app—調(diào)用—>后臺(tái)接口—調(diào)用—>第三方接口傅蹂,準(zhǔn)備壓測(cè)的接口為后臺(tái)接口。由于第三方接口暫未符合要求算凿,不能被調(diào)用份蝴,但是調(diào)用后臺(tái)接口的時(shí)候依賴第三方接口的返回值。這時(shí)候需要屏蔽第三方接口氓轰,給后臺(tái)接口設(shè)置擋板婚夫,然后進(jìn)行壓測(cè)。
? 后臺(tái)接口調(diào)用需要先獲取access_token署鸡,由登錄接口返回案糙。
二、****工具
jmeter 靴庆, fiddler , aliyun(資源監(jiān)控)
三时捌、腳本設(shè)計(jì)思路:
i. 登錄接口只需登錄一次,使用正則表達(dá)式提取登錄接口返回的access_token炉抒,然后把a(bǔ)ccess_token設(shè)置成全局變量奢讨,后臺(tái)接口拿到access_token后,循環(huán)調(diào)用焰薄。
ii. 使用fiddler給后臺(tái)接口設(shè)置擋板禽笑,配置完成后,在jmeter的后臺(tái)接口配置代理服務(wù)器地址蛤奥。
四佳镜、****詳細(xì)操作步驟
Jmeter****設(shè)置
1、設(shè)置http請(qǐng)求默認(rèn)值:http協(xié)議和ServerName
2凡桥、新建線程組蟀伸,命名為【login】,右鍵點(diǎn)擊【login】線程新建http request請(qǐng)求,命名為【獲取token】啊掏,新建【察看結(jié)果樹(shù)】蠢络,執(zhí)行后可以看到返回的access_token。
3迟蜜、右鍵點(diǎn)擊【獲取token】請(qǐng)求刹孔,分別添加Regular Expression Extractor、Bean Shell Post Processor娜睛、JSON Extractor髓霞,詳細(xì)設(shè)置參數(shù)如下,變量名需要根據(jù)自己實(shí)際設(shè)置的填寫(xiě):
access_token 畦戒、”access_token”:”(.*?)” 方库、
String access_token=bsh.args[0];
print(access_token);
{access_token},)}
access_token 、 $.request_access_token
4障斋、新建一個(gè)線程組纵潦,命名為【后臺(tái)接口】,請(qǐng)求頭的Authorzation值為接口返回的access_token
5、(重要)在測(cè)試計(jì)劃中勾選第一項(xiàng)
中文解析:獨(dú)立運(yùn)行每個(gè)線程組(在一個(gè)組運(yùn)行結(jié)束后啟動(dòng)下一個(gè)),否則會(huì)出現(xiàn)后臺(tái)接口拿不到token而導(dǎo)致報(bào)錯(cuò)。
6、運(yùn)行腳本脉漏,返回成功
Fiddler****擋板設(shè)置
1、選擇AutoResponder,點(diǎn)擊Add Rule
2、輸入【獲取繳費(fèi)信息】接口地址,選擇返回的報(bào)文信息test.txt经磅,點(diǎn)擊save泌绣。勾選Enable rules
Test.txt內(nèi)容如下,可以手動(dòng)任意設(shè)置
3预厌、fiddler設(shè)置代理端口: Tools - > Options - > Connections阿迈。
默認(rèn)為8888,我本機(jī)的已被占用轧叽,所以設(shè)置為8880苗沧。(任意設(shè)置)
4、jmeter設(shè)置代理
127.0.0.1為本機(jī)地址炭晒,即常用的localhost待逞,端口設(shè)置為8880
5、目前為止网严,所有設(shè)置已完成识樱,調(diào)試執(zhí)行結(jié)果如下
性能設(shè)置
1、 標(biāo)題為mock性能,這時(shí)怜庸,我們只需要設(shè)置后臺(tái)線程組的循環(huán)執(zhí)行時(shí)間既可
設(shè)置5個(gè)虛擬用戶当犯,并發(fā)1800s(30分鐘)
2、添加以下監(jiān)控:Aggregate Report 割疾、jp@gc - Active Threads Over Time嚎卫、jp@gc - Transactions per Second、
注意:性能執(zhí)行過(guò)程中需要把View Results Tree關(guān)閉宏榕,因?yàn)榛仫@返回值會(huì)占用壓測(cè)機(jī)的資源拓诸。
性能結(jié)果分析
1、按照以上步驟執(zhí)行完成后担扑,點(diǎn)擊Aggregate Report查看結(jié)果恰响,主要關(guān)注3個(gè)參數(shù):95%Line、Error%涌献、Throughput(tps)
95%Line:95%line的響應(yīng)時(shí)間胚宦,單位為ms,上面為95%的請(qǐng)求響應(yīng)時(shí)間為0.27s
Error%:錯(cuò)誤率燕垃,如果是支付類型的接口枢劝,涉及到錢(qián)的,基本是不允許有錯(cuò)誤率卜壕。如果是一些簡(jiǎn)單的業(yè)務(wù)您旁,可允許小錯(cuò)誤率,例如1%轴捎。得看具體場(chǎng)景來(lái)定鹤盒。
Throughput:吞吐量,即每秒鐘處理的請(qǐng)求事務(wù)數(shù)侦副,TPS值根據(jù)它來(lái)確定侦锯。
(本接口業(yè)務(wù)方提供的tps為50,測(cè)試實(shí)際結(jié)果為89.9/sec秦驯,所以符合要求)
2尺碰、資源消耗:根據(jù)下面的圖表分析,CPU和MEM都低于80%的使用率译隘,服務(wù)器正常
應(yīng)用服務(wù)器
數(shù)據(jù)庫(kù)服務(wù)器
結(jié)果:性能結(jié)果滿足業(yè)務(wù)方提供的需求