使用Jmeter進(jìn)行壓力測(cè)試

項(xiàng)目背景:我們的項(xiàng)目近期增加了一個(gè)對(duì)app進(jìn)行登錄和瀏覽統(tǒng)計(jì)的需求,來(lái)記錄客戶的設(shè)備情況和瀏覽情況來(lái)調(diào)整業(yè)務(wù)結(jié)果,會(huì)存在比較大的多并發(fā)情況,需要用到壓力測(cè)試,在這里記錄一下Jmeter進(jìn)行壓力測(cè)試的相關(guān)步驟和遇到的問(wèn)題。


準(zhǔn)備工作

下載安裝Jmeter

直接到官網(wǎng): http://jmeter.apache.org/download_jmeter.cgi 進(jìn)行下載安裝,第一次我安裝了 Source版本

jmeter下載.png

在我解壓之后進(jìn)入到Jmeter目錄的bin文件夾,可以看到j(luò)meter文件,執(zhí)行 sh jmeter 命令,發(fā)現(xiàn)報(bào)錯(cuò)了:
jmeter命令行報(bào)錯(cuò).png

我發(fā)現(xiàn)在我的bin目錄下確實(shí)沒(méi)有ApacheJMeter.jar
于是我去下載了Binaries版本的,這次發(fā)現(xiàn)bin目錄下有ApacheJMeter.jar文件
Binaries版本目錄.png

之后再次打開(kāi)jmeter文件
打開(kāi)Jmeter.png

發(fā)現(xiàn)已經(jīng)可以成功打開(kāi)了


測(cè)試用例

接下來(lái)可以找個(gè)接口試一試

已經(jīng)打開(kāi)了Jmeter了,接下來(lái)我們創(chuàng)建一個(gè)http請(qǐng)求來(lái)給接口發(fā)點(diǎn)東西,我用我們項(xiàng)目測(cè)試環(huán)境的登錄為例子:


登錄接口.png

好,接下來(lái)到j(luò)meter里面去弄一弄
首先,添加線程組


添加線程組.png

添加HTTP請(qǐng)求.png

在http請(qǐng)求下加一個(gè)監(jiān)聽(tīng)器,上面可以看到:查看結(jié)果樹(shù),用來(lái)查看結(jié)果

好了,來(lái)模擬一下接口請(qǐng)求,看下上面的頁(yè)面里的請(qǐng)求,把參數(shù)和請(qǐng)求地址核對(duì)輸入
jmeter模擬登錄接口.png

然后看一下結(jié)果
查看結(jié)果報(bào)錯(cuò).png

報(bào)錯(cuò)了,415錯(cuò)誤,不知道是什么錯(cuò),我們來(lái)看下請(qǐng)求內(nèi)容
查看結(jié)果請(qǐng)求情況.png

發(fā)現(xiàn)這個(gè)地方,Content-Type在我們之前的請(qǐng)求中是 application/json ,但是這里顯示的是 application/x-www-form-urlencoded,這肯定不行,先把這里修改一下再試試。
這里的Content-Type是在我們請(qǐng)求頭里的內(nèi)容,發(fā)現(xiàn)在Jmeter里面有一個(gè)HTTP信息頭管理器
信息頭管理.png

在信息頭管理器里面修改一下鏈接方式
請(qǐng)求頭鏈接類型設(shè)置.png

然后再運(yùn)行一下
請(qǐng)求成功.png

400.png

請(qǐng)求是成功了,但是返回報(bào)了400錯(cuò)誤,參數(shù)的問(wèn)題,我們回頭把參數(shù)的形式改變一下,寫成json解析的數(shù)據(jù),回到http請(qǐng)求的位置,編輯Body Data
bodydata.png

再跑一遍試試
后臺(tái)返回成功.png

ok,成功啦,接下來(lái)我們做一下多并發(fā)

多并發(fā)

對(duì)一個(gè)或多個(gè)接口并發(fā)請(qǐng)求

多線程設(shè)置.png

1.為我們的線程組設(shè)置結(jié)果樹(shù),圖形結(jié)果或者聚合報(bào)告
2.線程數(shù):這里的線程數(shù)可以設(shè)置一共有多少個(gè)線程,也可以看成多少個(gè)用戶或接口訪問(wèn)者
3.間隔時(shí)間:我們?cè)O(shè)置為0的時(shí)候,可以看做同時(shí)訪問(wèn),也就是并發(fā)請(qǐng)求


接下來(lái)我們修改一下線程數(shù),可以分量級(jí)分別設(shè)置為10、100、1000、10000來(lái)模擬不同量級(jí)的請(qǐng)求情況
多并發(fā)報(bào)告情況.png

在左邊我設(shè)置兩個(gè)接口請(qǐng)求,線程數(shù)設(shè)置為10,間隔時(shí)間為0,在聚合報(bào)告里面可以看到對(duì)于每個(gè)請(qǐng)求:①它統(tǒng)計(jì)響應(yīng)信息并提供請(qǐng)求數(shù) ②中位數(shù) ③平均值 ④最大 ⑤最小值 ⑥錯(cuò)誤率 ⑦大約吞吐量(以請(qǐng)求數(shù)/秒為單位)和以kb/秒為單位的吞吐量等.


注意的點(diǎn):因?yàn)橥掏铝渴菚?huì)把歷史記錄的數(shù)據(jù)也計(jì)算在內(nèi),兩個(gè)僅名稱不同的取樣器,其吞吐量為該兩個(gè)取樣器吞吐量總和的一半。所以對(duì)于不同取樣器應(yīng)該取不同的名字


給選擇器不同名字以區(qū)分統(tǒng)計(jì)報(bào)告.png

翻看了一下Jmeter的各種功能,確實(shí)很強(qiáng)大也集成得比較好,可以通過(guò)設(shè)置斷言來(lái)驗(yàn)證結(jié)果,做回歸測(cè)試也很方便。學(xué)習(xí)成本不高,簡(jiǎn)單實(shí)用,是個(gè)不錯(cuò)的選擇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容