JMeter命令⾏执⾏+⽣成HTML报告1、为什么⽤命令⾏模式
使⽤GUI⽅式启动jmeter,运⾏线程较多的测试时,会造成内存和CPU的⼤量消耗,导致客户机卡死;
所以⼀般采⽤的⽅式是在GUI模式下调整测试脚本,再⽤命令⾏模式执⾏;
命令⾏⽅式⽀持在多个环境下使⽤,windosw的dos环境下,也可以在linux环境上执⾏。
注意:使⽤命令执⾏jmeter脚本必须使⽤jmeter 3.0及以上版本。
2、怎么⽤
2.1、执⾏命令
jmeter -n -t <testplan filename> -l <listener filename>
⽰例: jmeter -n -t testplan.jmx -l test.jtl
⽰例含义:表⽰以命令⾏模式运⾏testplan.jmx⽂件,输出的⽇志⽂件为test.jtl
2.2、参数介绍
Jmeter官⽅⼿册给的介绍如下:
-h, –help -> prints usage information and exit
边走边唱 李荣浩-n, –nongui -> run JMeter in nongui mode
-t, –testfile <argument> -> the jmeter test(.jmx) file to run
-l, –logfile <argument> -> the file to log samples to
-r, –runremote -> Start remote servers (as defined in remote_hosts)
-H, –proxyHost <argument> -> Set a proxy server for JMeter to use
-P, –proxyPort <argument> -> Set proxy server port for JMeter to use
中⽂释义:
-h 帮助 -> 打印出有⽤的信息并退出
-n ⾮ GUI 模式 -> 在⾮ GUI 模式下运⾏ JMeter
-
t 测试⽂件 -> 要运⾏的 JMeter 测试脚本⽂件
-l ⽇志⽂件 -> 记录结果的⽂件
-R 远程执⾏  ->  远程执⾏机的IP(ip地址)如果有多个ip时,使⽤-R 192.168.2.170,192.168.2.171(分布式使⽤)
-r 远程执⾏ -> 在Jmter.properties⽂件中指定的所有远程服务器(分布式使⽤)
-H 代理主机 -> 设置 JMeter 使⽤的代理主机
-P 代理端⼝ -> 设置 JMeter 使⽤的代理主机的端⼝号
2.3、执⾏过程
掉了张惠妹命令:jmeter -n -t C:\Users\yzs\Desktop\Unione_performance.jmx -l report\03-result.jtl
不在jmeter安卓⽬录执⾏脚本的前提是配置了jmeter的环境变量。
2.4、报告查看
上述的命令有测试结果保存到D:\report中,在GUI模式下查看测试报告:
1、在测试计划下,添加对应的测试报告元件,举例增加了:查看结果树、聚合报告
2、在“所有数据写⼊⼀个⽂件”,选择加载对应的结果⽂件
3、下⾯就会有对应的表格展⽰,具体见下图
泰勒斯威夫特
2.5、命令⾏传递变量值
设置线程组的线程数和循环次数。
注意格式:
${__P(threadNum)}
${__P(threadCount)}
其中P前⾯是两个下划线,()内就是变量名
执⾏时,在命令⾏中⽤-J参数给变量赋值即可:
明星身份证照片
jmeter -n -t C:\Users\yzs\Desktop\Unione_performance.jmx -J threadNum=10 -J threadCount=2 -l report\03-result.jtl
此次测试相当于:10个线程,循环2次,共计20个请求。
3、⽣成HTML报告
⽣成HTML报告有2种⽅式,⼀种是直接在命令⾏加上-o参数,另⼀种是已有jtl结果⽂件,运⾏命令⽣成报告
3.1、命令⾏直接⽣成报告
jmeter -n -t 【Jmx脚本位置】-l 【中间⽂件result.jtl位置】-e -o 【报告指定⽂件夹】
-e:测试结束后,⽣成测试报告
-o:指定测试报告的存放位置
注意:-o后⾯跟的⽂件夹⼀定是不存在的或者是空⽂件夹
3.2、已有jtl结果⽂件,运⾏命令⽣成报告
jmeter -g【已经存在的.jtl⽂件的路径】-o 【⽤于存放html报告的⽬录】
注意:经实操,windows系统上,以上2种⽅法都可以⽣成HTML测试报告,但是在Linux系统上第1种⽅法,没有⽣成报告,只有第⼆种⽅法才可以(具体原因后⾯在慢慢吧)3.3、HTML报告注解
⽤浏览器打开index.html
报告详解
Dashboard:(重点查看)
Test and Report informations:指的是测试和报告信息
File:测试结果的保存⽂件名称
Start Time:测试开始时间
End Time:测试结束时间
Filter for display展⽰过滤器
APDEX(Application Performance Index):应⽤程序性能满意度的标准
其中,
“Apdex”范围在0-1之间,1表⽰达到所有⽤户均满意,越接近1满意度越⾼
“toleration threshold”:耐受阈值(0.5秒)
“frustration  threshold”:挫败阈值(1.5秒)
Requests Summary:请求的通过率(OK)与失败率(KO),百分⽐显⽰
莲花
Statistics:数据分析,基本将Summary Report和Aggrerate Report的结果合并(平均响应时间、TPS在此查看)
Errors:错误情况,依据不同的错误类型,将所有错误结果展⽰
关于Apdex的补充:
性能指数,Apdex(Application Performance Index)是⼀个国际通⽤标准,Apdex 是⽤户对应⽤性能满意度的量化值。它提供了⼀个统⼀的测量和报告⽤户体验的⽅法,把最终⽤户的体验和应⽤性能作为⼀个完整的指标进⾏统⼀度量。下图表⽰为通⽤⽤户满意度区域,0代表没有满意⽤户,1则代表所有⽤户都满意。实际业务系统开发过程中,1是团队的追求⽬标。
若所有请求的Apdex值都接近1,说明⽤户满意度优秀,也从侧⾯说明了服务器响应速度快。
通常⽽⾔,最低要求超过0.5,当然项⽬组可设定具体需求。
Charts:(辅助分析)
主要有如下特点:
(1)将测试过程中经常使⽤的数据,⽤图表的形式展⽰,让测试结果更加直观
(2)每个图表数据,有两种展⽰形式
(3)⽀持请求样例过滤显⽰
(4)⽀持导出PNG图⽚格式
Over Time Charts:
Response Times Over Time:每秒钟响应时间,X轴表⽰的是系统运⾏的时刻,Y轴表⽰的是响应时间,F(X,Y)表⽰系统随着时间的推移,系统的响应时间的变化,可以看出响应时间稳定性
Bytes Throughput Over Time:字节接收与发送的数量,每秒传输字节吞吐量,表明Jmeter在测试时,随着时间推移发送和接收的字节数
Latencies Over Time:延迟时间
Throughput Charts:
Hits Per Second:每秒点击率
Codes Per Second:每秒状态码数量
Transactions Per Second:每秒事务量
Response Time Vs Request:响应时间点请求的成功与失败数
Latency Vs Request:延迟时间点请求的成功与失败数
Response Times Charts:
Response Time Percentiles:响应时间百分⽐
Active Threads Over Time:激活线程数
Time Vs Threads:响应时间⽤户数, X轴表⽰的是活动线程数,也就是并发访问的⽤户数,Y轴表⽰的是响应时间,F(X,Y)表⽰在某种并发量的情况下,系统的响应时间是多少
Response Time Distribution:响应时间分布
3.4、HTML报告的⾃定义配置
JMeter3.0开始在bin⽬录新增了reportgenerator.properties⽂件保存了所有关于图形化HTML报告⽣成模块的默认配置,要变更配置,建议不要直接编辑该⽂件,⽽是推荐
在user.properties中去配置和覆盖。
3.4.1总体配置
总体配置都是以portgenerator.为前缀,如:portgenerator.overall_granularity=60000
overall_granularity:定义采样点粒度,默认为60000ms,通常在稳定性以外的测试中,我们可能需要定义更细的粒度,⽐如1000ms,我们可以在user.properties⽂件末尾添加如下配置
# Change this parameter if you want to change the granularity of over time graphs.
report_title:定义报告的标题,我们可能需要将标题定义为实际测试项名称
apdex_satisfied_threshold:定义Apdex评估中满意的阈值(单位ms)
apdex_tolerated_threshold: 定义Apdex评估中可容忍的阈值
Apdext = (Satisfied Count + Tolerating Count / 2) / Total Samples
另外,在jmeter.properties中,有关于集合报告中的三个百分位的默认值:
aggregate_rpt_pct1 : Defaults to 50
aggregate_rpt_pct2 : Defaults to 70
aggregate_rpt_pct3 : Defaults to 99
3.5、HTML报告的定制
JMeter的HTML报告⽣成时是使⽤了固定的模板,模板⽂件路径为./bin/report-template。
进⼊该⽬录可以看到报告的每个页⾯都有⼀个.fmkr模板⽂件,包括index.html.fmkr和./content/pages路径下的⼏个⽂件。通过查看这些模板⽂件,就可以知道怎样去进⾏报告的轻度定制,⽐如将⼀些⽂本修改得更易懂,或者修改为中⽂等
页⾯的title
倪景阳吴倩莲默认为"Apache JMeter Dashboard"
可以由reportgenerator.properties中的port_title来统⼀定义,这种⽅式就是所有页⾯的title都使⽤同⼀个。
也可以直接修改对应的.fmkr⽂件中的title标签中双引号内的值,如<title>${reportTitle!"想要设置的title"}</title>,这中⽅式可以为每个页⾯单独定义title
图表的名称
当前版本下,各图表的名称是直接在模板⽂件中定义,要修改也是直接修改模板⽂件中对应元素的值即可
如要修改Transactions Per Second图表的名称,可以直接在./content/pages/Throughput.html.fmkr⽂件中修改,效果如下图
参考: