jmeter环境配置
① JMETER_HOME=D:\apache-jmetes\apache-jmeter-4.0 (就是jmeter保存的路径)
② CLASSPATH= %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
③ 系统变量path后面加上 %JMETER_HOME%\bin;
④ cmd输入jmeter 直接打开
jmeter调整内存大小,避免后期机器压到极限
1.jmeter安装目录,bin目录下右键使用记事本打开jmeter.bat【windows】
2.调整至512m或1024m
jmeter分布式配置
jmeter分布式执行原理:
1.Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
2.执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
3.执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
控制机(Controller)为本机:
1.打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts={IP}:1099,1099是端口号,可以随意自定义。IP和1099是slave机的IP及端口,多台slave之前用英文","隔开,调度机(master)启动前保证执行机(slave)的jmeter-server.bat执行,防火墙关闭
例:remote_hosts=192.168.0.45:1099,192.168.0.101:1888
2.打开jmeter安装目录bin下的jmeter.bat,启动jmeter。选择运行,有运程启动、运程全部启动两个选项,运行启动可以指定某个执行机启动,全部启动启动所有执行机。注:需要的启动的执行机如果包含本机,则还需要把本机的ip及端口写入jmeter.properties中的remote_hosts中,启动jmeter-server.bat
控制机(Controller)非本机:
1.打开Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts={IP}:1099,1099是端口号,可以随意自定义。IP和1099是slave机的IP及端口,多台slave之前用英文","隔开,调度机(master)启动前保证执行机(slave)的jmeter-server.bat执行,防火墙关闭
2.打开jmeter-server.bat文件,就设置完成了,等待控制机(Controller)启动。
注意:
1.调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
2.参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
3.每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
线程数和循环次数进行参数化
在使用JMeter进行性能测试自动化时,可能会有如下需求:
指定运行多少线程,指定运行多少次,需要重新指定。
JMeter提供了方法可以动态修改属性,在命令行使用 -J 来指定JMeter Properties。使用__P() 函数来获取命令中指定的属性值
_JthreadCount=2为test.jmx测试计划要指定的线程数
-Jcycle=2为test.jmx测试计划要指定的每个线程的迭代次数
-Jduration为持续时间,要压测的时间
jmeter命令行常见参数及意义:
-h:帮助 -> 打印出有用的信息并退出
-n: 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t :测试文件 -> 要运行的 JMeter 测试脚本文件 参数:jmx脚本路径,若非当前目录需用全路径或相对路径
-l :日志文件 -> 记录结果的文件 参数:结果文件路径,路径不存在时会自动创建
-r: 远程执行 -> 在Jmter.properties文件中指定的所有远程服务器,服务器列表由JMETER_HOME\bin\jmeter.properties中的remote_hosts指定
-R:指定远程(分布式)服务器列表 。参数:指定服务器列表,配置形式同remote_hosts
-e :设置测试完成后生成测试报表
-o :指定测试报表生成文件夹。文件夹必须为空或者不存在 参数:报表文件路径
-H: 代理主机 -> 设置 JMeter 使用的代理主机 参数:代理服务器域名或者IP
-P: 代理端口 -> 设置 JMeter 使用的代理主机的端口号 参数:代理服务器端口号
-g: 指定测试结果文件路径。仅用于生成测试报告 参数:csv结果文件
jmeter命令行执行
命令行操作生成jtl及html报告:
执行路径:检查是否在%Jmeter_Home%\bin目录,若不在当前目录需要指定完整的路径,如果在可以使用相对路径。
命令:jmeter -n -t <testplan_file.jmx> -r -l <listener_file.jtl> -e –o <file_directory>
示例: jmeter -n -t testplan.jmx -r -l test.jtl -e –o testreport
示例含义:则表示以命令行模式,所有远程机运行testplan.jmx文件,输出的日志文件为test.jtl,测试结果存放于testreport文件夹中
Html压测报告中含义
APDEX(Application Performance Index) :应用程序性能满意度的标准,范围在0-1之间,1表示达到所有用户均满意。
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: 响应时间分布
jtl聚合报告查看及分析
Label:说明是请求类型,如Http,FTP等请求。
Samples:也就是图形报表中的样本数目,总共发送到服务器的样本数目。
Average:也就是图形报表中的平均值,是总运行时间除以发送到服务器的请求数。
Median:也就是图形报表中的中间值,是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
90%line:是指90%请求的响应时间比所得数值还要小。
Min:是代表时间的数字,是服务器响应的最短时间。
Max: 是代表时间的数字,是服务器响应的最长时间。
Error%:请求的错误百分比。
Throughput:也就是图形报表中的吞吐量,这里是服务器每单位时间处理的请求数,注意查看是秒或是分钟。
KB/sec:是每秒钟请求的字节数。
使用技巧:
-
jmeter中使用正则表达式匹配获取多个参数时,如匹配{“time“:1587797925,“url“:“exchange-order/loop“}这段话,可使用正则表达式 “time“: (\d+),“url“:“(.*?)“ 来匹配,引用名称是message,模板为$1$$2$,那么可用${message_g1},${message_g2},${message_g0}分别引用1587797925,exchange-order/loop,及“time“:1587798084,“url“:“exchange-order/loop“
-
jmeter中用户参数可放入一些非参数文件中的固定参数,如token值,key值等,后面接口可直接调用这些参数