1 入门
1.1 JMeter简介
- 概念
- 可以对服务器、网络或对象模拟巨大的负载
- 通过创建带有断言的脚本来验证程序是否能够返回期望的结果
-
优点
-
缺点
- 不支持IP欺骗
- 无法前端的JS程序,无法验证UI界面,一般用来测试接口
1.2 JMeter安装
-
下载解压
-
设置中文乱码
去jmeter的properties中设置下
- 启动
bin下的bat文件启动
1.3 项目简介
- restful语法功能
1.4 环境搭建
JDK和Python
2 JMeter使用
2.1 基本使用
- 先保存
- 添加
- 右击添加线程组
- 添加取样器
- 更名
名称可以随便改
- 填写
- 查看结果
在测试结果获取所有中右击添加监听器:查看结果树
- 执行
- 查看
换个形式看
2.2 线程组相关
- 概念
一个进程可以包含多个线程组,一个线程组可以包含多个线程
- 新建线程组
- 新建线程:http请求
- 再加一个:http请求
或者直接再点击线程组后,ctrl+c,ctrl+v
- 反复
再新建一个线程组,里面再加两个http请求
线程组也可以cv,不过也要点击进程那边再进行
成这样
2.3 并发执行和顺序执行
- 概念
- 并发执行:多个线程同时执行
- 顺序执行:多个线程顺序执行
- 新建线程组以及线程
- 新建查看结果树
- 运行
-
不按照顺序,就是并发执行
-
顺序执行
在进程里面:独立运行每个线程组 打勾即可
再去运行就可以了
2.4 两个特殊线程组
- 分类
- setUp线程组
最优先执行的线程组
类比军人
- tearDown线程组
最后执行的线程组
类比难忘今宵
- 操作
-
添加线程和线程组,以及察看结果树
-
执行
- 三个线程组执行
注意结果顺序 1,3,2
2.5 线程组常用属性
- 总览
- 线程数:模拟用户数
- ramp-up时间:程序准备时间
- 循环次数:相当于线程数执行几遍,即每个用户请求几次
如果线程数为2,循环次数为3,那么察看结果树就会返回6个请求
如果循环次数选择永远,好家伙直接一直请求
- 调度器配置
勾选调度器后,才可以进行持续时间和启动延迟的设置,如果持续时间选择2秒,就是只会勾选执行2秒钟
2.6 http请求默认值
- 设置
- 如果多个
出现的情况是:如果复制粘贴多个,那么设置都一个样子,浪费设置
- 简化
右击进程,选择http请求默认值
然后在里面设置重复的属性
然后其他的http就不用写这些了,复用的已经进行封装了
2.7 信息头管理器
- http设置
- 基本设置
- 消息体设置
但是报错,不知道你传入的是什么类型,所以要去设置HTTP信息头管理器
- HTTP信息头管理器添加位置
- 右击进程添加
- 添加json类型
- 重新执行
就能识别json了
2.8 参数化
- 场景
一个一个请求提交太慢了
2.8.1 用户定义变量
- 设置位置
- 设置变量对应内容
- 调用
返回http请求然后路径写${xx}变量即可
- 看下结果
2.8.2 CSV数据文件设置
- 作用
可是实现批量操作形式
- 步骤
- 前置设置
设置线程组以及HTTP请求(POST形式)以及察看结果树以及HTTP信息头管理器(为了识别json数据)
- 批量添加
-
目的:把数据批量添加到数据库
-
数据
- 批量设置
- 在线程组钟将循环次数设置为永远
因为可能不知道数据有几条,如果你知道有几条,那就写几
2.8.3 用户参数实现批量添加
- 总览
与csv方式的对比是不用csv文件也可以实现批量添加,一般工作用csv,这边用用户参数
- 设置
- 添加用户参数
- 用户参数内容
- 线程组设置
设置3个用户试试看,循环次数不弄了
- 传参json变量要进行替换
- 执行
数据加进去了
2.8.4 函数
- 计数函数count
- 效果
请求的结果后面自带个数
- 操作
拷贝走代码${_counter(true,)}
放到Http请求最后面
- 执行
变成每个用户自己请求次数自己计算了,如果选flase就是1-6,不管哪一个用户
- 随机函数Random
- 操作
把前面的禁用掉
一样的地方
设置random,1-3闭区间
- 结果
- 时间函数time
- 操作
当前时间戳
自己设置的格式
2.9 直连数据库
- 添加jar包
- 操作
- 添加JDBC的Request
- 添加数据库连接池
填入数据库的信息
- 回到JDBC的Request写sql
- 执行
按下绿色按钮
然后看下结果
- 结果在百度搜索
- 增加一个返回的变量
- select的结果
发现都加上了val前缀
- 请求百度
- 看下结果
- 看下怎么请求的
- 看下response的结果
2.10 断言
- 概念
让程序代替人工判断响应结果是否符合预期
- 响应断言
- 添加
- 断言设置
常用响应文本和响应代码,设置筛选老张
- 结果
如果包含老张了,你执行的时候就不会报错
如果没有就报错,像这样
还有其他规则,相等就是要一模一样,一般常用相等和包含,否就是取非
甚至也可以测响应码
- 大小断言
- 总览
- 大小对应的就是
- 响应代码
是大小,不是200的字符,所以写3个字符
- 响应消息
对应message的ok
但是来这边只能写2字符表示ok
- 断言持续时间
表示是不是在5ms以内
3 性能测试
3.1 高并发
- 前置准备
- HTTP请求
- 添加同步定时器
- 设置下线程组
模拟一百人
- 同步定时器设置
- 设置用户组数量
如果一百人分两次访问服务器,这边就写五十,类比公交车上的位置够不够
- 设置超时时间
不要写零,写零的话后面剩下的不够数量会出现超等
- 结果
不要用察看结果树了,用聚合报告,看平均值,异常情况,吞吐量
3.1 高频率
- 场景
QPS每秒钟二十次
- 添加请求/聚合报告
- 添加常数吞吐量定时器
- 线程组设置
二十x十五
- 执行