JMeter直连数据库和逻辑控制器
- JMeter直连数据库
-
- [案例1 连接tpshop商城数据库获取商品名包含:小米手机5的商品id](#案例1 连接tpshop商城数据库获取商品名包含:小米手机5的商品id)
- [案例2 连接tpshop商城数据库获取商品名包含小米手机5的商品id,并作为请求参数请求并和检查响应后的数据是否存在对应商品id链接](#案例2 连接tpshop商城数据库获取商品名包含小米手机5的商品id,并作为请求参数请求并和检查响应后的数据是否存在对应商品id链接)
- JMeter逻辑控制器
-
- [1. if控制器](#1. if控制器)
-
- [案例一 定义变量name并根据name的变量值实现对应网站的访问](#案例一 定义变量name并根据name的变量值实现对应网站的访问)
- [2. 循环控制器](#2. 循环控制器)
-
- [案例1 循环访问百度十次](#案例1 循环访问百度十次)
- [3. ForEach控制器](#3. ForEach控制器)
-
- [案例1 循环读取用户定义变量并作为参数访问百度](#案例1 循环读取用户定义变量并作为参数访问百度)
- [案例2 结合正则表达式提取器提取地址关键字作为参数访问百度](#案例2 结合正则表达式提取器提取地址关键字作为参数访问百度)
- [4. 同步定时器](#4. 同步定时器)
-
- [案例1 模拟100个用户同时访问百度首页,统计各种高并发情况下运行情况](#案例1 模拟100个用户同时访问百度首页,统计各种高并发情况下运行情况)
- [5. 常数吞吐量定时器](#5. 常数吞吐量定时器)
-
- [案例1 一个用户以20QPS(20次/s)的频率访问百度首页,持续一段时间,统计运行情况](#案例1 一个用户以20QPS(20次/s)的频率访问百度首页,持续一段时间,统计运行情况)
- [6. 固定定时器](#6. 固定定时器)
-
- [案例1 HR系领登录错误3次后,锁定1分钟,1分钟后重新输入正确的用户名密码登录成功](#案例1 HR系领登录错误3次后,锁定1分钟,1分钟后重新输入正确的用户名密码登录成功)
JMeter直连数据库
- 使用场景

- 操作步骤
- 添加MySQL驱动jar包
- 方式一:在测试计划面板点击"浏览。"按钮,将你的JDBc驱动添加进来【一次性的】
- 方式二:
将MySQL驱动jar包放入到lib/ext目录下,重启JMeter【永久的】
- 配置数据库连接信息
- 添加方式:测试计划-->线程组-->(右键添加)配置元件->JDBC Connection Configuration

- 添加方式:测试计划-->线程组-->(右键添加)配置元件->JDBC Connection Configuration
- 添加MySQL驱动jar包
go
Variable Name:mysql数据库连接池名称(JDBC请求时要引用)
Database URL: jdbc:mysql://localhost:3306/tpshop2.0【组成:协议+数据库IP+数据库端口+连接的数据库名称】
JDBC IDRIVER Class:com.mysql.jdbc.Driver(MySQL驱动包位置固定格式 一 下拉框选择)
Username:root(连接数据库用户名,如实填写)
PassWord: 数据库密码
- 添加JDBC请求
- 添加方式:测试计划-->线程组-->取样器-->JDBC Request

- 添加方式:测试计划-->线程组-->取样器-->JDBC Request
案例1 连接tpshop商城数据库获取商品名包含:小米手机5的商品id
准备工作:
- 启动tpshop数据库服务器
- 添加MySQL驱动jar包
操作步骤:
- 添加线程组
- 添加JDBC Connection Configuration
- 添加JDBC request
- 添加查看结果树





案例2 连接tpshop商城数据库获取商品名包含小米手机5的商品id,并作为请求参数请求并和检查响应后的数据是否存在对应商品id链接

- 操作步骤
- 添加线程组
- 添加JDBC Connection Configuration
- 添加JDBC request
- 添加HTTP请求-搜索商品
- 在搜索HTTP请求下,添加响应断言,检查响应结果中的字符是否包含商品URL(URL中含ID)
- 添加查看结果树

- 操作过程





这里大家可以尝试修改查询参数为${goods_#}是什么效果!!!
JMeter逻辑控制器
1. if控制器
作用:If控制器用来控制它下面的测试元素是否运行
位置:测试计划-->线程组-->(右键添加)逻辑控制器 -->如果(1f)控制器

案例一 定义变量name并根据name的变量值实现对应网站的访问
操作步骤:
- 添加线程组
- 用户定义的变量
- 添加If控制器,判断name是否等于baidu
- 添加HTTP请求,用来访问百度
- 添加If控制器,判断name是否等于itcast
- 添加HTTP请求,用来访问传智播客



- 替换成函数调用方法



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

案例1 循环访问百度十次
操作步骤:
- 添加线程组
- 添加循环控制器
- 添加HTTP请求
- 添加查看结果树


- 线程组属性可以控制循环次数,那么循环控制器有什用?
线程组属性控制组内的所有请求次数 循环控制器控制自己分支下的请求 次数 【作用范围不同】



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

案例1 循环读取用户定义变量并作为参数访问百度
1、有一组关键字[hel1o,python,测试],使用用户定义的变量存储
2、要依次取出关键字,并在百度搜索,例如:https://www.baidu.com/s?wd=hello
操作步骤:
- 添加线程组
- 添加用户定义的变量 【测试计划 -> 配置原件 -> 用户定义的变量】
- 添加ForEach控制器
- 添加HTTP请求-百度
- 添加查看结果树




案例2 结合正则表达式提取器提取地址关键字作为参数访问百度
1、访问传智播客首页http://www.itcast.cn,获取首页中的地址信息,并全部保存下来
2、要依次取出地址关键字,并在百度搜索,例如:https://www.baidu.com/swd=地址
- 操作步骤
- 添加线程组
- 添加HTTP请求1-itcast
- 在HTTP请求1下面,添加正则表达式提取器,提取出所有的地处信息【在步骤3的HTTP请求 --> 右键后置处理器 --> 正则表达式提取器 (HTTP下的分支)】
- 添加ForEach控制器
- 添加HTTP请求2-百度
- 【可选】Debug Sampler [线程组 -> 取样器 -> Debug Sampler ]
- 添加查看结果树



4. 同步定时器
线程组中是通过设置线程数来执行同步操作的,但是那也不是真正意义上的同步!!!
- 场景

同步定时器:阻塞线程(累积一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力。
位置:测试计划-->线程组-->HTTP请求-->(右键添加)定时器-->Synchronizing Timer

案例1 模拟100个用户同时访问百度首页,统计各种高并发情况下运行情况
- 先观察无同步定时器用户运行机制

操作步骤:
- 添加线程组,设置线程数=100
- 添加HTTP请求
- 添加同步定时器,并发数可分别设置20/30人 【HTTP请求 --> 定时器 -->Synchronizing Timer】
- 添加查看结果树 【测试计划 --> 监听器 --> 查看结果树】
- 添加监听器-聚合报告【测试计划 --> 监听器 --> 聚合报告】


5. 常数吞吐量定时器
- 什么时候需要使用常数吞吐量定时器?
需要按指定的吞吐量发送请求时,可以使用常数吞吐量定时器- 设置目标吞吐量:每个用户每分钟发送的请求数
- 计算方法:要求QPS*60/线程数

作用:让JMeter按指定的吞吐量执行,以每分钟为单位。
位置:测试计划->线程组-HTTP请求->(右键添加)定时器-位置:测试计划->线程组-HTTP请求->(右键添加)定时器-->Constant Throughput Timer

QPS(Query Per Second)每秒查询数:即控制服务器每秒处理的指定请求的数量
案例1 一个用户以20QPS(20次/s)的频率访问百度首页,持续一段时间,统计运行情况
操作步骤:
- 添加线程组,循环次数设置成永远
- 添加HTTP请求
- 添加常数吞吐定时器
- 添加查看结果树
- 添加监听器-聚合报告
- 1个用户的设置




- 2个用户


若是不设置它就是按照你机器所能够承受的最大的速率来进行发送
6. 固定定时器
- 设置位置

案例1 HR系领登录错误3次后,锁定1分钟,1分钟后重新输入正确的用户名密码登录成功
- 操作步骤
- 设置请求头 【测试计划 --> 配置原件 --> HTTP信息头管理器】
- 添加线程组
- 添加HTTP请求1 - 错误1次
- 添加HTTP请求2 - 错误2次
- 添加HTTP请求3 - 错误3次
- 添加HTTP请求4 - 正确用户民密码
- 添加 固定定时器 【HTTP请求4下】
- 添加查看结果树
- 设置正确的请求头
json 请求对应的是 application/json


