性能测试-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请求的头域
相关推荐
文人sec3 天前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
CesareCheung4 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流4 天前
jmeter使用技巧
jmeter
春时似衿里4 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书4 天前
JMeter的安装部署
jmeter
程序员杰哥4 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎4 天前
Jmeter测试
jmeter
卓码软件测评5 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao5 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥5 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter