本篇文章主要介绍Jmeter中如何使用
JSON断言、同步定时器、事务控制器、CSV数据文件设置、HTTP Cookie管理器
目录
[(1)Additionally assert value添加断言值](#(1)Additionally assert value添加断言值)
[(2)Match as regular expression正则匹配](#(2)Match as regular expression正则匹配)
[五:HTTP Cookie管理器](#五:HTTP Cookie管理器)
[3:设置HTTP Cookie管理器](#3:设置HTTP Cookie管理器)
一:JSON断言
1:正确结果展示
2:错误结果展示
使用错误的名称
登录返回的数据中没有code1这个数据,所以没有找到这个result,换成data
3:JSON配置
(1)Additionally assert value添加断言值
①若不选Additionally assert value,表⽰添加断⾔值,则可⽤来判断字段是否存在
②选择Additionally assert value,则必须添加Expected Value期望的断⾔值(这里区分大小写)
(2)Match as regular expression正则匹配
③若不选Match as regular expression正则匹配,则Expected Value必须填写完整,少⼀个字符都会导致断⾔失败
④若选择Match as regular expression正则匹配,则Expected Value可以仅写上部分关键词即可断⾔成功
去匹配我们的token字符串
4:正则表达式
(1)\d匹配数字
(2)\s匹配字符
\s匹配所有空白符,包括换行;\S非空白符,不包括换行;
(3)最小匹配多少次
5:使用展示
二:同步定时器
1:场景引入
配置了五个线程,我们想要让这个五个线程达成同步并发的效果,但是看我们当前的执行情况,这些线程是在1s内陆陆续续的完成,没有达成我们预想中并发执行的效果。(这里就是谁先准备好,谁就先发起请求)
2:实现并发效果
想象一个场景:我们行人在过马路前需要等待红灯跳转到绿灯,行人在这个等待的过程中越聚越多,绿灯一亮,行人则蜂拥而过。
同步定时器可以理解为集合点,当线程数量达到指定值后,再⼀起释放,可以瞬间产⽣很⼤的
压⼒。这样,可以更好地模拟真实的⽤⼾并发访问场景,提⾼测试的准确性和可靠性。
配置的数量与我们前面设置好的线程组的数量保持一致
3:前后对比
所有线程都准备好了,一起发送请求,达到并发的效果
4:如果模拟用户组数量大于线程组数量
这里就会卡主,因为没有它会一直等待到50个线程准备完毕,才发送请求。所以这里设置的数量不可以大,那可以小吗?
答案也是不可以的,假设我们当前设置的模拟用户组数量为3,那么我们就是分3个一组请求一次,但是我们设置的是5个线程呀,还有2个线程凑不出来3,所以就迟迟不能发送请求。也会卡主
那又有一个问题了: 若小于配置的线程数,线程组中的线程数与当前配置的数据必须成整数倍。这个结论是否正确呢?
也是不可以的,假设我们的线程组数量为(6),我们第一轮准备好的线程数(5)>=配置的数量3,就直接发送请求了(3),此时还有一个就落单了,落单的那个线程就会一直等
所以当配置的数量小于线程数时,最好把循环打开,避免最后一次为准备好的线程数量达不到并发数
三:事务控制器
我们现在有5个接口
打开聚合报告,就会显示五个接口的相关测试信息
1:创建事务控制器
思考:我们现在如果想要把登录接口和列表接口合并成一个事物,应该怎么做呢?
执行合并操作
再打开聚合报告,就会发现,多了一行我们的登录事务
2:聚合报告的信息讲解
登录和用户信息接口平均响应时间分别为34ms和22ms,相加登录事务为56ms
列表页返回的data数据比较多,所以响应的时间比较高是正常的
一般看90%的请求对应的响应时间
(1)异常就是错误率
(2)吞吐量------有两种划分方式
①请求的数量划分
TPS------每秒处理的事务数量(常用)发送很多请求,每秒处理的事务数越高,tps越高,性能越高
QPS------每秒的查询率
②网络数据包划分
四:CSV数据文件设置
1:场景引入
以登陆接⼝为例,当我们执⾏登陆接⼝的性能测试时,⼿动配置了⽤⼾名和密码为固定的username和password,然⽽实际使⽤中不可能只有⼀个⽤⼾登陆,为了模拟更真实的登录环境,我们需要提供更多的⽤⼾username和password来实现登录操作
我们现在不把用户名和密码写死,
2:创建我们要的信息
(1)创建一个表格
word文档
(注:如果我们数据库当中的用户数量不多的话,可以自己添加一些数据进去,这里在查看数据库是可以格式化查看,比如select * from user\G)无分号,格式化查看

(2)保存文件

3:参数介绍
⽂件名:填写csv⽂件的路径。建议使⽤绝对路径。
• ⽂件编码:UTF-8
• 变量名称:从csv数据⽂件中读起的数据需要保存到的变量名。有多个变量时⽤逗号分隔
• 是否忽略⾸⾏:是否从csv数据⽂件第⼀⾏开始读取。
• 分隔符:要求与csv数据⽂件中多列的分隔符⼀致
• 遇到⽂件结束符再次循环:若选择为True当数据不够的时候会从头取。若选择False,则需要勾选
下⾯的配置,遇到⽂件结束符停⽌线程,这⾥如果不勾选,请求将会报错。

4:结果展示
配置多个线程数,我们才能看到多个不同的用户,发起请求

五:HTTP Cookie管理器
1:浏览器请求访问场景引入
我们访问第一个login登录接口,会设置这个Cookie信息,


进行302临时重定向之后,第二次访问最下方的login,也会带上一次的Cookie信息

2:Jmeter中不设置Cookie管理器演示
这里没有加入Cookie管理器所以第二次登陆请求头当中就没有携带上我们当前线程的Cookie信息,所以浏览器就找不到对应的Session会话

3:设置HTTP Cookie管理器

结果展示
