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


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

1.1 為什么

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

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

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

1.2    怎么用

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

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

  

1.3  示例

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

> jmeter -n -t test1.jmx -l result.jtl 

例2:指定日志路徑的:

> 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報告

 

二、     生成動態報告

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是重建報告文件夾(可省略),最后執行命令生成報告。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM