目录
一、连接数据库
1、使用场景
2、直连数据库的关键配置
3、案例
编辑
二、逻辑控制器
1、if控制器
2、循环控制器
3、ForEach控制器
三、定时器
1、同步定时器
2、常数吞吐量定时器(用的少,了解即可)
3、固定定时器
一、连接数据库
1、使用场景
2、直连数据库的关键配置
- ① 添加MySQL驱动jar包
- 方式一:在测试计划面板点击“浏览…“按钮,将你的JDBC驱动添加进来 --本脚本可用
- 方式二:(更常用)将MySQL驱动jar包放入到lib/ext目录下,重启JMeter --所有脚本可用
- ② 配置数据库连接信息
- 添加方式:测试计划→线程组→ (右键添加) 配置元件→ JDBC Connection Configurati
- ③ 添加JDBC请求
- 添加方式:测试计划→线程组→取样器→JDBC Request
3、案例
编写JDBC脚本步骤:搜索指定商品(该商品已经通过直连数据库来获取到某商品的id),在返回结果中检查是否包含指定商品的ID的详情URL
①添加线程组
②添加 JDBC Connection Configuration
③添加 JDBC request
④添加 HTTP请求 - 搜索商品
⑤在搜索HTTP请求下,添加响应断言,检查响应结果中的字符是否包含商品URL。引用格式:${变量名_索引}
【注意】直连数据库并查询后保存的变量名goods_id是可以在其他请求中以${变量名}的方式使用的,但是需要debug一下,确认实际取到值的变量名具体是什么,可能不是goods_id。
⑥查看结果树
案例详细步骤可观看视频:05.性能测试_直连数据库的案例2 - 搜索结果断言_哔哩哔哩_bilibili
二、逻辑控制器
逻辑控制器:可以按照设定的逻辑控制取样器的执行顺序
1、if控制器
作用:If控制器用来控制它下面的测试元素是否运行,满足条件即执行,不满足就不执行
位置:测试计划→线程组→(右键添加)逻辑控制器 →如果(If)控制器
参数:下面两种哪个都可以,函数形式效率更高一些
- JS形式:
- 函数形式:使用函数助手生成函数
操作步骤:
- 添加线程组
- 用户定义的变量
- 添加If控制器,判断name是否等于baidu
- 在If控制器下添加HTTP请求,用来访问百度
- 添加If控制器,判断name是否等于itcast
- 在If控制器下添加HTTP请求,用来访问传智播客
- 添加查看结果树
2、循环控制器
作用:通过设置循环次数,来实现循环发送请求
位置:测试计划→线程组→(右键添加)逻辑控制器→ 循环控制器
参数:
操作步骤:
- 添加线程组
- 添加循环控制器
- 添加HTTP请求
- 添加查看结果树
【思考】线程组属性可以控制循环次数,那么循环控制器有什么用?
控制的作用域不同:线程组控制是线程组下的所有请求,循环控制器控制逻辑控制器下的所有请求如果线程组循环次数为M,循环控制器循环次数为N:
- 循环控制器下的HTTP请求运行:M*N次
- 线程组下的其他HTTP请求运行:M次
3、ForEach控制器
作用:一般和用户自定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量值。该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值。
位置:测试计划 →线程组→(右键添加)逻辑控制器→ ForEach控制器
配置项:
操作步骤:
①与用户定义的变量配合使用
- 添加线程组
- 添加用户定义的变量
- 返回一组变量:相同的变量名+连续的数字后缀
- 添加ForEach控制器
- 添加HTTP请求-百度
- 引用ForEach控制器中保存的新变量名,如${kw}
- 添加查看结果树
②与正则表达式提取器配合使用
- 添加线程组
- 添加HTTP请求-itcast (目的是从该网站首页获取地址信息,并保存下来)
- 添加正则表达式提取器
- 添加ForEach控制器
- 添加HTTP请求-百度
- 添加查看结果树
三、定时器
1、同步定时器
作用:阻塞线程(累积一定的请求),当在规定的时间内达到一定的线程数量,这些线程会
在同一个时间点一起释放,瞬间产生很大的压力。
(提示:在JMeter中叫做同步定时器,在Loadrunner中又叫集合点)
使用场景:测试抢购、秒杀或者抢红包等高并发的场景
位置:测试计划→线程组→HTTP请求→(右键添加)定时器 →Synchronizing Timer
配置项:时间和数量满足一项即会释放线程
操作步骤:
- 添加线程组,设置线程数为n
- 添加HTTP请求
- 添加同步定时器
- 设置并发线程数:同时发送请求的虚拟用户数
- 设置超时时间:
- Ø建议设置:不设置的话,若没有达到设置的线程数会一直死等
- Ø不能设置太小:等待时间后还没达到设置的线程数,会释放已到达的线程
- 添加查看结果树
- 添加监听器-聚合报告
2、常数吞吐量定时器(用的少,了解即可)
使用场景:稳定性测试时,需要指定按照特定的吞吐量发送请求时,要求模拟用户真实的业务场景。
作用:让JMeter按指定的吞吐量执行,以每分钟为单位。
位置:测试计划→线程组 →HTTP请求 →(右键添加)定时器 →Constant Throughput Timer
参数:
操作步骤:
- 添加线程组,循环次数设置成永远
- 添加HTTP请求
- 添加常数吞吐定时器
- 目标吞吐量是指每个用户每分钟发送的请求数
- 计算方法:要求的QPS*60/线程数
- 添加查看聚合报告
3、固定定时器
使用场景:Jmeter的线程组在发送2个请求之间需要设置一个等待时间时,可以用固定定时器解决。
案例:
(1)IHRM系统登录错误3次后,锁定1分钟,等待1分钟后重新输入正确的用户名密码登录成功请求方法:POST
请求URL:http://ihrm-test.itheima.net/api/sys/login
请求头:Content-Type: application/json;charset=UTF-8
请求体:{"mobile":"13800000002","password":"123456"}
步骤:
- 添加线程组
- 添加HTTP请求1 - 错误1次
- 添加HTTP请求2 - 错误2次
- 添加HTTP请求3 - 错误3次
- 添加HTTP请求4 - 正确用户名密码在HTTP请求4下,添加固定定时器添加
- 查看结果树