菜鳥的性能測試之路(四)——Jmeter生成性能報(bào)告

接上次我利用了Jmeter做完壓測之后,現(xiàn)在我就要把它自動(dòng)生成一個(gè)HTML的性能報(bào)告了。

由于性能測試測的是性能,所以此處建議使用命令行,而不是圖形界面。用命令行界面的優(yōu)勢有如下幾點(diǎn):

1.圖形界面消耗的資源比命令行界面大得多;

2.命令行界面可以用于測試大型負(fù)載的性能測試;

3.可以部署在持續(xù)集成的CI工具,例如jenkins。

埋坑與填坑之路

于是我就開啟了jmeter非GUI的暴走模式,剛開始到處碰壁,下面就把遇到的問題和解決辦法分享給大家。

首先用cmd打開windows的命令行窗口, cd切換到j(luò)meter bin所在的目錄。因?yàn)槲业腏meter是放在了D盤的D:\Program Files (x86),?所以我的是 D:\Program Files (x86)\apache-jmeter-3.0\bin 。

接著運(yùn)行 jmeter -n -t D:\Program Files (x86)\apache-jmeter-3.0\result\Test.jmx -l D:\Program Files (x86)\apache-jmeter-3.0\result\demo.csv

其中?? -n 表示運(yùn)行jmeter非GUI,如果直接jmeter?回車,就會(huì)打開GUI界面。

??????????-t?指定的腳本文件及其路徑。

??????????-l?輸出結(jié)果指定的路徑,默認(rèn)是輸出到bin目錄下的jmeter.log


接下來讓人抓狂的事情發(fā)生了:報(bào)錯(cuò)An error occured:Unknown arg

@#@¥#¥%……¥¥……¥……¥¥&¥%#%¥……¥&¥……¥……¥&¥¥……&(內(nèi)心戲:OMG, what happen? What's wrong?)

由于我有python的編程經(jīng)驗(yàn),其中python對(duì)于縮進(jìn)有嚴(yán)格的限制,我就猜想,會(huì)不會(huì)是我的路徑有問題?

D:\Program Files (x86)\apache-jmeter-3.0\result\Test.jmx? (問題其實(shí)就在這里)

命令行界面對(duì)于空格也有一定的規(guī)則,我路徑錯(cuò)誤就在于Program Files (x86)這個(gè)文件夾名稱存在空格。

所以解決方法是把我的jmeter直接移動(dòng)到根目錄,變成D:\apache-jmeter-3.0

當(dāng)然我也可以把Program Files(X86)中的空格去掉,但是我不會(huì)這么做,因?yàn)檫@個(gè)文件夾下面裝了好多東西。

OK,這次接著采用我上次用過的百度測試的jmx腳本來調(diào)試,再次運(yùn)行命令,jmeter -n -t?D:\apache-jmeter-3.0\testFile\testBaidu.jmx -l?D:\apache-jmeter-3.0\testFile\csvlog.log -e -o?D:\apache-jmeter-3.0\testFile\Report


運(yùn)行界面

yes, success!

正確的指令打開方式

jmeter –n –t?<jmx filepath>?-l <csv log path>? -e –o <report folder path>

-n:?非GUI模式執(zhí)行JMeter

-t: 執(zhí)行測試文件所在的位置

-l: 指定生成測試結(jié)果的保存文件,jtl文件格式

-e: 測試結(jié)束后,生成測試報(bào)告

-o: 指定測試報(bào)告的存放位置

該方式的輸入,為JMX file path,另外兩個(gè)參數(shù)(CSV log和report folder)皆為輸出。

需要注意的是,csv log不能在report folder下,否則將報(bào)類似csv log is not empty之類的錯(cuò)誤。

輸出的CSV文件如下(百度測試為例):


CSV文件

報(bào)告展示

報(bào)告生成完畢后,目錄結(jié)構(gòu)如下:


Report folder


Dashboard


Test and Report Information

列出csv log文件名,已經(jīng)報(bào)告生成所花費(fèi)的時(shí)間(起始時(shí)間,結(jié)束時(shí)間)。

APDEX

應(yīng)用程序性能指標(biāo)。

Apdex:性能結(jié)果,范圍0-1,1表示滿意。

T:滿意閾值,小于或等于該值,表示滿意。

F:失敗閾值,大于或等于該值,表示不滿意。

處于T與F之間,表示可容忍。


Requests Summary

所有Request的成功比例,OK表示成功,KO表示不成功。

Statistics

數(shù)據(jù)分析。

Samples:線程數(shù)量

KO:失敗數(shù)量

Error:失敗率

Average:平均耗時(shí)

Min:最小耗時(shí)

Max:最長耗時(shí)

90th/95th/99thpct:90%、95%、99%的線程耗時(shí)

Throughput:每秒鐘發(fā)送的請(qǐng)求數(shù)量

Received:接收網(wǎng)絡(luò)響應(yīng)耗時(shí)

Sent:發(fā)送網(wǎng)絡(luò)請(qǐng)求耗時(shí)


Errors

會(huì)給出所有的錯(cuò)誤原因。


OverTime

(1)?Response Time Over Time

隨時(shí)間變化,每個(gè)時(shí)間節(jié)點(diǎn)上的線程平均響應(yīng)時(shí)間


(2)?Bytes Throughput Over Time



(3)?Latencies Over Time

隨時(shí)間變化,每個(gè)時(shí)間節(jié)點(diǎn)上的平均響應(yīng)延時(shí)。




Thoughput

(1)?Hits Per Second (excluding embedded resources)

每秒鐘向服務(wù)器發(fā)送的請(qǐng)求數(shù)量。


(2)?Codes Per Second (excluding embedded resources)

每秒鐘服務(wù)器返回的ResponseCode數(shù)量。


(3)?Transactions Per Second

服務(wù)器每秒鐘處理的事務(wù)數(shù)量。


(4)?ResponseTime Vs Request

每秒發(fā)送多少個(gè)請(qǐng)求時(shí),所對(duì)應(yīng)的平均響應(yīng)時(shí)間。


(5)?LatencyVs Request

每秒發(fā)送多少個(gè)請(qǐng)求時(shí),所對(duì)應(yīng)的平均延時(shí)。


Response Times

(1)?ResponseTime Percentiles

響應(yīng)時(shí)間與百分比的對(duì)應(yīng)關(guān)系,即有百分之多少的線程花費(fèi)了某一響應(yīng)時(shí)間。


(2)??Active Threads Over Time



(3)?TimeVs Threads

N個(gè)活動(dòng)線程情況下的平均響應(yīng)時(shí)間。


(4)?Response TimeDistribution

在某一響應(yīng)時(shí)間段內(nèi)的線程響應(yīng)數(shù)量。



報(bào)告詳情可以參考:JMeter-Generating Dashboard

最后還有一點(diǎn)要注意的是,每次啟動(dòng)命令之前,report的文件夾內(nèi)容必須和 jtl 文件一起清空。



讀更多的好書,拍更美的照片,寫更酷的代碼,遇見更有趣的人,愿望是實(shí)現(xiàn)從IT菜鳥到全棧工程師的蛻變。

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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