jmeter學習記錄--09--命令行運行與生成報告

1、     使用命令行方式運行Jmeter

1.1 爲何

使用GUI方式啓動jmeter,運行線程較多的測試時,會形成內存和CPU的大量消耗,致使客戶機卡死。html

因此正確的打開方式是在GUI模式下調整測試腳本,再用命令行模式執行。python

命令行方式支持在多個環境下使用,windosw的dos環境下,也能夠在linux環境上執行。linux

1.2    怎麼用

執行路徑:執行命令前要檢查當前目錄是不是%JMeter_Home%\bin 目錄;若是 JMeter 腳本不在當前目錄,須要指定完整的路徑;若是要把執行的結果保存在其餘地方也要指定完整的路徑。命令中不指定測試計劃與測試結果的路徑時,默認都是在該目錄下。git

命令:jmeter -n -t <testplan filename> -l <listener filename>apache

  

1.3  示例

例1:測試計劃與結果,都在%JMeter_Home%\bin 目錄windows

> jmeter -n -t test1.jmx -l result.jtl 分佈式

例2:指定日誌路徑的:post

> jmeter -n -t test1.jmx -l report\01-result.csv -j report\01-log.log      性能

例3:默認分佈式執行:測試

> jmeter -n -t test1.jmx -r -l report\01-result.csv -j report\01-log.log

例4:指定IP分佈式執行:

> jmeter -n -t test1.jmx -R 192.168.10.25:1036 -l report\01-result.csv -j report\01-log.log

例5:生成測試報表

> jmeter -n -t 【Jmx腳本位置】-l 【中間文件result.jtl位置】-e -o 【報告指定文件夾】

> jmeter -n -t test1.jmx  -l  report\01-result.jtl  -e -o tableresult

例6:已有jtl結果文件,運行命令生成報告

> jmeter -g【已經存在的.jtl文件的路徑】-o 【用於存放html報告的目錄】

> jmeter -g result.jtl -o ResultReport 

 

注意:

1)-e -o以前,須要修改jmeter.properties,不然會報錯;

2)-l 與-o 目錄不同,最後生成兩個文件夾下。

3)命令中不寫位置的話中間文件默認生成在bin下,下次執行不能覆蓋,須要先刪除result.jtl;報告指定文件夾同理,須要保證文件夾爲空

模板爲report-template,結果目錄D:\apache-jmeter-3.2\bin\resulttable

 

 

1.4 結果文件

結果文件類型爲 jtl 或 csv,測試計劃裏添加的哪一種監聽器,就可經過JMeter的相應的監聽器瀏覽結果文件,查看最終的結果。

也能夠用xslproc,將jtl格式轉爲html的形式。

 

調用jmeter,並生成報告
${JmeterHome}/bin/jmeter.sh -n -t ScriptName.jmx -l log.jtl
將jtl格式轉換成html格式
xsltproc ${JmeterHome}/extras/jmeter-results-detail-report.xsl log.jtl> newlog.html

說明:

jmeter-results-detail-report.xsl 、jmeter-results-report.xsl是文件轉換模板,這個均可以進行編輯,好比添加一些值顯示。

 

報告文件類型見下文。

 

 

Python 調 Jmeter 執行參數化 jmx 腳本

Jmeter Thread Group中若是存在HTTP request執行失敗,就對整個Thread Group從新執行,限定最大執行次數N次

利用xsltproc轉換jtl報告到html報告

 

2、     生成動態報告

JMeter3.0版本發佈後,支持動態報表報告。編寫性能測試報告更加容易。 這裏是對生成報告示例的詳細描述。

測試過程:執行測試文件--》生成測試結果文件---》生成最終的測試報告

2.1   準備

修改jmeter.properties

把save這塊的內容基本上都改爲true就行

jmeter.save.saveservice.data_type=true

jmeter.save.saveservice.label=true

jmeter.save.saveservice.response_code=true

# response_data is not currently supported for CSV output

jmeter.save.saveservice.response_data=true

# Save ResponseData for failed samples

jmeter.save.saveservice.response_data.on_error=false

jmeter.save.saveservice.response_message=true

jmeter.save.saveservice.successful=true

jmeter.save.saveservice.thread_name=true

jmeter.save.saveservice.time=true

jmeter.save.saveservice.subresults=true

jmeter.save.saveservice.assertions=true

jmeter.save.saveservice.latency=true

jmeter.save.saveservice.connect_time=true

jmeter.save.saveservice.samplerData=true

jmeter.save.saveservice.responseHeaders=true

jmeter.save.saveservice.requestHeaders=true

jmeter.save.saveservice.encoding=false

jmeter.save.saveservice.bytes=true

# Only available with HttpClient4

#jmeter.save.saveservice.sent_bytes=true

jmeter.save.saveservice.url=true

jmeter.save.saveservice.filename=true

jmeter.save.saveservice.hostname=true

jmeter.save.saveservice.thread_counts=true

jmeter.save.saveservice.sample_count=true

jmeter.save.saveservice.idle_time=true

# Timestamp format - this only affects CSV output files

# legitimate values: none, ms, or a format suitable for SimpleDateFormat

jmeter.save.saveservice.timestamp_format=ms

jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss

 在jmeter.properties或者user.properties確認以下配置項:

jmeter.save.saveservice.bytes = true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
# the timestamp format must include the time and should include the date.
# For example the default, which is milliseconds since the epoch: 
jmeter.save.saveservice.timestamp_format = ms
# Or the following would also be suitable
jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss

  

若是但願在Errors報告中展現更詳細數據,須要確保以下配置

   jmeter.save.saveservice.assertion_results_failure_message = true

若是使用了事務控制器(Transaction Controller),確認Generate parent sample爲未勾選狀態

 

2.2 命令

jmeter -n -t 【Jmx腳本位置】-l 【中間文件result.jtl位置】-e -o 【報告指定文件夾】 

命令執行測試文件,生成測試結果文件jtl,生成最終的測試報告  

2.3報告示例

打開【報告指定文件夾】的index.html頁面

 

 

 

2.5       報告釋義

  • APDEX(Application Performance Index)

應用程序性能滿意度的標準,範圍在0-1之間,1表示達到全部用戶均滿意。是由APDEX公司推出的。計算公式:

 

 

  • Requests Summary

請求的經過率(OK)與失敗率(KO),百分比顯示。

  •  Statistics

數據分析,基本將Summary Report和Aggrerate Report的結果合併。

  • Errors

錯誤狀況,依據不一樣的錯誤類型,將全部錯誤結果展現。

  • Top 5 Errors by sampler

top5錯誤

  • Over Time

Response Times Over Time: 響應時間

Bytes Throughput Over Time: 字節接收/發送的數量

Latencies Over Time:延遲時間

  •  Throughput

Hits Per Second: 每秒點擊率

Codes Per Second: 每秒狀態碼數量

Transactions Per Second: 每秒事務量

Response Time Vs Request: 響應時間點請求的成功/失敗數

Latency Vs Request: 延遲時間點請求的成功/失敗數

  • Response Times

Response Time Percentiles: 響應時間百分比

Active Threads Over Time: 激活線程數

Time Vs Threads: 測試過程當中的線程數時續圖

Response Time Distribution: 響應時間分佈

 

測試的簡單過程記錄:使用Jmeter測試帶有Ajax請求的頁面

 

實時顯示jmeter測試結果,可以使用:python+Taurus+jmeter 連接

 

JMeter-自動生成測試報告這裏提到了在windows下如何手動自動生成測試報告

bat腳本

del /s /Q D:\apache-jmeter-3.2\bin\result.jtl
rd /s  /Q D:\abc\HttpReport
md D:\abc\HttpReport
jmeter -n -t D:\apache-jmeter-3.2\bin\test1.jmx  -l result.jtl -e -o D:\abc\HttpReport

del是刪除jtl,rd是刪除報告文件夾,md是重建報告文件夾(可省略),最後執行命令生成報告。

 

 

相關文章
相關標籤/搜索