性能测试-JMeter(3)

JMeter

JMeter直连数据库

直连数据库的使用场景

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

关键配置

  • 添加MySQL驱动jar包
    • 方式一:在测试计划面板点击"浏览..."按钮,将难度JDBC驱动添加进来
    • 方式二:将MySQL驱动jar包放入到lib/ext目录下,重启JMeter
  • 配置数据库连接信息
    • 添加方式:测试计划 --> 线程组 --> (右键添加)配置元件 --> JDBC ConnectionConfiguration
    • 数据库连接池名称、数据库URL(协议+数据库IP+数据库端口+连接的数据库名称)、数据库驱动包(下拉框选择)、数据库用户名密码
  • 添加JDBC请求
    • 添加方式:测试计划 --> 线程组 --> 取样器 --> JDBC Request
    • 数据库连接池名称、Query Type、SQL语句、查询结果保存的变量名

案例-搜索结果断言

1、连接tpshop商城数据库获取商品名包含:小米手机5 的商品id(假设上一个案例的查询结果ID为65)

2、在tpshop首页中搜索商品名"小米手机5",请求URL:http://127.0.0.1/Home/Goods/search.html 请求方法:GET,请求参数:q=小米手机5

3、在搜索的响应数据中检查是否有该商品对应的商品链接:/Home/Goods/goodsInfo/id/65.html

操作步骤:

1、添加线程组

2、添加 JDBC ConnectionConfiguration

3、添加 JDBC Request

4、添加HTTP请求-搜索商品

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

6、添加查看结果树

JMeter逻辑控制器

IF控制器

  • 作用:If控制器用来控制它下面的测试元素是否运行
  • 位置:测试计划 --> 线程组 --> (右键添加)逻辑控制器 --> 如果(If)控制器
  • 参数介绍:
    • JS形式:

    • 函数形式:

练习:

1、使用'用户定义的变量'定义一个变量name,name的值可以是'baidu'或'itcast

2、根据name的变量值实现对应网站的访问

操作步骤

1.添加线程组

2.用户定义的变量

3.添加If控制器,判断name是否等于baidu

4.添加HTTP请求,用来访问百度

5.添加If控制器,判断name是否等于itcast

6.添加HTTP请求,用来访问传智播客

7.添加查看结果树



循环控制器

  • 作用:通过设置循环次数,来实现循环发送请求
  • 位置:测试计划 --> 线程组 --> (右键添加)逻辑控制器 --> 循环控制器
  • 参数介绍:

    练习:循环请求百度10次

循环控制器和线程组循环次数的区别

不同点:线程组循环组内所有请求,循环控制器只控制子节点下的请求

关联:循环控制器次数为M,线程组循环次数为N

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

ForEach控制器

  • 作用:一般和用户自定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量。该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值
  • 位置:测试计划 --> 线程组 --> (右键添加)逻辑控制器 --> ForEach控制器
  • 参数:

【练习1】

1、有一组关机子[hello, python, 测试],使用用户定义的变量存储

2、要依次取出关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=hello

操作步骤:

  1. 添加线程组
  2. 添加用户定义的变量
  3. 添加ForEach控制器
  4. 添加HTTP请求-百度
  5. 添加查看结果树


【练习2】

1、访问传智播客首页http://www.itcast.cn,获取首页中的地址信息,并全部保存下来

2、要依次取出地址关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=地址

操作步骤

  1. 添加线程组
  2. 添加HTTP请求1-itcast
  3. 在HTTP请求1下面,添加正则表达式提取器,提取出所有的地址信息
  4. 添加ForEach控制器
  5. 添加HTTP请求2-百度
  6. 添加查看结果树

JMeter定时器

同步定时器

  • 同步定时器:阻塞线程(积累一定请求),当在规定的时间内达到一定的线程数量,这些线程会在同一时间点一起释放,瞬间产生很大的压力
    提示:在JMeter中叫做同步定时器,在Loadrunner中又叫集合点
  • 适用场景:同一时间发送请求量巨大,例如秒杀、抢红包等高并发场景
  • 位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)定时器 --> Synchronizing Timer

【练习】

1、模拟100个用户同时访问百度首页,统计各种高并发情况下运行情况

操作步骤:

  1. 添加线程组,设置线程数=100
  2. 添加HTTP请求
  3. 添加同步定时器,并发数可分别设置20/30人
  4. 添加查看结果树
  5. 添加监听器-聚合报告

常数吞吐量定时器

  • 应用场景:模拟用户真实的业务场景
  • 作用:按指定的吞吐量执行,以每分钟为单位
  • 位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)定时器 --> Constant Throughput Timer
  • 参数:
  • 案例要求:
    • 模拟用户真实的业务场景要求:20 QPS(20次/秒)
    • 如果线程数设置为1,则目标吞吐量设置为20*60=1200
    • 如果线程数设置为2,则目标吞吐量设置为20*60 / 2=1200
      【练习】
      1、一个用户以 20QPs(20次/s)自的频率访问百度首页,持续一段时间,统计运行情况
      操作步骤:
  1. 添加线程组,循环次数设置成永远
  2. 添加HTTP请求
  3. 添加常数吞吐定时器
  4. 添加查看结果树
  5. 添加监听器-聚合报告

固定定时器

案例:IHRM系统登录错误3次后,锁定1分钟,1分钟后重新输入正确的用户名密码登录成功

步骤:

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

注意:

  • 固定定时器,必须添加在需要等待的HTTP请求的子节点下
  • 在HTTP信息头管理器中,修改HTTP请求的头域
相关推荐
互联网杂货铺21 小时前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
ggggyyyyy09281 天前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
明月与玄武1 天前
Jmeter 分布式压测部署--常见坑以及解决方案
分布式·jmeter
字节程序员1 天前
使用JUnit进行集成测试
jmeter·junit·单元测试·集成测试·压力测试
hakesashou1 天前
jmeter怎么调用python
开发语言·python·jmeter
我非夏日1 天前
JMeter配置原件-计数器
jmeter
爱学测试的李木子1 天前
性能】JDK和Jmeter的安装与配置
java·开发语言·软件测试·测试工具·jmeter
rkmhr_sef1 天前
二、Jmeter Web压测
前端·jmeter
字节程序员1 天前
Jmeter分布式测试的注意事项和常见问题
软件测试·分布式·jmeter
小张帅三代2 天前
jmeter 接口性能测试 学习笔记
笔记·学习·jmeter