1 json断言
接⼝发送请求成功,响应码为200并不能完全代表接⼝请求成功,我们更多需要关注接⼝响应数据是否 符合预期。
1.1 添加JSON断⾔
1.2添加JSON配置
同JSON提取器语法配置:
注意:
1)若不选Additionally assert value,表⽰添加断⾔值,则可⽤来判断字段是否存在
2)选择Additionally assert value,则必须添加Expected Value期望的断⾔值
3)若不选Match as regular expression正则匹配,则Expected Value必须填写完整,少⼀个字符都 会导致断⾔失败
4)若选择Match as regular expression正则匹配,则Expected Value可以仅写上部分关键词即可断 ⾔成功
我们在登录的断言里面进行cose=success,则成功登录;但是我们的登录页凭证是data且由于该参数每一次登录都会有不同的数值,所以我们接下来对该参数进行断言设置:
正则表达式:
正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式
\d:表示数字----匹配任意一个阿拉伯数字(0 到 9)。等价于 [0-9]
\s:表示字符----匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。
1.3 正则表达式
我们使用正则表达式来断言当前的登录状态;
此时我们的登录状态为成功;
\S{20,}
c此时表示我们要断言的参数必须是长度大于20的非空白字符;
2 同步定时器(集合点)
2.1 引入
为了达到并发的效果,需要添加同步定时器 ;
由于我们此次配置了五个线程,这五个线程是陆陆续续的完成了测试计划,谁先准备好谁先执行,如下所示,我们点击右上方的三角按钮之后,开始运行测试‘:
我们此时发现我们的线程并不是并发进行的,所以引入同步定时器;
2.2 添加步骤
我们在集合点设置的参数是并发数量,在运行测试的时候,当模拟用户大于等于该参数的时候,就直接发送请求,如下所示:
当集合点配置的参数(并发数)小于线程数时,最好把循环打开,避免最后一次为准备好的线程数量达不到并发数;
3. 事务控制器
JMeter事务控制器的作⽤主要⽤于测试执⾏嵌套测试元素所花费的总时间。这相当于模拟⽤⼾进⾏⼀ 系列操作的测试。
在进⾏⻚⾯性能测试或API性能测试时,事务控制器是⼀个⾮常重要的⼯具。它可以帮助测试⼈员更准 确地评估系统性能,尤其是在涉及多个接⼝或操作的复杂场景中。例如,在订单提交的过程中,可能 需要调⽤多个接⼝,并且某些接⼝可能依赖于前⼀个接⼝的结果。在这种情况下,使⽤事务控制器可 以将这些接⼝统⼀视为⼀个事务进⾏性能测试,从⽽得到更接近真实场景的性能测试结果。
3.1 添加过程
页面如下:
3.2 关于聚合报告
4.CSV数据⽂件设置
以登陆接⼝为例,当我们执⾏登陆接⼝的性能测试时,⼿动配置了⽤⼾名和密码为固定的username和 password,然⽽实际使⽤中不可能只有⼀个⽤⼾登陆,为了模拟更真实的登录环境,我们需要提供更 多的⽤⼾username和password来实现登录操作
4.1 添加⽅式
线程组⸺配置元件⸺CSV数据⽂件设置
4.2 参数配置
1、将登录页面的参数修改为如下:
2、 创建csv文件,宁保存,如下:
3、 页面配置:
⽂件名:填写csv⽂件的路径。建议使⽤绝对路径。
⽂件编码:UTF-8
变量名称:从csv数据⽂件中读起的数据需要保存到的变量名。有多个变量时⽤逗号分隔
是否忽略⾸⾏:是否从csv数据⽂件第⼀⾏开始读取。
分隔符:要求与csv数据⽂件中多列的分隔符⼀致
遇到⽂件结束符再次循环:若选择为True当数据不够的时候会从头取。若选择False,则需要勾选 下⾯的配置,遇到⽂件结束符停⽌线程,这⾥如果不勾选,请求将会报错。
单线程运行如下:
多线程运行如下:
5. http cookie管理器
5.1 添加方式
5.2 组件说明
6. 关于并发
在工作中进行性能测试,并发是一点一点加上去的,期望最大是10000的时候,是从100,1000,2000,一点一点加上去的;
6.1 jmeter插件
在真实企业压测场景中,我们通常为⼀点⼀点的逐步增加线程数,因此需要安装新的插件来⽀持线程 数的配置。 通过插件管理⼯具下载其他插件,url:Install :: JMeter-Plugins.org
将该文件放在jmeter/lib/ext下面:
6.2 在插件中下载其他监听插件
如此插件如下:
6.3 Stepping Thread Group 梯度压测线程组
This group will start:启动多少个线程,同线程组中的线程数
First, wait for:等待多少秒才开始压测,⼀般默认为0
Then start:⼀开始有多少个线程数,⼀般默认为0
Next,add:下⼀次增加多少个线程数
threads every:当前运⾏多⻓时间后再次启动线程,即每⼀次线程启动完成之后的的持续时间; using ramp-up:启动线程的时间;若设置为5秒,表⽰每次启动线程都持续5秒
thenhold loadfor:线程全部启动完之后持续运⾏多⻓时间
finally,stop/threadsevery:多⻓时间释放多少个线程;若设置为5个和1秒,表⽰持续负载结束之后 每1秒钟释放5个线程
参数解读:
开始的配置:
结束的配置:
一般来说查看结果树是自己调试时使用的;
响应时间和线程工作数量:
使用监听器观察:
性能测试完成之后,要出性能测试报告:
7.测试报告
JMeter测试报告是⼀个全⾯⽽详细的⽂档,它提供了关于测试执⾏结果的详细信息,帮助⽤⼾全⾯评 估系统的性能并进⾏性能优化。
⽣成性能测试报告的命令:
Jmeter -n -t 脚本⽂件 -l ⽇志⽂件 -e -o ⽬录
-n : ⽆图形化运⾏
-t : 被运⾏的脚本
-l : 将运⾏信息写⼊⽇志⽂件,后缀为jtl的⽇志⽂件
-e : ⽣成测试报告
-o : 指定报告输出⽬录
C:\Users\缘客扫>where jmeter
E:\anzhuangchengxu\apache-jmeter-5.5\apache-jmeter-5.5\bin\jmeter
E:\anzhuangchengxu\apache-jmeter-5.5\apache-jmeter-5.5\bin\jmeter.batD:\>e:
E:cd E:\java_xiangmu\mianjie_xingneng
找到我们的jmx测试文件,输入jmeter指令:
E:\java_xiangmu\mianjie_xingneng>jmeter -n -t 第一个性能测试.jmx -l first.jtl -e -o ./first/.
如下所示:
文件内容如下:
html文件就是生成的性能测试报告:
7.1 响应时间
如果响应时间超过了要求,代表系统到了瓶颈;
注意事项:分析在多少线程的情况下发生了超标;
响应时间变化的原因:
系统不稳定,有时快有时慢;
7.2 错误率
高并发场景下,系统是否能够正常处理业务;
要求99.99%,一般要求可靠性达到四个九;
7.3 吞吐量
吞吐量越大,性能越好;吞吐量相对稳定或者变低,可能系统到达了性能瓶颈;
ps:关于性能测试就到这里结束了!!!