jmeter问题

1、jmeter执行优先级

配置元件

前置处理器

取样器

后置处理器

监听器

2、jmeter多种监听器的作用

监听器就是jmeter对性能测试结果进行监控后,展示结果的数据

不同监听器原件的,是从不同的角度展示结果数据

3、jmeter取样器的作用

根据不同的协议,使用不同的取样器编写脚本

4、逻辑控制

对脚本的执行进行逻辑控制

5、前置处理器作用,后置处理器作用

6、请求体为JSON时,需要注意什么

请求头 Content-Type:application/json

7、脚本编写注意事项

(1)协议为http时可不写,如果是HTTPS必须写

(2)服务器名称或ip不能带有/

(3)路径不能带域名或ip或端口,路径开头用/,不能带有空格

(4)内容编码 utf8

(5)请求体为JSON,且为post请求,使用消息体数据,要添加请求头,Content-Type:application/json

(6) form-data  application/x-www-form-urlencoded,且为get请求,使用参数传参

8、自动重定向与跟随重定向

自动重定向:不会显示中间重定向的过程,无法从过程中提取信息

跟随重定向:自动显示重定向过程,可以从过程中提取信息,用于后面的接口

9、keepalive

保持连接,长连接

10、请求体、响应体乱码,如何控制

请求体:内容编码控制、消息头application/json;charset=utf8、参数勾选编码urlencoded

响应体:GUI的编码、修改配置文件

11、接口之间通过什么产生关联

例如:下一个接口的参数需要上一个接口的响应信息的值,

(1)用户自定义变量,配置元件

全局变量,作用域整个测试计划

每次启动运行测试计划,会获取一次值,在之后运行过程中不值不会再改变

(2)用户参数,前置处理器

局部变量,作用于当前线程组或当前取样器

在启动时获取一次值,之后运行过程中值会动态改变

12、常用函数

(1)${__counter(,)} 计数器

每次+1计数


(2)${__dateTimeConvert(,,,)}   时间格式转换

  • 将04082022转化成08/04/2022,原时间格式是转化前的格式,目标时间格式是转化后的时间格式

  • 将时间戳转化成目标时间格式

(3)${__digest(,,,,)}  **加密**  简单加密

  • MD5加密

(4)${__intSum(,,)}  整数相加函数

  • 类型必须是整数类型,否则会报错

(5)${__P(,)}   **获取属性函数**

  • 获取jmeter.propreties文件里面的值,例如获取设置的语言属性的值

(6)${__property(,,)}  **获取属性函数**  同上

 
(7)${__setProperty(,,)}   设置**属性函数**

  • 设置jmeter属性

(8)${__Random(,,)}

  • 随机一个整数,必须是整数类型,否则报错

(9) ${__RandomString(,,)}

  • 用规定的几个字,组成对应长度的随机字符串

(10)${__threadNum}  获取线程号函数


(11)${__time(,)}  获取**当前时间戳函数**

  • YMD = yyyyMMdd
  • HMS = HHmmss
  • YMDHMS = yyyyMMdd-HHmmss
  • 想获取什么时间格式就写入参数,不写默认返回时间戳,此时间戳精确到毫秒

 

(12)${__timeShift(,,,,)}  数据格式化

  • 不写参数默认输出时间戳

  • 推迟时间
  • PT20.345S parses as 20.345 seconds
  • PT15M parses as 15 minutes
  • PT10H parses as 10 hours
  • P2D parses as 2 days
  • -P6H3M parses as -6 hours and -3 minutes


(13)${__V(,)}   **拼接**函数 ,究极大坑,函数助手会自动加逗号,在使用时去掉

  • 可拼接参数,创建测试数据,例如user_1,user_2,user_3...

 

 

13、jmeter属性怎么理解

jmeter工具属性:可能被改变

静态属性:写入在properties文件的属性信息,都是静态属性

动态属性:运行过程中动态的定义属性

系统属性:os、jdk系统属性信息不可改变

属性属于全局变量,都能使用

参数和变量只能局限使用

动态属性的生命周期?

运行过程中产生,jmeter关闭会自动释放

14、jmeter线程组中取样器执行的顺序

无逻辑控制器的时,所有取样器都是从上往下执行,无论多少并发

结果:取样器的执行顺序与查看结果树种显示的顺序不一致

15、jmeter怎么提前响应信息中的数据

(1)JSON提取器

场景:确认响应信息的格式味JSON时可使用

写法:

  • $.根路径.二级路径    绝对路径写法
  • $..末梢节点名称     相对路径写法

注意事项:由于JSON中的key-value是无序的,所以在取多个时,可能顺序每次都会发生变化

(2)正则表达式提取

万能公式:左边界(.*?)右边界

16、CSV参数化

(1)假设4组数据,设置此线程循环4次

(2) 设置http默认值

(3)设置用户自定义变量,全局key

(4) 测试数据格式

  • money和year都是参数名,以英文逗号隔开,编码格式需要是utf8

 (5)取样器设置

(6)CSV文件设置

  • 文件名相对路径最后;内容编码是utf8;首行忽略;

 (7)查看结果树

  • 线程依次取值

注意事项

(1)多个变量名使用英文逗号

(2)遇到文件结束符再次循环? 作用是控制变量取值

true:运行次数超过文件行数,继续运行,重新从文件第一行数据取值

false:运行次数超过文件行数,继续运行,后面都取不到值

(3)遇到文件结束符停止线程 作用是管理线程组的运行

true:运行到文件结束就停止线程

false:运行到文件结束继续运行

(4)存在多用户并发,多个线程数,循环多次

依次取值

    + 第1th,第一次取值,取第1行,
    + 第2th,第一次取值,取第2行
    + 第3th,第一次取值,取第3行

8、逻辑控制器-循环控制器

作用当前线程组,循环执行5次

 
 

9、逻辑控制器-for each

产生的变量名:var_1  var_2 var_3 var_4 var_5

使用时  ${f}

10、逻辑控制器-if条件控制器

为http请求添加逻辑控制器

(1)默认勾选,必须使用函数计算后的值为true才执行,否则为false不执行

jexl3    groovy 

 (2)不勾选,不使用函数计算,直接作为js语言的表达式计算,为真就执行为假就不执行

11、接口测试脚本不能直接用于性能测试的原因?

(1)接口测试脚本、自动化脚本都会添加断言来判断接口响应是否正确,会消耗本机的时间和性能资源,性能测试脚本是不需要加断言的

(2)Beanshell元件,尽量不要使用,假设写java代码处理 建议使用JSR223取样器

(3)正式性能测试时,是使用CLI无图形界面模式,GUI图形界面是用来编辑调试脚本

12、逻辑控制器-事务控制器

事务:jmeter默认一个取样器为一个事务

TPS:每秒处理的事务数

注意事项:

(1)合并多个取样器,需要勾选“Generate parent sample”

(2)性能测试需要先进行单接口性能测试,规划单接口性能测试指标,再进行多接口的性能测试,规划多接口性能指标,然后使用事务控制器,合并多接口,规划性能指标,再合并所有事务规划性能指标

(3)流程:假设让你规划某个事务的性能指标,,需要先梳理出,这个业务所有的接口,然后对这个业务所有的接口进行性能测试,得到性能指标,然后,再使用事务控制器,合并取样器,最终才得到 业务的性能指标。

(4)正式性能测试时要禁用所有的监听器

13、聚合报告

查看聚合报告的前提:

(1)没有网络瓶颈

如何判断网络瓶颈:带宽为标准时,假设100M带宽,  100Mb=100*1024kb/8=12800KB/s

聚合报告最后2列,发送和接收,xxkb/s  接近12800就是接近网络瓶颈

企业服务器,一般电商类的产品,几M带宽

(2)并发用户数不变

例如负载测试,并发用户数会随时间变化,就不能查看聚合报告

聚合报告细节

(1)每一行:都是一个事务

(2)每一列

样本数:在执行过程中,所有并发用户数,在规定时间内的总请求数量

吞吐量:每秒服务器处理多少个事务

5个线程*执行10秒*pl=样本数量483   pl每秒9.66个请求

平均值、--最大值:都是响应时间,单位ms

例如90%:90%的请求响应时间低于113ms

14、逻辑控制器-仅一次控制器

定义:一个线程组用户只运行一次,无视设置的循环次数、运行时间条件

15、逻辑控制器-吞吐量控制器

百分比控制吞吐量,使用多个吞吐量控制器使它们的和为100

总的吞吐量

16、逻辑控制器-随机控制器

假设控制了3个取样器,会随机挑选其中1个取样器执行

17、随机顺序控制器

假设控制了3个取样器,执行顺序会随机执行

18、soap协议脚本

soap协议=http协议+XML

测试网站地址:WeatherWS Web 服务

(1)配置请求头

(2)取样器 ip地址  路径 消息体数据(XML传参)

 (3)查看结果

19、jmeter使用jdbc协议连接数据库

jdbc:java调用数据库;调用数据库需要使用jar包+数据库信息;jmeter是java开发可以直接执行java代码

’配置jdbc的jar包:

(1)例如数据库版本5.7,在maven仓库搜索mysql,https://mvnrepository.com/

 (2)将下载好的jar包放jmeter的lib文件夹

jdbc版本是向下兼容

脚本步骤:

(1)线程组添加配置元件JDBC Connection Configuration

连接池变量名必填

databaseURL格式: jdbc:mysql://serverip:port/dbname

jdbc driver class:  不同的数据库,这个驱动class不一样

        mysql: com.mysql.jdbc.Driver  **只适用于mysql5版本**,选择

        mysql8是手写:com.mysql.cj.jdbc.Driver

用户名和密码:数据库用户名和密码

 (2)创建取样器JDBC Request

填写JDBC Connection Configuration的连接池变量名才能使用

默认是不支持写多个SQL语句

query type: select statement (查)、 update statement(增改)、 prepared select statement 、 prepared update statement

带有 prepared开头,是脚本中,可以带有参数

parameter values:参数值

parameter types:参数的类型,一般是varchar

variable names:执行之后返回的结果的参数名

result variable name:执行之后返回的结果组成一个数组,不容易取值操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当单台Mac进行压测时,如果压测客户端Jmeter启动超过2000个线程,而Jmeter报OOM(Out of Memory)错误,有一些解决方法可以尝试。 首,你可以尝试增加Jmeter的内存限制。可以通过编辑Jmeter的启动脚本来指定更大的堆内存大小,即增加-Xmx参数的值。例如,将-Xmx2g修改为-Xmx4g,表示将堆内存限制增加到4GB。 其次,你可以调整Jmeter的线程配置。在Jmeter,每个线程都会消耗一定的内存资源。如果单台Mac的内存无法满足启动2000个线程的需求,可以考虑减少线程数,或者将压测任务分散到多台机器上进行。 另外,你也可以检查是否有其他资源导致内存不足。例如,Jmeter执行过程可能会产生大量的日志文件,如果磁盘空间不足,也会导致OOM错误。此时,可以清理或增加磁盘空间。 最后,你可以使用Jmeter插件来优化压测性能。例如,引用提到的自行开发的RocketMQ插件可以帮助更好地进行RocketMQ的压测。使用合适的插件可以提高效率,减少资源消耗。 综上所述,为了解决Jmeter压测时发生OOM错误的问题,你可以尝试增加Jmeter的内存限制、调整线程配置、检查其他资源是否充足,以及使用合适的插件来优化压测性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [7个常见的Jmeter压测问题总结](https://blog.csdn.net/okcross0/article/details/129148522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Jmeter压测问题](https://blog.csdn.net/weixin_44370919/article/details/108864324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [jmeter压测RocketMQ的插件](https://download.csdn.net/download/weixin_40126600/85011909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值