性能测试工具JMeter(二)

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.bat

D:\>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:关于性能测试就到这里结束了!!!

相关推荐
qq_433716951 小时前
接口测试 —— Postman 变量了解一下!
自动化测试·软件测试·jmeter·单元测试·pytest·接口测试·压力测试
小小史先森8 小时前
JMeter之JMX文件解释
jmeter
uncofish8 小时前
Jmeter用户定义变量
jmeter
叮当喵是mao2 天前
接口测试(九)jmeter——关联(JSON提取器)
jmeter·1024程序员节
幸运的星竹2 天前
jmeter自定义函数
jmeter
美团程序员2 天前
如何用Jmeter做性能测试
软件测试·jmeter
赫萝的红苹果2 天前
性能测试——Jmeter实战
jmeter
uncofish2 天前
Jmeter启动默认设置为中文
jmeter
Mr_Chenph2 天前
Jmeter实际应用
jmeter·断言·tps·jmeter插件
叮当喵是mao2 天前
接口测试(八)jmeter——参数化(CSV Data Set Config)
jmeter