jmeter
萌翻天
一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。
展开
-
jmeter-jexl3语法总结
有变量vars.put("host","precom");${__jexl3(${__Random(0,500,)}==0,)} //数字等于${__jexl3(${__Random(0,500,)}!=0,)} //数字不等于${__jexl3("qwe".equals("qwe"),)} //字符串相等${__jexl3("qwe" eq "qwe",)}${__jexl3("qwe" == "qwe",)}${__jexl3(!"qwe".equals("q1we"),)} //字符串不相等${__j原创 2022-06-30 17:54:47 · 5024 阅读 · 0 评论 -
jmeter-json提取器获取数组
"imFastProcessList": [ "9ecdd5fe9ddf8c817eb8a23407ba2650","f2366bc7668a55b2f04abb72c80b16bf"],Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)Default Values:找不到时默认值,一般设置为NOT FOUNDCompute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”引用第一个值:${imFastPro原创 2022-06-30 17:53:16 · 1636 阅读 · 0 评论 -
jmeter-if控制器:判断提取的变量是否为空
从上一个接口的返回值提取这个变量,并且缺省值设置为""${__jexl3("${loginInfo}"=="",)}原创 2022-06-30 17:51:30 · 802 阅读 · 0 评论 -
jmeter-beanShell字符串转浮点数计算
String number = "178.45";Float numberFloat = Float.parseFloat(number);Float reFloat = (float) numberFloat * (float) 0.3;log.info(reFloat.toString());vars.put("reFloat",reFloat.toString());log.info(vars.get("reFloat"));原创 2022-06-30 17:48:01 · 888 阅读 · 0 评论 -
jmeter-读取命令行传参
//命令sh jmeter.sh -Denv=online -Dhost=http -n -t $jmxPath -l $xmlPath//jmeter代码读取参数String env = System.getProperty("env","pre");String host = System.getProperty("host","https");//赋值给变量vars.put("host",host);原创 2022-06-30 17:44:30 · 199 阅读 · 0 评论 -
jmeter-beanShell之prev类
prev 提供对当前取样器结果的访问能力prev 映射 org.apache.jmeter.samplers 的 SampleResult 类官方文档: https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html原创 2022-06-30 17:39:52 · 2111 阅读 · 0 评论 -
jmeter-beanShell之AssertionResult类
AssertionResult[] assertionResults = prev.getAssertionResults();for (AssertionResult assertionResult : assertionResults) { if (assertionResult.isFailure()) { log.error("断言失败" + assertionResult.getName()); // do what you need if asserti原创 2022-06-30 17:36:01 · 713 阅读 · 0 评论 -
jmeter的GUI界面默认语言永久更改为中文(修改 jmeter.properties)
jmeter安装路径下bin目录找到 jmeter.properties,修改该文件,找到第37行(或者直接Ctrl+f 搜索language),将 #language=en 修改为: language=zh_CN,修改后保存,这样每次启动都是中文了原创 2022-06-30 17:30:08 · 178 阅读 · 0 评论 -
jmeter获取命令行的动态传参
1、命令行执行脚本添加参数 -DTCP=http:sh jmeter.sh -DTCP=http -n -t test.jmx -l test.xml2、在jmeter中添加BeanShell取样器,获取-DTCP后面的值http,并赋值给TCP变量,如果命令行未传递-DTCP参数,则TCP的值为默认的httpsString TCP = System.getProperty("TCP","https");vars.put("TCP",TCP);...原创 2022-06-29 14:27:00 · 549 阅读 · 0 评论 -
jmeter使用bzm线程组压测(Custom Thread Groups插件)
1、下载jmeter,安装插件管理器JMeter Plugins ManagerInstall :: JMeter-Plugins.org将jmeter-plugins-manager-1.6.jar放到lib/ext目录,重启jmeter2、点击图标进入下载插件页面 3、选择Custom Thread Groups安装并保存重启jmeter 4、新建Arrivals Thread Group线程组,创建脚本 5、配置执行机(Agent)将已安装插件的jmeter压缩包放入执行机在执行机分别解压zip包cd原创 2022-06-22 16:09:12 · 1588 阅读 · 0 评论 -
服务器性能测试-增加了请求数,但是tps上不去,反而下降了
一个系统吞吐量通常有QPS(TPS),并发数两个因素决定,每套系统这个两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换,内存等等其他消耗导致系统性能下降。QPSQPSQueries Per Second是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。TPS...原创 2020-09-27 11:52:09 · 6903 阅读 · 0 评论 -
服务器性能测试-服务器瓶颈原因、压测机瓶颈原因
//服务器瓶颈原因1、超过了服务器设置的网络请求最大连接数,报错:请求被拒绝2、服务的线程池最大线程数未设置适当,报错:连接超时(处理不过来的等待,等待时间太长超时)、请求失败(处理不过来的直接失败)3、超过了redis最大连接数4、接口直接访问数据库,超过了数据库最大连接数:暂停服务503//压测机瓶颈原因两台机器的性能不同,设置相同的线程数,会跑出不同的QPS。增加线程数,但是QPS不增加,或者增加线程数,QPS不是等比例增加,此时就证明压测机出现瓶颈,原因有以下几方面.原创 2020-09-27 11:50:08 · 5115 阅读 · 0 评论 -
服务端性能测试-jmeter做分布式压测
配置执行机(Agent)安装jmeter,打开bin/jmeter.properties,将remote_hosts参数设置为本机ip并设置端口号remote_hosts=10.10.10.11:1099如果报错则查看1099端口是否被占用:lsof -i tcp:1099将server.rmi.ssl.disable参数设置为true,并且取消注释server.rmi.ssl.disable=true启动jmeter-server脚本,创建远程对象chmod 777 /data原创 2020-09-27 11:48:26 · 3313 阅读 · 0 评论 -
服务端性能测试-为什么一般性能测试都是在局域网中进行的
一般我们的性能测试都是在局域网中进行的。为什么一定要在局域网中进行呢?因为局域网中不受网络限制。这个说法不能绝对。但是一般测试工具的用户并发量是不会受到局域网带宽的限制,除非你做的是十万,百万级别的用户并发。相信懂一点网络知识的人都知道,当你上网很慢的时候,比如打开某某网站很慢,你肯定会骂电信的网络不给力,而不会骂这个网站响应速度不给力。因为,请求信息的耗时大部耗在传输过程中。 所以,刚做测试时,我们群里热议论,如果我们每个人都开一个压力工具对百度网站进行加压。百度,服务器会不会挂掉。有测友说这样是不原创 2020-09-27 11:46:48 · 3878 阅读 · 0 评论 -
jmeter-beanshell普通断言
String response = prev.getResponseDataAsString();//获取响应信息String code = prev.getResponseCode();//获取返回值String message = prev.getResponseMessage();//获取Response messageif (response.contains("ss") && code.equals("200") && message.equals("O原创 2020-09-22 15:17:34 · 3194 阅读 · 0 评论 -
jmeter-吞吐量控制器
Total Executions:按吞吐量值来指定执行次数。选择此模式,吞吐量值的单位为“次”。Percent Executions:按百分比来指定执行次数。选择此模式,吞吐量值的单位为“%”。吞吐量:该值可以是任意整数,如果小于等于0,则一次也不执行。Per User:如果勾选该项则按虚拟用户数(线程数)来计算执行次数,如果没有选中该项则按所有虚拟用户数来计算执行次数。...原创 2020-09-22 15:14:32 · 3425 阅读 · 0 评论 -
jmeter-模块控制器
可以复制任何一个其他控制器,不能跨线程组原创 2020-09-22 15:11:19 · 4031 阅读 · 0 评论 -
jmeter-随机顺序控制器
该控制器下的子节点全部执行,但顺序是随机的。原创 2020-09-22 15:07:52 · 3186 阅读 · 0 评论 -
jmeter-随机控制器
该控制器下的子节点在执行中,是随机读取某一个执行的,并不是全部执行。原创 2020-09-21 20:17:18 · 3252 阅读 · 0 评论 -
jmeter-简单控制器
这是最简单的逻辑控制器,他没有额外的功能,只是一个容器的功能,存放取样器等等原件原创 2020-09-21 20:16:12 · 3338 阅读 · 0 评论 -
jmeter-临界部分控制器
业务逻辑: 根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景 锁名类型: 锁名为空,认为每个锁为不同的锁 锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中 锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁...原创 2020-09-21 20:15:12 · 4427 阅读 · 0 评论 -
jmeter-Switch控制器
注意,从0开始计数,执行的是登录0原创 2020-09-21 20:09:06 · 3162 阅读 · 0 评论 -
jmeter-Include控制器
Include Controller可以直接引用测试片段保存的jmx文件当jmeter脚本非常复杂的时候,可以通过测试片段分模块管理用例当jmeter脚本由多个测试人员共同完成,通过测试片段分人分模块管理用例...原创 2020-09-21 20:02:47 · 3517 阅读 · 0 评论 -
jmeter-ForEach控制器
原创 2020-09-21 19:58:38 · 3194 阅读 · 0 评论 -
jmeter-While控制器
满足条件则一直循环下去原创 2020-09-21 19:50:17 · 3165 阅读 · 0 评论 -
jmeter-如果(If)控制器
满足指定的条件后,才会执行控制器下的http请求原创 2020-09-21 19:40:55 · 3465 阅读 · 0 评论 -
jmeter-传参为json格式,配置方式
原创 2020-09-21 19:36:56 · 4912 阅读 · 0 评论 -
jmeter-Failed to create UDP port(UDP端口创建失败)
出现该问题,就是jmeter的slave进程监听端口被占用,导致不能使用该端口修改master机器的jmeter.property文件,该配置文件在jmeter的bin目录下,默认配置只开放了10个端口范围给监听使用,只需要修改即可我这里改成30个,从4445到4475的端口都允许jmeter使用jmeterengine.nongui.port=4445jmeterengine.nongui.maxport=4475...原创 2020-09-18 11:13:53 · 4294 阅读 · 0 评论 -
jmeter-修改jmeter运行内存
打开/apache-jmeter/bin文件修改: "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"注意:一般而言,堆的最大值不要超过物理内存的一半,否则容易导致jmeter运行变慢、卡顿甚至内存溢出(因为java本身的垃圾回收机制是动态分配内存,调整时候其本身会占用很多内存),NEW分配的内存,不宜太大!3、修改完成后,关闭文件,重启jmeter既可以:PS:当需要模拟的线程数较大时,就需要根据具体情况采用分布式压测的方式了,原创 2020-09-18 11:10:16 · 6195 阅读 · 0 评论 -
jmeter引用外部jar包,3种方式
1、将jar包放到任意路径,需要在测试计划中导入2、将jar包放到jmeter的指定目录/apache-jmeter/lib/下,不需要在测试计划中导入3、将jar包放到jmeter的指定目录/apache-jmeter/lib/ext/下,不需要在测试计划中导入...原创 2019-12-24 16:53:52 · 3982 阅读 · 0 评论 -
jmeter-操作数据库(JDBC Connection Configuration和JDBC Request)
做接口测试或者是压测,有时候需要读取、修改数据库等操作,jmeter操作数据库需要导入外部jar包来实现,下面是步骤。1、下载mysql-connector-java.jar包,两种方式maven地址:https://mvnrepository.com/artifact/mysql/mysql-connector-javamysql地址:https://dev.mysql.com/ge...原创 2019-12-24 16:43:33 · 3341 阅读 · 0 评论 -
jmeter在Non-GUI 模式下,保存响应值到文件,4种方法
前言1、使用 Jmeter Non-GUI模式下,执行jmx脚本,遇到发生错误响应时,需要查看请求与响应的记录,然而默认是没有保存响应值的设置。所以我们需要把接口的实际响应结果保存到文件,排查错误的时候用。2、方法一、二都需要修改配置文件,是一次修改永久全局生效。方法三、四只需要在jmx脚本里操作就可以,比较灵活,可以在需要的接口中使用,不需要查看响应数据的接口就不使用。可以根据...原创 2019-12-19 16:00:46 · 4364 阅读 · 0 评论 -
Jmeter获取当前时间、历史时间、未来时间的方式
1、当前时间Tools-函数助手对话框-选择一个功能__time,输入时间格式,把${__time(yyyyMMddHHmmss,)}粘贴出来,放到要引用的地方2、未来时间打开函数助手-timeShift例如添加6天6小时6分钟6秒:P6DT6H6M6S,将生成的${__timeShift(,,P6DT6H6M6S,,)}引用到你需要的地方,时间戳单位是毫秒注意,只添加6天...原创 2019-12-18 18:00:32 · 5528 阅读 · 0 评论 -
jmeter-前置处理器-用户参数
适用于需要参数化的,且参数较少的情况,参数很多建议用CSV Data Set Config当线程数多于用户参数中的用户数时,用户数据会被循环使用1、在线程组中添加用户参数元件2、引用参数...原创 2019-12-18 17:18:53 · 5916 阅读 · 0 评论 -
jmeter之JSON提取器
1、例如返回信息为:{"success":false,"code":1,"msg":"请输入正确的手机号及密码"}2、json提取器Variable names:保存的变量名,后面使用${Variable names}引用 JSON Path expressions:调试通过的json path表达式(可以在查看结果树中通过JSON Path Tester来调试)...原创 2019-12-18 17:01:25 · 3264 阅读 · 0 评论 -
beanshell断言时间戳:当前时间在某个时间范围内
import java.text.SimpleDateFormat;import java.util.Date;long time = System.currentTimeMillis();//获取当前时间戳,单位毫秒long timeStart = 1576581425000L;//开始时间long timeEnd = 1576581425000L;//结束时间SimpleDateFo...原创 2019-12-17 19:19:54 · 3758 阅读 · 0 评论 -
beanshell利用org.json断言json数组
1、导入org.json.jar包到apache-jmeter/lib/ext/目录下2、例如响应信息是{\"TotalCount\": 10,\"ItemList\": [{\"Id\": 7,\"Title\": \"早安分享\",},{\"Id\": 3,\"Title\": \"晚安分享\",}]}3、beanshell代码import org.json.JSONObj...原创 2019-12-16 18:58:03 · 3376 阅读 · 0 评论 -
beanshell利用org.json断言json数据
1、导入org.json.jar包到apache-jmeter/lib/ext/目录下2、例如返回数据为如下json格式数据{"code": 0,"data": {"userInfo": {"id": 779025,"wechatName": "David"},"classics": false},"success": true}3、bea...原创 2019-12-16 18:55:39 · 3240 阅读 · 0 评论 -
beanshell利用fastjson断言json数据
1、导入fastjson.jar包到apache-jmeter/lib/ext/目录下2、例如返回数据为如下json格式数据{"code": 0,"data": {"userInfo": {"id": 779025,"wechatName": "David"},"classics": false},"success": true}3、beansh...原创 2019-12-16 18:53:55 · 3336 阅读 · 0 评论 -
beanshell断言字符串
String response = prev.getResponseDataAsString();//获取响应信息String code = prev.getResponseCode();//获取返回值String message = prev.getResponseMessage();//获取Response messageif (response.contains("ss") &...原创 2019-12-16 18:50:52 · 3727 阅读 · 0 评论