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

相关推荐
互联网杂货铺1 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
ggggyyyyy09281 天前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
明月与玄武1 天前
Jmeter 分布式压测部署--常见坑以及解决方案
分布式·jmeter
字节程序员1 天前
使用JUnit进行集成测试
jmeter·junit·单元测试·集成测试·压力测试
hakesashou1 天前
jmeter怎么调用python
开发语言·python·jmeter
我非夏日1 天前
JMeter配置原件-计数器
jmeter
爱学测试的李木子1 天前
性能】JDK和Jmeter的安装与配置
java·开发语言·软件测试·测试工具·jmeter
rkmhr_sef1 天前
二、Jmeter Web压测
前端·jmeter
字节程序员1 天前
Jmeter分布式测试的注意事项和常见问题
软件测试·分布式·jmeter
小张帅三代2 天前
jmeter 接口性能测试 学习笔记
笔记·学习·jmeter