jmeter使用

一、jmeter使用;

1、获取请求参数;

   入参可以写固定值,可以使用用户定义变量,可以读取文件获取、可以通过函数助手生成、可以通过beanshell前置处理器加工生成,以加密为例介绍2种;

(1)使用函数助手的加密方法(算法摘要,可输入值:MD2、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512)



(2)beanshell处理器进行加密处理;



2、变量传递;

   传递可以通过JSON提取器、正则表达式、beanshell后置处理器等,以数据加密为例;

(1)vars是对变量进行操作,只能在当前线程组内使用;

vars.put("data1",data1) 
${data1} 
(2)props是对属性进行操作,可以跨线程组使用;

props.setProperty("data2",data2)
${__P("data2",)}






3、cookie传递;

(1)jmeter配置文件可以设置自动保存cookie变量,在bin目录下的jmeter.properties,搜CookieManager.save.cookies,把后面的值改为true,去掉行首的#号,然后保存后重启jmeter;

(2)添加一个Http cookie管理器,对不同线程的cookie不会互相影响;

4、结果文件配置;

(1)jmeter.save.saveservice.output_format:定义保存测试结果文件的格式,枚举值有xml、csv、json,比如该参数设置为xml,那么生成的jtl文件将以xml格式保存;

(2)jmeter.save.saveservice.hostname:是否在测试结果中包含主机名,比如域名或者IP;

(3)jmeter.save.saveservice.thread_name:是否在测试结果中包含线程组名称;

(4)jmeter.save.saveservice.lable:是否在测试结果中包含采样器名称,比如设置true的,测试结果中可见是哪个接口请求;

(5)jmeter.save.saveservice.samplerData:是否在测试结果中包含请求数据,例如请求方式、请求头、请求参数;

(6)jmeter.save.saveservice.url:是否在测试结果中包含请求url;

(7)jmeter.save.saveservice.request_header:是否在测试结果中包含请求头;

(8)jmeter.save.saveservice.reponse_header:是否在测试结果中包含响应头;

(9)jmeter.save.saveservice.response_data:是否在测试结果中包含响应数据,例如HTML、JSON等,CSV格式目前不支持 response_data;

(10)jmeter.save.saveservice.response_code:是否在测试结果中包含响应状态码,请求成功即为200;

(11)jmeter.save.saveservice.response_message:响应信息是否记录到测试结果中,请求成功即为OK ;

(12)jmeter.save.saveservice.response_data.on_error:发生错误是否保存在测试结果中,该参数实现仅接口报错,保存响应数据;

(13)jmeter.save.saveservice.success:是否在测试结果中包含请求的成功/失败状态;

(14)jmeter.save.saveservice.data_type:是否在测试结果中包含数据类型,主要是增加测试结果详细度,可以了解每个请求的响应数据类型;

(15)jmeter.save.saveservice.assertion_results:是否在测试结果中包含断言详细信息,比如失败的响应内容,枚举值是none、first、all,none代表不保存、first标识只保存第一个断言结果,all代表保存全部断言结果;

(16)jmeter.save.saveservice.assertion_results_failure_message:是否在测试结果中包含失败的断言结果,枚举值是true、false,目前仅影响CSV输出;

(17)jmeter.save.saveservice.assertions:是否在测试结果中保存断言执行状态(成功/失败);

(18)jmeter.save.saveservice.thread_counts:是否在测试结果中包含当前活动线程的数量;使用Active Threads Over Time Listener或Response Times vs Threads等监听器,就要启动此功能;

(19)jmeter.save.saveservice.sampler_count:是否在测试结果中包含每个采样器的执行次数;

(20)jmeter.save.saveservice.time:是否在测试结果中包含响应时间(单位ms),了解了接口的响应时间,就可以找出响应时间较长的请求;

(21)jmeter.save.saveservice.connect_time:是否在测试结果中包含连接时间,连接时间是发起请求到建立与服务器的连接所花费的时间,辅助分析网络性能和服务器响应快慢;

(22)jmeter.save.saveservice.encoding:指定保存测试结果使用的字符编码(常用UTF-8)

(23)csv结果;



(24)xml结果;





5、备份文件配置;

前提:jmx备份配置,只在GUI模式下,这些属性才会生效;

(1)jmeter.gui.action.save.backup_directory:设置自动备份路径,设置不存在路径则创建;

(2)jmeter.gui.action.save.backup_on_save:是否在保存测试文件时创建备份文件,比如设置为true,则在备份路径创建test_000001.jmx,依次递增;

(3)jmeter.gui.action.save.keep_backup_max_hours:设置备份文件保存时间(单位是小时),超时自动删除,主要是避免占用过多磁盘空间。设置为0则意味着永远保存;

(4)jmeter.gui.action.save.keep_backup_max_count:设置保留备份文件的最大数,默认设置10,将保留10份,设置为0则意味着永远保存;

(5)save_automatically_before_run:是否是执行测试计划时,自动保存并备份到指定目录;



6、知识点;

(1)线程组、请求或断言等,ctrl+t实现启用/停用;

(2)jmeter压测执行nohup命令,中途想停止运行,找到第二个pid,然后杀进程;

ps -ef|grep jmeter;
kill -9 第二个进程id;
(3)性能测试要求比较严格的话,要将查看结果数、聚合报告等组件注释掉,因为消耗内存;

7、命令行参数;

(1)-n:非GUI方式运行;

(2)-t:指定运行的测试脚本地址与名称,可以是相对或绝对路径,比如 -t test.jmx;

(3)-h:查看帮助;

(4)-v:查看版本;

(5)-p:指定读取Jmeter属性文件,默认使用jmeter.properties,使用指定文件就是 -p myconfig.properties;

(6)-l:记录测试结果到文件,指定名称与路径,可以是相对或绝对路径,比如 -l result.jtl ;

(7)-L:定义Jmeter的日志级别,比如 -L ERROR;

(8)-J:定义Jmeter属性,等同于在jmeter.properties中设置,比如 -Jserver.rmi.ssl.disable=true;

(9)-G:定义Jmeter全局属性,等同于在Global.properties中设置,线程间可相互共享;

-Gtemp=value;
${__P(temp)} ;
(10)-r:开启远程负载机,远程负载机列表在jmeter.properties文件中指定;



(11)-R:开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中的设置,比如./jmeter.sh -n -t test.jmx -r -R ip1:port1,ip2:port2 ;



(12)-X:停止远程执行,比如 -R ip1:port1,ip2:port2 -x ;



二、分布式压测

1、原理;



2、配置流程;

(1)每台机器均部署jmeter,确保jmeter版本一致;

(2)jmeter脚本上传到主压力机;

(3)配置文件和参数文件(比如csv参数文件),放在每台压力机上,并且目录相同;

(4)每台机器,配置文件都需要调整,jmeter.properties,设置 ssl.disable=true(禁用SSL,不建立加密连接);



(5)主压力机,配置文件增加从压力机ip和端口(jmeter.properties,设置 remote_hosts);



(6)每台机器,均后台启动jmeter-server,命令 nohup ./jmeter-server &;

(7)在主压力机上执行启动命令;

./jmeter -n -t ../jmx/genRandom.jmx -l ../jtl/result.jtl -r ;


./runall.sh jmx/ ;




(8)通过jtl生成HTML报告;

已存在jtl文件,执行./jmeter.sh -g ../jtl/result.jtl -o ../report ;
没有jtl文件,执行./jmeter.sh -n -t ../jtl/result.jtl -e -o ../report ;
GUI模式,工具-生成HTML报告;
使用定制版jmeter,生成word版测试报告;


(9)HTML报告;

 

posted @ 2024-01-23 17:05  梧桐潇雨  阅读(107)  评论(0)    收藏  举报