自学内容网 自学内容网

性能测试-JMeter(3)

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请求的头域
    在这里插入图片描述

原文地址:https://blog.csdn.net/zxcvbnm_1206/article/details/142886838

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!