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

JMeter的使用——傻瓜式学习【下】

目录

前言

1、自动录制脚本

1.1、原理

 1.2、JMeter脚本录制

2、JMeter直连数据库

2.1、直连数据库的作用

2.2、JMeter直连数据库的步骤

案例:

3、JMeter的逻辑控制器

3.1、if控制器

案例:

3.2、循环控制器

案例:

3.3、ForEach控制器

案例:使用用户自定变量~

4、JMeter的定时器

4.1、同步定时器

案例:

4.2、常数吞吐量定时器

案例:

4.3、固定定时器

案例:


前言

        JMeter学习上:http://t.csdnimg.cn/DOWpY

        JMeter学习中:http://t.csdnimg.cn/sLJ99


1、自动录制脚本

1.1、原理

        JMeter录制脚本,在没有接口文档的旧项目中,快速录制web页面产生的http接口请求,帮助编写接口测试脚本。

JMeter录制脚本原理:

正常请求过程:

JMeter录制过程:

 1.2、JMeter脚本录制

步骤一:添加http代理服务器,并进行配置

加http代理服务器:

配置代理服务器的参数:

步骤二:开启Windows操作系统的浏览器代理

 步骤三:启动代理服务器:

然后去,浏览器操作,有的可能要在Chrome浏览器,有的是IE,你都试试,看哪个能抓到:

我这边是Chrome浏览器,我浏览了我本机服务器下的一个博客系统的网页,如下:

我们这就是成功了~

我们可以看到上面有很多是css文件js文件,我们不想获取这类的文件,可以在http代理服务器的配置中做如下修改:

 包含就是:匹配则抓取;排除模式:匹配则丢弃【不抓取】~


2、JMeter直连数据库

2.1、直连数据库的作用

  1. 用作请求的参数化。例如:登录时需要的用户名,可以从数据库中查询获取
  2. 用作结果断言。例如:添加购物车下订单,检查接口返回的订单号,是否与数据库中生成的订单号一致
  3. 清理垃圾数据。例如:添加商品时(添加商品编号不能重复),重复时执行该脚本不能成功,需要在下次执行前删除该商品数据(取消添加)
  4. 准备测试数据。例如:通过数据库来准备大量的(几十万条)的性能测试数据

2.2、JMeter直连数据库的步骤

        我们先要准备一个MySQL驱动包,我们在MySQL官网中下载即可,下载jar的版本最好和你使用的MySQL的版本一致~下载后,是得到一个压缩包,你解压缩后里面就有一个jar包了~

步骤一:添加MySQL驱动jar包

方式一:在测试计划面板点击:浏览..按钮,将你的JDBC驱动添加进来

方式二:将MySQL驱动jar包放入到lib/ext目录下,重启JMeter

步骤二:配置数据库连接信息

位置:

参数介绍:

  • Variable Name for created pool:MySQL数据库连接池名称(JDBC请求时要引用,自己命名)
  • Database URL:jdbc:mysql://localhost:3306/cnblog【协议 + 数据库IP + 数据库端口 +连接的数据库名,例我这里,协议是jdbc:mysql,数据库IP是本机,端口3306,数据库名是cnblog】
  • JDBC Driver class:com.mysql.jdbc.Driver【下拉框】
  • Username:root【连接的数据库用户名,如实填写】
  • Password:****【连接的数据库密码,如实填写,密码为空就不写】

如下:

步骤三:添加JDBC请求

位置:

添加:

参数介绍:

  • Variable Name:数据库连接池的名字,就是上面你自己命名的那个名字
  • Query Type:自己选择是什么操作,有:增删改查~
  • Query:填写SQL语句,末尾不要";"
  • Variable names:保存sql语句返回结果的变量名

案例:

        我刚才的JDBC连接配置的就是我本机数据库中的cnblog库,所以我们就使用这个库,这个库中有一张用户表,我们现在来查查这张表有多少个用户吧~

步骤:

  1. 添加一个线程组
  2. 添加JDBC Connection Configuration
  3. 添加JDBC request
  4. 添加一个正则表达式,取结果
  5. 添加http请求
  6. 添加查看结果树
  7. 运行看结果

这个请求数据不对,我们添加一个调试取样器,来看看,到底有没有值:

重新运行看看:

所以我们来修改一下请求中的变量:

运行看结果:

成功~ 


3、JMeter的逻辑控制器

3.1、if控制器

作用:if控制器用来控制指定的测试元素是否运行

位置:

参数说明:

  • Expression (must evaluate to true or false) :表达式(值必须是true或false),也就是说,在右边文本框中输入的条件值必须是true 或 false,(默认情况下)
  • Interpret Condition as Variable Expression?:默认勾选项,将条件解释为变量表达式(expression中不能直接填写条件表达式,需要借助函数将条件表达式计算为true/false,可以借助的函数有_jexl3和_groovy)【选中这一项时表示:判断变量值是否等于字符串true(不区分大小写)】【不选中:直接输入我们需要判断的表达式即可,判断表达式为真时,执行if控制器下的请求,例如“1!=2”,则一定会执行下面的http请求】
  • Evaluate for all children?:条件作用于每个子项,执行每个子项,都会判断一次条件。一般不勾选,条件一般只判断一次即可

解释:

  • 上面有一个黄色感叹号,就是提示你使用__jexl3 or __groovy 表达式,以提高性能,也就是默认的方式
  • jexl全称:Jakarta Commons Jexl,是一种表达式语言(Java Expression Language)解释器

举例1,直接输入我们需要判断的表达式:

举例2,使用函数:

案例:

步骤:

  1. 创建一个线程组
  2. 创建一个用户定义的变量,在这里添加一个变量,名为title,值为百度
  3. 创建一个if控制器,和上面的步骤一样,在函数中生成,复制过来,比较title值等不等于百度
  4. 在if控制器下创建一个http请求【if为真请求可发送,为假,请求不发送】
  5. 创建一个查看那结果树

目录结构:

 运行看结果:

你可以尝试修改值,不相等时,请求就不会发送了~

3.2、循环控制器

位置:

参数都是中文就不介绍了~

案例:

  1. 添加一个线程组
  2. 添加一个循环控制器,循环次数设置为3
  3. 在上面这个循环控制器下面添加一个http请求
  4. 添加一个表格查看结果树

目录结构:

运行结果:

3.3、ForEach控制器

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

位置:

参数介绍:

  • 输入变量前缀:要读取的输入变量的固定前缀
  • Start index for loop(exclusive):开始循环字段(不包含)。要读取的输入变量后缀数字的最小值-1
  • End index for loop(inclusive):结束循环字段(包含)。要读取的输入变量后缀数字的最大值
  • 输出变量名称:读取输入变量的值后保存的新变量名,用于后续http请求来引用~

案例:使用用户自定变量~

步骤:

  1. 添加一个线程组
  2. 添加一个用户定义的变量:
  3. 添加foreach循环器:
  4. 在控制器下面添加一个http请求:
  5. 添加生成结果树

目录结构:

运行结果:

例如查看第5个请求:


4、JMeter的定时器

4.1、同步定时器

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

位置:

参数介绍:

  • Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量。如果设置为0,表示设置为线程组中的线程数量
  • Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数。如果设置为0,表示该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直死等;如果设置的值大于0,那么如果超过设置的最大等待时间还没有达到设置的线程数,Timer将不再等待,释放已到达的线程。默认为0.

案例:

步骤:

  1. 添加一个线程组,线程数设置为20
  2. 添加一个http请求
  3. 添加同步定时器,模拟用户数量设置为5,超时为100
  4. 添加一个表格查看结果树

目录:

运行结果:

前五个为一组,几乎是同一时间发送的请求~

4.2、常数吞吐量定时器

作用:可以让线程以一个目标吞吐量去运行

位置:

参数说明:

  • Target throughput (in samples per minute):目标吞吐量(每分钟的样本量)。每分钟的吞吐量
  • Calculate Throughput based on:基于什么计算吞吐量
  • this thread only:只有此线程。控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的target Throughput(上面设置的每分钟的吞吐量) 乘以该线程的数量
  • all active threads:所有活动线程。设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程
  • all active threads in current thread group:当前线程组中的所有活动线程。设置的target Throughput 将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和all active threads 选项的效果完全相同
  • all active threads (shared):所有活动线程(共享)。与all active threads的选项基本相同。唯一区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行
  • all active threads in current thread group (shared):当前线程组中的所有活动线程(共享)。与all active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行

案例:

步骤:

  1. 添加一个线程组
  2. 添加一个常数吞吐量定时器
  3. 添加一个调试取样器
  4. 添加一个聚合报告

目录结构:

运行结果:

3秒发送了33个请求~ 

4.3、固定定时器

作用:在两个请求之间,第一个请求发送之后等待一段时间再发送第二个请求。

位置:

上面这里设置的延迟时间就是请求1发送后等300毫秒再发后面的请求~

案例:

步骤:

  1. 添加一个线程组
  2. 添加一个http请求1
  3. 添加一个固定定时器,时间设置为3000毫秒,也就是3s
  4. 添加http请求2
  5. 添加一个表格查看结果树

目录结构:

运行观察结果:

相差3秒:

好啦,我们先这里咯,下期见~

相关文章:

JMeter的使用——傻瓜式学习【下】

目录 前言 1、自动录制脚本 1.1、原理 1.2、JMeter脚本录制 2、JMeter直连数据库 2.1、直连数据库的作用 2.2、JMeter直连数据库的步骤 案例: 3、JMeter的逻辑控制器 3.1、if控制器 案例: 3.2、循环控制器 案例: 3.3、ForEach控…...

嵌入式中利用VS Code 远程开发原理

VS Code几乎是所有的程序员必备的工具之一,据说全球一般的开发者都使用过VS Code这款工具。 今天分享一篇 VS Code 实现远程办公相关的文章。 1、概 述 通常,我们都是每天到工作的办公室进行办公,但是,如果下班回家&#x…...

【多媒体文件格式】MP4、MPG、TS、3GP、3G2、3GPA

MP4 mp4或称MPEG-4 Part 14,是一种多媒体容器格式,扩展名为.mp4。 历史[6]: 2001年,apple的QuickTime格式,.qt和.mov的后缀名。2001年,MPEG-4 Part1,把基于QuickTime的box布局的容器格式添加…...

学习Opencv(蝴蝶书/C++)相关——1. 前言 和 第1章.概述

文章目录 1. 整体架构1.1 OpenCV3.01.2 Opencv4.xX. 在线文档X.1 Opencv cheatsheet(小抄)1. 整体架构 1.1 OpenCV3.0 对于Opencv3.x版本,网上最常见的图,图自OpenCV Tutorial-Itseez 现在已经不是500+的算法了,而是2500+,详见:About...

【数据分享】8个城市的共享单车数据(数据量约10亿条\免费获取)

共享单车数据是我们最常使用的交通大数据之一,但是共享单车数据没有公开的获取渠道,有些学者可能能通过与相关机构合作拿到数据,但是对于绝大多数普通人是没有这个机会的!那就完全没有机会能获取到共享单车数据了吗? …...

软件测试进阶篇----移动端测试

一、移动端测试概述 移动端测试不是一个新的领域,所采用的测试的理论、原则和方法、技术和之前web的是一样的。 移动端的手工测试,和web端的点点点是一样的。 移动端的自动化测试,pythonappiumunittest/pytestddtBeautifulReport/alluregi…...

偏序关系用分治优化建图:ARC165F

https://atcoder.jp/contests/arc165/tasks/arc165_f 首先可以建图&#xff0c;然后变成求字典序最小的的拓扑排序 然后发现这样复杂度会炸&#xff0c;观察连边的条件是什么&#xff1a; l i < l j l_i<l_j li​<lj​ r i < r j r_i<r_j ri​<rj​ 这是个…...

StripedFly恶意软件:悄无声息运行5年,感染百万设备

导语&#xff1a;最近&#xff0c;俄罗斯网络安全公司Kaspersky发布的一项调查显示&#xff0c;一种名为StripedFly的高级恶意软件伪装成加密货币挖矿程序&#xff0c;悄无声息地在全球范围内运行了超过5年&#xff0c;感染了100万台设备。这是一种复杂的模块化框架&#xff0c…...

Flink SQL DataGen Connector 示例

Flink SQL DataGen Connector 示例 1、概述 使用 Flink SQL DataGen Connector&#xff0c;可以快速地生成符合规则的测试数据&#xff0c;可以在不依赖真实数据的情况下进行开发和测试。 2、使用示例 创建一个名为 “users” 的表&#xff0c;包含 6 个字段&#xff1a;id…...

【监控指标】监控系统-prometheus、grafana。容器化部署。go语言 gin框架、gRPC框架的集成

文章目录 一、监控有哪些指标二、prometheus、grafana架构Prometheus 组件Grafana 组件架构优点 三、安装prometheus和node-exporter1. docker pull镜像2. 启动node-exporter3. 启动prometheus 四、promql基本语法五、grafana的安装和使用1. 新建空文件夹grafana-storage&#…...

时序分解 | Matlab实现PSO-VMD粒子群算法优化变分模态分解时间序列信号分解

时序分解 | Matlab实现PSO-VMD粒子群算法优化变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现PSO-VMD粒子群算法优化变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 PSO-VMD粒子群算法PSO优化VMD变分模态分解 可直接运行 分解效果…...

leetcode 684. 冗余连接

树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges &#xff0c;edges[i] …...

yolov8模型训练、目标跟踪

一、准备条件 1.下载yolov8 https://github.com/ultralytics/ultralytics2.安装python https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64.exe3.安装依赖 进入ultralytics-main&#xff0c;执行&#xff1a; pip install -r requirements.txt pip install -U ul…...

Flink SQL Regular Join 、Interval Join、Temporal Join、Lookup Join 详解

Flink ⽀持⾮常多的数据 Join ⽅式&#xff0c;主要包括以下三种&#xff1a; 动态表&#xff08;流&#xff09;与动态表&#xff08;流&#xff09;的 Join动态表&#xff08;流&#xff09;与外部维表&#xff08;⽐如 Redis&#xff09;的 Join动态表字段的列转⾏&#xf…...

如何在搜索引擎中应用AI大语言模型,提高企业生产力?

人工智能尤其是大型语言模型的应用&#xff0c;重塑了我们与信息交互的方式&#xff0c;也为企业带来了重大的变革。将基于大模型的检索增强生成&#xff08;RAG&#xff09;集成到业务实践中&#xff0c;不仅是一种趋势&#xff0c;更是一种必要。它有助于实现数据驱动型决策&…...

实验七 组合器模式的应用

实验目的 1)掌握组合器模式&#xff08;composite&#xff09;的特点 2 分析具体问题&#xff0c;使用组合器模式进行设计。 实验内容和要求 在例3.3的设计中&#xff0c;添加一个空军大队( Wing)类&#xff0c;该类与Squadron、Group类是平行的&#xff0c;因此应该继承了AirU…...

Springboot实现人脸识别与WebSocket长连接的实现

0.什么是WebSocket,由于普通的请求是间断式发送的,如果要同一时间发生大量的请求,必然导致响应速度慢(因为根据tcp协议要经过三层握手,如果不持续发送,就会导致n多次握手,关闭连接,打开连接) 1.业务需求: 由于我需要使用java来处理视频的问题,视频其实就是图片,相当于每张图片…...

智能安全帽功能-EIS智能防抖摄像头4G定位视频语音气体检测

智能安全帽是一种集成多种智能功能的产品&#xff0c;例如实时定位、语音对讲、健康监测和AI智能预警等。这些丰富的功能能够更好地帮助工人开展工作&#xff0c;并提升安全保障水平。智能安全帽在各个行业中的应用越来越广泛。尤其在工程建设领域&#xff0c;项目管理和工作安…...

TEMU跨境平台珠宝首饰RSL报告如何办理?

首饰或者产品TEMU拼多多跨境平台要求的RSL报告如何办理&#xff1f; 珠宝首饰上架前必须进行RSL Report&#xff08;欧盟禁限用化学物质检测报告&#xff09; 随着人们对珠宝首饰的要求越来越高&#xff0c;为了确保珠宝首饰的安全性&#xff0c;欧盟REACH法规规定&#xff0c…...

51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+原理图+PCB+设计报告+讲解视频)

51单片机的篮球计分器液晶LCD1602显示 &#x1f4d1;1.主要功能&#xff1a;&#x1f4d1;讲解视频&#xff1a;&#x1f4d1;2.仿真&#x1f4d1;3. 程序代码&#x1f4d1;4. 原理图&#x1f4d1;5. PCB图&#x1f4d1;6. 设计报告&#x1f4d1;7. 设计资料内容清单&&…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...