当前位置: 首页 > article >正文

性能测试04|JMeter:连接数据库、逻辑控制器、定时器

目录

一、连接数据库

1、使用场景

2、直连数据库的关键配置

3、案例

​编辑

二、逻辑控制器

1、if控制器

2、循环控制器

3、ForEach控制器

三、定时器

1、同步定时器

2、常数吞吐量定时器(用的少,了解即可)

3、固定定时器


一、连接数据库

1、使用场景

2、直连数据库的关键配置

  • ① 添加MySQL驱动jar包
    • 方式一:在测试计划面板点击“浏览…“按钮,将你的JDBC驱动添加进来 --本脚本可用
    • 方式二:(更常用)将MySQL驱动jar包放入到lib/ext目录下,重启JMeter --所有脚本可用
  •  ② 配置数据库连接信息
    • 添加方式:测试计划→线程组→ (右键添加) 配置元件→ JDBC Connection Configurati

  • ③ 添加JDBC请求
    • 添加方式:测试计划→线程组→取样器→JDBC Request

3、案例

编写JDBC脚本步骤:搜索指定商品(该商品已经通过直连数据库来获取到某商品的id),在返回结果中检查是否包含指定商品的ID的详情URL

①添加线程组

②添加 JDBC Connection Configuration

③添加 JDBC request

④添加 HTTP请求 - 搜索商品

⑤在搜索HTTP请求下,添加响应断言,检查响应结果中的字符是否包含商品URL。引用格式:${变量名_索引} 

【注意】直连数据库并查询后保存的变量名goods_id是可以在其他请求中以${变量名}的方式使用的,但是需要debug一下,确认实际取到值的变量名具体是什么,可能不是goods_id。

⑥查看结果树 

案例详细步骤可观看视频:05.性能测试_直连数据库的案例2 - 搜索结果断言_哔哩哔哩_bilibili

二、逻辑控制器

逻辑控制器:可以按照设定的逻辑控制取样器的执行顺序 

1、if控制器

作用:If控制器用来控制它下面的测试元素是否运行,满足条件即执行,不满足就不执行

位置:测试计划→线程组→(右键添加)逻辑控制器 →如果(If)控制器

参数:下面两种哪个都可以,函数形式效率更高一些

  • JS形式:

  • 函数形式:使用函数助手生成函数

操作步骤

  • 添加线程组
  • 用户定义的变量
  • 添加If控制器,判断name是否等于baidu
  • 在If控制器下添加HTTP请求,用来访问百度
  • 添加If控制器,判断name是否等于itcast
  • 在If控制器下添加HTTP请求,用来访问传智播客
  • 添加查看结果树

2、循环控制器

作用:通过设置循环次数,来实现循环发送请求

位置:测试计划→线程组→(右键添加)逻辑控制器→ 循环控制器

参数

操作步骤

  • 添加线程组
  • 添加循环控制器
  • 添加HTTP请求
  • 添加查看结果树

 

【思考】线程组属性可以控制循环次数,那么循环控制器有什么用? 

控制的作用域不同:线程组控制是线程组下的所有请求,循环控制器控制逻辑控制器下的所有请求如果线程组循环次数为M,循环控制器循环次数为N: 

  • 循环控制器下的HTTP请求运行:M*N次
  • 线程组下的其他HTTP请求运行:M次

3、ForEach控制器

作用:一般和用户自定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量值。该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值。

位置:测试计划 →线程组→(右键添加)逻辑控制器→ ForEach控制器

配置项

变量前缀来源;
变量名和编号之间可以是_也可以没有符号,但是不能是空格

 操作步骤

①与用户定义的变量配合使用 

  • 添加线程组
  • 添加用户定义的变量
    • 返回一组变量:相同的变量名+连续的数字后缀
  • 添加ForEach控制器
  • 添加HTTP请求-百度
    • 引用ForEach控制器中保存的新变量名,如${kw}
  • 添加查看结果树

②与正则表达式提取器配合使用

  • 添加线程组
  • 添加HTTP请求-itcast (目的是从该网站首页获取地址信息,并保存下来)
  • 添加正则表达式提取器
  • 添加ForEach控制器
    • 结束循环字段可以不填,表示可以读到最后一个不连续的数为止
  • 添加HTTP请求-百度
  • 添加查看结果树

三、定时器

1、同步定时器

作用:阻塞线程(累积一定的请求),当在规定的时间内达到一定的线程数量,这些线程会
在同一个时间点一起释放,瞬间产生很大的压力。

(提示:在JMeter中叫做同步定时器,在Loadrunner中又叫集合点)

使用场景:测试抢购、秒杀或者抢红包等高并发的场景

位置:测试计划→线程组→HTTP请求→(右键添加)定时器 →Synchronizing Timer

配置项时间和数量满足一项即会释放线程

操作步骤

  • 添加线程组,设置线程数为n
  • 添加HTTP请求
  • 添加同步定时器
    • 设置并发线程数:同时发送请求的虚拟用户数
    • 设置超时时间:
      • Ø建议设置:不设置的话,若没有达到设置的线程数会一直死等
      • Ø不能设置太小:等待时间后还没达到设置的线程数,会释放已到达的线程
  • 添加查看结果树
  • 添加监听器-聚合报告
  • 红框位置可以看到发送http请求的变化

2、常数吞吐量定时器(用的少,了解即可)

使用场景:稳定性测试时,需要指定按照特定的吞吐量发送请求时,要求模拟用户真实的业务场景。

作用:让JMeter按指定的吞吐量执行,以每分钟为单位

位置:测试计划→线程组 →HTTP请求 →(右键添加)定时器 →Constant Throughput Timer

参数

qps:每秒查询数

操作步骤

  • 添加线程组,循环次数设置成永远
  • 添加HTTP请求
  • 添加常数吞吐定时器
    • 目标吞吐量是指每个用户每分钟发送的请求数
    • 计算方法:要求的QPS*60/线程数
    • 如果线程数为1的话,那每秒就发送10个请求;
      如果线程数为2的话,如果仍然想每秒发送10个请求,则需要把目标吞吐量设为300;​​​
  • 添加查看聚合报告
    • 红框位置可以看到每秒发送的请求

3、固定定时器

使用场景:Jmeter的线程组在发送2个请求之间需要设置一个等待时间时,可以用固定定时器解决。

案例

(1)IHRM系统登录错误3次后,锁定1分钟,等待1分钟后重新输入正确的用户名密码登录成功请求方法:POST

请求URL:http://ihrm-test.itheima.net/api/sys/login

请求头:Content-Type: application/json;charset=UTF-8

请求体:{"mobile":"13800000002","password":"123456"}

步骤

  • 添加线程组
  • 添加HTTP请求1 - 错误1次
  • 添加HTTP请求2 - 错误2次
  • 添加HTTP请求3 - 错误3次
  • 添加HTTP请求4 - 正确用户名密码在HTTP请求4下,添加固定定时器添加
  • 查看结果树

 


http://www.kler.cn/a/468790.html

相关文章:

  • Excel | 空格分隔的行怎么导入excel?
  • 【HarmonyOS应用开发——ArkTS语言】购物商城的实现【合集】
  • 打包部署若依(RuoYi)SpringBoot后端和Vue前端图文教程
  • Laravel操作ElasticSearch
  • 计算机的错误计算(二百零一)
  • 云计算在医疗行业的应用
  • Linux中操作中的无痕命令history技巧
  • Sonic:开源Go语言开发的高性能博客平台
  • 第五届神经网络、信息与通信工程国际学术会议(NNICE 2025)
  • Java与AI:构建智能应用的强大组合
  • git使用指南-实践-搭建git私服
  • 【最新版】智慧小区物业管理小程序源码+uniapp全开源
  • 【每日学点鸿蒙知识】模拟器开启网络、长时任务、兼容性测试支持、丢帧定位、SO中访问rawfile等
  • 操作系统大题整理
  • 【Android项目学习】2.抖音二级评论
  • 代码随想录算法训练营第二十四天-回溯算法-78. 子集
  • yolov5核查数据标注漏报和误报
  • Python常用算法
  • WPS计算机二级•数据查找分析
  • jupyter展示图片做法以及为什么会无法展示图片
  • 编辑音频的基本属性
  • 基于Python的考研学习系统
  • 亚马逊云科技 re:Invent 2024 Amazon Bedrock 推出新功能,加速AI落地
  • 渗透测试实战-DC-1
  • 力扣23.合并K个升序链表
  • MySQL 主从同步模式选择指南