【性能测试】Jmeter详细操作-小白使用手册(2)

发布于:2025-03-11 ⋅ 阅读:(13) ⋅ 点赞:(0)

 

本篇文章主要介绍Jmeter中如何使用

JSON断言、同步定时器、事务控制器、CSV数据文件设置、HTTP Cookie管理器

目录

一:JSON断言

1:正确结果展示

2:错误结果展示

3:JSON配置

(1)Additionally   assert   value添加断言值

(2)Match   as  regular  expression正则匹配

4:正则表达式

(1)\d匹配数字 

(2)\s匹配字符

(3)最小匹配多少次

5:使用展示

二:同步定时器

1:场景引入

2:实现并发效果

3:前后对比

4:如果模拟用户组数量大于线程组数量

三:事务控制器

1:创建事务控制器

2:聚合报告的信息讲解

四:CSV数据文件设置

1:场景引入

2:创建我们要的信息

(1)创建一个表格

(2)保存文件

3:参数介绍

4:结果展示

五:HTTP  Cookie管理器

1:浏览器请求访问场景引入

2:Jmeter中不设置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管理器

结果展示