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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NB-IOT的粮库挡粮门异动监测装置

一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…

从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程

文章目录 前言内容简介作者简介专家推荐读者对象直播预告 前言 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不断地影响和…

Gcov 查看代码覆盖率

GCOV 工具简介 gcov是一个测试代码覆盖率的工具。 它是 gcc 自带的查看代码覆盖率的工具,无需额外安装,在嵌入式的 arm-eabi-none-gcc 中同样可以使用(需要重写部分系统函数)。 使用效果如下图所示: 程序运行完成后…

Ubuntu自建git服务器

Ubuntu 安装 gitlab-ce sudo apt-get update sudo apt-get install gitlab-ce 安装成功 sudo apt-get install gitlab-ce 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列【新】软件包将被安装:gitlab-ce 升…

GitHub项目监控

目录 github开放平台接口限流 监控某个仓库的更新状态 对于常用Github的用户来说,经常有一些自动化的需求。比如监控某些项目的更新情况并实时拉取,比如监控github全网上传的代码是否携带了公司的APIKEY,SECRETKEY等… github开放平台 gith…

26 行为型模式-命令模式

1 命令模式介绍 2 命令模式原理 3 命令模式实现 模拟酒店后厨的出餐流程,来对命令模式进行一个演示,命令模式角色的角色与案例中角色的对应关系如下: 服务员: 即调用者角色,由她来发起命令. 厨师: 接收者,真正执行命令的对象. 订单: 命令中包含订单 /*** 订单类**/ public cl…

2023年Zotero最新同步教程-使用TeraCloud的25G免费空间实时跨设备同步文献

文章目录 1. 前言2.1. 注册账号2.1.1. 填写注册信息2.1.2. 创建账号成功2.1.3. 注意2.2. 扩容空间2.3. 打开WebDAV 3. Zotero配置WebDAV同步3.1. 设置网址3.2. 验证服务器3.3. 文件同步成功 4. 结语 1. 前言 Zotero免费版的存储空间是300m,一个图文PDF动辄两三M&am…

智慧灌溉平台

1.知识百科 智慧灌溉是运用物联网、云计算、大数据等新一代信息技术,结合农业生产的实际需求,通过传感器采集土壤温湿度、光照强度等信息,利用无线传感网络传输到中央控制系统进行智能控制。智慧灌溉系统由传感器(水位传感器&…

YOLOv5优化:独家创新(SC_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

💡💡💡本文独家改进:独家创新(SC_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 SC_C_Detect | 亲测在多个数据集能够实现大幅涨点 目录 1. SC_C_Detect介绍 2. SC_C_Detect加入YOLOv5 2.1 新建models/head_improve.py

基础课15——语音标注

语音数据标注是对语音数据进行处理和分析的过程,目的是让人工智能系统能够理解和识别语音中的信息。这个过程包括了对语音信号的预处理、特征提取、标注等步骤。 在语音数据标注中,标注员需要对语音数据进行分类、切分、转写等操作,让人工智…

京东平台数据分析:2023年9月京东扫地机器人行业品牌销售排行榜

鲸参谋监测的京东平台9月份扫地机器人市场销售数据已出炉! 根据鲸参谋平台的数据显示,9月份,京东平台扫地机器人的销量近14万,环比增长约2%,同比降低约4%;销售额为2.9亿,环比降低约4%&#xff0…

GORM:在Go中轻松管理数据库

GORM综合介绍 - Go对象关系映射库 在现代软件开发中,高效的数据库管理对于构建强大的应用程序至关重要。GORM是Go开发人员寻求与数据库进行交互的简化方式的宝贵工具。GORM是Go对象关系映射的缩写,它为Go的面向对象世界与数据库的关系世界之间提供了桥梁…

获取Webshell方法

CMS系统指的是内容管理系统。已经有别人开发好了整个网站的前后端,使用者只需要部署cms,然后通过后台添加数据,修改图片等工作,就能搭建好一个的WEB系统。 CMS获取Webshell方法 WordPress后台拿Webshell phpcms拿Webshell 非CMS…

FedAT:异步更新联邦学习方法

文章链接:FedAT: A Communication-Efficient Federated Learning Method with Asynchronous Tiers under Non-IID Data 发表会议: SC’21 (International Conference for High Performance Computing, Networking, Storage, and Analysis) 高性能计算,体…

【Cocos新手进阶】使用cocos 的预制体创建动态的滚动框组件。

本篇文章主要讲解,使用cocos 游戏引擎制作动态生成的滚动框实例教程。 日期:2023年11月1日 作者:任聪聪 引擎版本:2.4.3 至 2.4.11 关于预制体的说明和概念 cocos中的预制体的作用是能够让你使用数据的形式进行控制界面的变化&am…

Python web开发中的单元测试自动化技巧!

Python作为一种广泛使用的编程语言,在web开发中也扮演着重要的角色。在进行web开发时,单元测试是一个不可或缺的环节。单元测试可以确保代码的正确性,并且能够在开发过程中快速发现问题,有助于提高代码质量和开发效率。 在Python…

黑芝麻智能助力亿咖通·天穹Pro行泊一体智能驾驶计算平台正式量产

11月1日,亿咖通科技旗下首款智能驾驶计算平台——亿咖通天穹Pro行泊一体智能驾驶平台已向客户开始正式量产交付。亿咖通天穹行泊一体智能驾驶计算平台是亿咖通科技基于黑芝麻智能华山二号A1000,由双方合作研发并推出的具备行泊一体能力的智能驾驶解决方案…

【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入

引言 在上一篇中我们介绍了MySQL ALTER命令及序列使用;在开发中,对MySQL重复数据的处理是十分重要的。这一篇我们使用命令行方式来帮助读者掌握MySQL中重复数据的操作。 上一篇链接:【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令…

Http代理与socks5代理有何区别?如何选择?(二)

上篇文章我们基本分别了解了http代理与socks5代理的定义与优缺点,接下来我们继续来了解http代理与socks5代理之间的比较与区别。 一、两者的比较 1、功能比较 HTTP代理专门用于Web流量,并在处理HTTP和HTTPS协议方面非常高效。它们可以修改正在传输的数据…

网络层协议【IP协议】

全文目录 基本概念IP协议IPv4 协议头格式:分片发送方进行分片:识别IP分片:组装IP分片: 网段划分DHCP技术IP分类 私有IP和共有IP1. 私有IP地址(Private IP Address):2. 公网IP地址(Pu…