一、 使用命令行方式運行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是文件轉換模板,這個都可以進行編輯,比如添加一些值顯示。
報告文件類型見下文。
Jmeter Thread Group中如果存在HTTP request執行失敗,就對整個Thread Group重新執行,限定最大執行次數N次
二、 生成動態報告
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是重建報告文件夾(可省略),最后執行命令生成報告。