帮助说明:
使用非GUI命令前先配置JMETER的环境变量,如下
环境便配置:1、【变量名】:JMETER_HOME 【变量值】:D:\tools\apache-jmeter-4.0(jmeter文件夹位置)
2、【变量名】:CLASSPATH 【变量值】:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar; %JMETER_HOME%\lib\jorphan.jar;
3、在path后面加上:%JMETER_HOME%\bin;
-h 帮助
-n 非GUI模式
-t 指定要运行的 JMeter 测试脚本文件
-l 记录结果的文件 每次运行之前,(要确保之前没有运行过,即xxx.jtl不存在,不然报错)
-r Jmter.properties文件中指定的所有远程服务器
-e 在脚本运行结束后生成html报告
-o 用于存放html报告的目录(目录要为空,不然报错)
Linux系统下的生成命令:
./jmeter -n -t <jmx文件路径> -l result.jtl -e -o <输出生成html文件路径>
实例:(新建两个空文件夹jtl和html用于存放生成的jtl和html文件[必须是空文件夹])
执行结果如图所示:
执行完后就会在创建的空文件夹生成测试报告!
/***************************特注********************************************/
如果执行命令出现以下错误:Creating summariser <summary>
Error in NonGUIDriver java.lang.IllegalArgumentException: Report generation requires csv output format, check 'jmeter.save.saveservice.output_format' property
解决方法:修改user.properties配置参数或者直接复制以下配置,再次执行命令后即可生成html可视化报告了
jmeter.save.saveservice.output_format=csv
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
jmeter.save.saveservice.timestamp_format=ms
jmeter.save.saveservice.timestamp_format=yyyy-MM-dd HH:mm:ss
jmeter.save.saveservice.print_field_names=true
生成HTML方式:
2.生成报告
a. 在压力测试结束时报告
基本命令格式:
jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>
样例:
jmeter -n -t F:\PerformanceTest\TestCase\script\getToken.jmx -l testLogFile -e -o ./output
b. 使用已有的压力测试CSV日志文件生成报告
基本命令格式:
jmeter -g <log file> -o <Path to output folder>
样例:
jmeter -g D:\apache-jmeter-3.0\bin\testLogFile -o ./output
###########################################################################################################
备注信息:
重要两点:1、正则提取,前一个接扣参数值引入到下一个接口中,2、参数化通过CSV文件,引入到下一个接口的参数中,准备测试数据,批量压测
正则表达式:通用正则匹配(.+?)
1、()[括起来的部分就是要提取的]
2、.[(点)匹配任意字符]
3、+[一次或多次]
4、?[非贪婪模式,匹配到第一个后停止]
########################################################################
如果涉及到token需要添加:HTTP信息头管理器【1、请求格式(JSON),2、参数化引用token${token }】*重点:token(一般都有一定的时效性,比如:20分钟,需要使用【仅一次控制器】,*重点:并发需要引入参数化文件设置)
如果使用并发测试需要:同步定时器(Synch)
##########################################################################
如果上个接口引用到下个接口中使用的session技术,需要1、在第一个接口中使用正则提取sessionID引用到下一个请求中2、使用参数化文件对接口进行批量压测
###########################################################################
服务器资源监控
【工具:ServerAgent】
【插件】性能度量收集器【监听器->jp@gc-PerMon MEthics Collector 】
###########################################################################
jmeter【固定定时器】介绍:
固定定时器作用:
在最近使用的固定定时器的场景来看,固定定时器的作用有:
1、确保一些些请求的数据建立的先后顺序。
2、获取服务端某些数据之前加固定定时器,用以确保之前的请求已经在服务端生成了数据。
3、其他网络解释:它可以控制请求的时间间隔,延迟请求到达服务器的时间,模拟真实用户的行为。
4 在特定场景需求下,不需要较大的tps,而是控制特定的处理能力再去观察系统稳定性
定时器种类:
上述所说的固定定时器是定时器中的一种,其他的定时器还有高斯随机定时器、均匀随机定时器、固定吞吐量定时器、同步定时器等
定时器的作用域:
1、定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);
2、当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
3、如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;
抛出一个问题 ,固定定时器对响应时间有影响吗?
如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。
对于“java请求”这个sampler来说,定时器相当于loadrunner中的pacing(两次迭代之间的间隔时间);
对于“事务控制器”来说,定时器相当于loadrunner中的think time(思考时间:实际操作中,模拟真实用户在操作过程中的等待时间)。
#########################################################################################################
常用插件说明:
网友评论