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

news2024/11/27 17:43:45

目录

前言

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秒:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1160501.html

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

相关文章

答题小程序好友PK答题模块来袭,快来一决高下!

答题小程序源码之好友pk答题怎么做 各位亲爱的答题小程序小伙伴,大家好!今天我们来一起看一下答题小程序的好友PK答题怎么做,好友PK顾名思义即邀请微信好友进行一对一的PK答题,该模式的特点是有针对性的PK答题,比如我要…

Kafka、RabbitMQ、RocketMQ中间件的对比

消息中间件现在有不少,网上很多文章都对其做过对比,在这我对其做进一步总结与整理。 RocketMQ 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成…

敲敲云零代码平台—近期亮点功能,让开发者对零代码心动~

近期敲敲云零代码平台,更新了很多实用新功能,包括汇总组件添加了筛选条件,增加了汇总日期控件,子表添加了批量添加和默认值等等。 1. 单选/多选/下拉选择 颜色设置 效果展示 在列表和表单中可通过不同颜色显示字段的不同等级或者…

【深⼊理解指针4】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 回调函数是什么? 2. qsort使用举例 2.1测试qsort函数排序整型数组 2.2测试qsort函数排序结构体数组 3. qsort函数的模拟实现 3.1测试bubble_sort函数…

C++对象的内存分布和虚函数表

Linux C/C 开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全) c中一个类中无非有四种成员:静态数据成员和非静态数据成员,静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来…

Linux -------------------设置防火墙和SELinux

(一)防火墙概述 防火墙的概念:防火墙是一种非常重要的网络安全工具,它是网络安全的重要组成部分,用于保护计算机网络免受未经授权的访问、恶意攻击和数据泄漏等威胁等。 防火墙的特点 防火墙通常具备以下几个特点。 …

(免费领源码)springboot#MYSQL钓鱼交友平台小程序33506-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1课题目的与意义 1.2国内外研究现状 1.3论文结构与章节安排 1.4小程序框架以及目录结构介绍 2 Springboot钓鱼交友平台小程序系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2…

Linux内核是如何创建进程?

目录 1.Linux如何创建进程 2.fork函数原理 2.1 fork函数原型 2.2 fork函数实现原理 2.3 父子进程虚拟地址空间(mm_struct)之间的关系 2.4 写时拷贝(copy-on-write)技术 2.5 父子进程如何共享文件(files_struct&…

四十三、【进阶】前缀索引

1、基础 简单点说,前缀索引就是当索引字段类型较大时,有时候需要索引很长的字符串,查询时,会浪费更大的空间,此时可以只对该索引的一部分前缀建立索引,可以大大的节省空间。 前缀索引一般配合选择度进行使用…

多测师肖sir_高级金牌讲师_性能指标

性能指标 一、性能测试指标 性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。 目的:验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。 二、指标分为两大类: 软件…

ZKP9 SNARKs based on Linear PCP (Pinocchio Groth16)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 9: SNARKs based on Linear PCP (Yupeng Zhang) SNARKs learned so far Earliest Implemented SNARKs Pros Shortest proof size (3 elements [Groth16])Fast verifier (bilinear pairing) Cons FFT and group exponentiatio…

西门子PLC ModbusTcp通信访问网关后从站(SCL语言轮询状态机FB)

西门子PLC的ModbusTcp通信在专栏已有系列文章介绍,所不同的是每个项目的通信需求都略有不同,今天我们以访问网关后的三个从站数据来举例,给出轮询的推荐写法,这里我们利用SCL语音进行编程,方便大家导入导出到自己的项目里使用,相关文章链接大家可以参考下面地址: SMART…

飞致云及其旗下1Panel项目进入2023年第三季度最具成长性开源初创榜单

2023年10月26日,知名风险投资机构Runa Capital发布2023年第三季度ROSS指数(Runa Open Source Startup Index)。ROSS指数按季度汇总并公布在代码托管平台GitHub上年化增长率(AGR)排名前二十位的开源初创公司和开源项目。…

CS224W4.4——矩阵分解和节点Embeddings

我们稍微切换一下方向,讨论生成节点嵌入的矩阵分解方法。具体来说,我们讨论了前面提到的学习节点嵌入的方法如何与矩阵分解的方法联系起来。基于这些直觉,我们提出了基于矩阵分解和随机游走的嵌入方法的3个局限性。在接下来,我们将…

基于51单片机霍尔测速直流电机控制设计

**单片机设计介绍,1658【毕设课设】基于51单片机霍尔测速直流电机控制设计(含源码、原理图、论文、PCB封装) 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 51单片机是微型计算机的一种常见类型,用于处理数…

GB28181协议如何注册

前言 GB28181协议是视频监控领域的国家标准,本文将解析如何在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。 1.背景介绍 GB28181协议指的是国家标准GB/T 28181…

S/4 HANA 中的 Email Template

1 如何创建Email Template? 没有特定的事务用于创建电子邮件模板,我们可以将其创建为 SE80 事务中的存储库对象,如下所示: 1,选择包(或本地对象)并右键单击。 2,选择“创建”->“更多”->“电子邮件模板” 尽管如此,对于已有的Email Template,可以使用程序…

音视频开发:音频编码原理+采集+编码实战

原理: 消除冗余信息,压缩量最大,也叫有损压缩 剔除人耳听觉范围外的音频信号20Hz以下和20000Hz以上;去除被掩蔽的音频信号,信号的遮蔽可以分为频域遮蔽和时域遮蔽;频域遮蔽效应 屏蔽70分贝以下&#xff0…

【QT】仿函数

函数调用运算符 () 也可以重载由于重载后使用的方式非常像函数的调用&#xff0c;因此称为仿函数仿函数没有固定写法&#xff0c;非常灵活 示例&#xff1a; #include <iostream> #include <string> using namespace std;class MyPrint { public://重载的运算符是…

MFC网络编程-Udp客户端

目录 1、UI的设计&#xff1a; 2、代码的实现&#xff1a; &#xff08;1&#xff09;、重写CSocket虚函数OnReceive&#xff0c;并且传入对话框的指针 &#xff08;2&#xff09;、初始化SOCKET &#xff08;3&#xff09;、绑定本地IP和端口 &#xff08;4&#xff09;、…