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

news2025/1/7 16:10:36

目录

一、连接数据库

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.coloradmin.cn/o/2271985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot和OAuth2,实现通过Github授权登录应用

基于SpringBoot和OAuth2,实现通过Github授权登录应用 文章目录 基于SpringBoot和OAuth2,实现通过Github授权登录应用0. 引言1. 创建Github应用2. 创建SpringBoot测试项目2.1 初始化项目2.2 设置配置文件信息2.3 创建Controller层2.4 创建Html页面 3. 启动…

Visual Studio C++使用笔记

个人学习笔记 右侧项目不显示 CTRL ALT L 创建第一个项目 添加类(头文件、CPP文件)

USB射频微波功率计的功能与优势-盛铂科技

USB射频功率计是一种用于测量射频信号(RF)功率的仪器,它通过USB接口与计算机或其他设备连接,以便于进行数据采集、处理和显示。 主要功能 功率测量:能够测量射频信号的功率,通常以毫瓦(mW&…

百度贴吧的ip属地什么意思?怎么看ip属地

在数字化时代,IP地址不仅是网络设备的唯一标识符,更承载着用户的网络身份与位置信息。百度贴吧作为广受欢迎的社交平台,也遵循相关规定,在用户个人主页等位置展示账号IP属地信息。那么,百度贴吧的IP属地究竟意味着什么…

基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真,仿真输出燃料电池中氢氧元素含量变化以及生成的H2O变化情况。 2.系统仿真结果 3.核心程序与模型 版本…

Linux驱动开发(16):输入子系统–电容触摸驱动实验

有关电容触摸的基础知识内容可以参考野火STM32相关教程,这里只介绍电容触摸驱动的相关内容。 本章配套源码、设备树以及更新固件位于“~/embed_linux_driver_tutorial_imx6_code/linux_driver/touch_scream_GTxxx”目录下。 触摸面板通过双面胶粘在显示屏上&#…

73 mysql replication 集群的交互

前言 新建两个数据库, 分别为 192.168.220.132:3001, 192.168.220.132:3002 设置 192.168.220.132:3001 为 master, 192.168.220.132:3002 为 slave 配置文件如下 然后使用 mysqld --initialize 来初始化 data 目录, 以及相关基础数据库 这里会为 root 账户创建一个随机的…

Unity-Mirror网络框架-从入门到精通之Benchmark示例

文章目录 前言什么是Benchmark?Benchmark 简要说明Benchmark示例BenchmarkNetworkManagerMonsterMovementPlayerMovementInterestManagement性能指标 BenchmarkIdle示例BenchmarkPrediction示例BenchmarkStinkySteak示例 前言 在现代游戏开发中,网络功能…

反射--反射机制

目录 一 java 1.反射的引入: 2.反射机制 1) 反射会生成一个类对象------类型class类型 2)【加载阶段】class类型相当于一面镜子------透过class 反射出 真正的类的结构 3)反射机制原理---编译阶段---加载阶段---运行阶段 2.…

【论文笔记】LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: LongLoRA: Efficient Fine…

LabVIEW四边形阻抗继电器

基于LabVIEW开发了四边形阻抗继电器,该系统主要应用于电力系统的距离保护中。四边形阻抗继电器在克服短路点过渡电阻的影响及躲避负荷阻抗方面展现出优良的特性。通过LabVIEW图形化编程环境实现的该系统,具备用户友好界面和简便的操作流程,有…

计算机网络--路由器问题

一、路由器问题 1.计算下一跳 计算机网络--根据IP地址和路由表计算下一跳-CSDN博客 2.更新路由表 计算机网络--路由表的更新-CSDN博客 3.根据题目要求给出路由表 4.路由器收到某个分组,解释这个分组是如何被转发的 5.转发分组之路由器的选择 二、举个例子 …

Python安装(新手详细版)

前言 第一次接触Python,可能是爬虫或者是信息AI开发的小朋友,都说Python 语言简单,那么多学一些总是有好处的,下面从一个完全不懂的Python 的小白来安装Python 等一系列工作的记录,并且遇到的问题也会写出&#xff0c…

2025 年前端新技术如何塑造未来开发生态?

开发领域:前端开发 | AI 应用 | Web3D | 元宇宙 技术栈:JavaScript、React、ThreeJs、WebGL、Go 经验经验:6 年 前端开发经验,专注于图形渲染和 AI 技术 开源项目:AI智简未来、晓智元宇宙、数字孪生引擎 大家好&#x…

1-markdown转网页样式页面 --[制作网页模板] 【测试代码下载】

markdown转网页 将Markdown转换为带有样式的网页页面通常涉及以下几个步骤:首先,需要使用Markdown解析器将Markdown文本转换为HTML;其次,应用CSS样式来美化HTML内容。此外,还可以加入JavaScript以增加交互性。下面我将…

数据逻辑(十)——逻辑函数的两种标准形式

目录 1 最小项和最大项 1.1 最小项 1.2 最大项 2 逻辑函数的最小项之和 3 逻辑函数的最大项之积 4 最小项之和以及最大项之积的联系和应用场景 4.1 最小项之和以及最大项目之积的联系 4.2 最小项之和以及最大项之积的应用场景 逻辑函数的两种标准形式分别是以最小项之和…

【Ubuntu使用技巧】Ubuntu22.04无人值守Crontab工具实战详解

一个愿意伫立在巨人肩膀上的农民...... Crontab是Linux和类Unix操作系统下的一个任务调度工具,用于周期性地执行指定的任务或命令。Crontab允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。这些任务可以按照分钟、小时、日…

鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来

Flutter 技术原理 Flutter 是一个主流的跨平台应用开发框架,基于 Dart 语言开发 UI 界面,它将描述界面的 Dart 代码直接编译成机器码,并使用渲染引擎调用 GPU/CPU 渲染。 渲染引擎的优势 使用自己的渲染引擎,这也是 Flutter 与其…

UniApp | 从入门到精通:开启全平台开发的大门

UniApp | 从入门到精通:开启全平台开发的大门 一、前言二、Uniapp 基础入门2.1 什么是 Uniapp2.2 开发环境搭建三、Uniapp 核心语法与组件3.1 模板语法3.2 组件使用四、页面路由与导航4.1 路由配置4.2 导航方法五、数据请求与处理5.1 发起请求5.2 数据缓存六、样式与布局6.1 样…

法拉利F80发布 360万欧元限量799辆 25年Q4交付

今日,法拉利旗下全新超级跑车——F80正式发布,新车将作为法拉利GTO和法拉利LaFerrari(参数丨图片) Aterta的继任者,搭载V6混合动力系统,最大综合输出功率高达1632马力。售价360万欧元,全球限量生…