一、 使用命令行方式运行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是重建报告文件夹(可省略),最后执行命令生成报告。