JMeter使用

1.简介

1.1 打开方式

①点击bat,打开

②添加JMeter系统环境变量,输⼊命令jmeter即可启动JMeter⼯具

1.2 配置

简体中文

放大字体

1.3 使用

①添加线程组

②创建http请求

2. 组件

2.1 线程组

控制JMeter将⽤于执⾏测试的线程数,也可以把⼀个线程理解为⼀个测试⽤⼾。

编辑线程数

多个请求,总会有失败,要采取什么措施?


进行添加,发现内容和postman一样,为什么出现错误,查看,发现Content-Type类型不一样:

修改:

2.2 HTTP取样器

2.3 查看结果树

上述已回答

一般只在调试阶段会用到

2.4 HTTP Cookie管理器

没有用:

用了:

2.5 HTTP请求默认值

在同一个线程组,协议,ip,端口号不会改变,可以添加管理:

此时,就不要配置这些:

当取样器中存在未配置的选项,会在默认值中取:

配置了就不会取

2.6 ⽤⼾定义的变量

这样就可以一次修改多个变量

2.7 CSV数据⽂件设置

以登陆接⼝为例,当我们执⾏登陆接⼝的性能测试时,⼿动配置了⽤⼾名和密码为固定的username和 password,然⽽实际使⽤中不可能只有⼀个⽤⼾登陆,为了模拟更真实的登录环境,我们需要提供更 多的⽤⼾username和password来实现登录操作

修改登录接口:

线程改为2,去循环读取两个数据

运行:

2.8 JSON提取器

当查看列表页时,请求头中需要cookie

配置请求头,成功

此时请求成功

但是,有的操作,比如登录,不需要cookie,怎么做?

修改作用域

将这个配置放在列表页,只作用在列表页

那么如果多个请求都需要呢?下面解释

接⼝响应成功,通过提取返回值对应字段,可⽤于其他接⼝的参数配置

后续,就不固定值了,直接从凭证中拿:

必须使用固定的格式

JSON操作符参考:

|-------------------------------|--------------------|
| Operator | Description |
| $ | 表⽰根元素 |
| @ | 当前元素 |
| * | 通配符。所有节点 |
| .. | 选择所有符合条件的节点 |
| .<name> | ⼦元素 |
| ['<name>' (, '<name>')] | 括号表⽰⼦元素或⼦元素列表 |
| [<name> (,<name> )] | 数组索引或索引列表 |
| [start:end] | 数组切⽚操作符 |
| [?(<expression>)] | 过滤器表达式。表达式必须评估为布尔值 |

参考⽂档:https://github.com/json-path/JsonPath

此处可以输入表达式,点击test判断对不对

这里要注意:

发生覆盖怎么办呢?

解决办法:不再添加信息头管理器到子集,拿出去

如下结构:

下面看一种情况,解决id不存在的问题

列表页会返回有效的id,提取出来作为参数值

放到详情页:

那如果有多个详情页接口,每个接口都用到写死的id值,而这个值后续可能需要修改,最好的方式用批量修改.在用户定义的变量查看

2.9 JSON断⾔

接⼝发送请求成功,响应码为200并不能完全代表接⼝请求成功,我们更多需要关注接⼝响应数据是否符合预期。

注意:

1)若不选Additionally assert value,表⽰添加断⾔值,则可⽤来判断字段是否存在

2)选择Additionally assert value,则必须添加Expected Value期望的断⾔值

3)若不选Match as regular expression正则匹配,则Expected Value必须填写完整,少⼀个字符都 会导致断⾔失败

4)若选择Match as regular expression正则匹配,则Expected Value可以仅写上部分关键词即可断 ⾔成功

2.10 同步定时器(集合点)

JMeter同步定时器的作⽤主要在于模拟多⽤⼾并发访问的场景,确保多个线程能够同时执⾏某个操 作,以达到真正的并发效果。

通过三角符可以查看线程状态

发现:

这几个线程陆陆续续的完成了测试

为了达到并发的效果,需要添加同步定时器:

这里的模拟数量不能大于线程组里配置的线程数,超过就会一直等待

当<=时,线程组的线程数与当前模拟数量必须成整数倍,最好把循环打开,避免最好一次为准备好的线程达不到并发数,会一直等

2.11 事务控制器

JMeter事务控制器的作⽤主要⽤于测试执⾏嵌套测试元素所花费的总时间。这相当于模拟⽤⼾进⾏⼀系列操作的测试。

看聚合报告:

2.12 安装插件

在工作中执行性能测试,是一点一点加上去的

因此需要安装新的插件来⽀持线程数的配置。

通过插件管理⼯具下载其他插件:Install :: JMeter-Plugins.org

此时重新打开:

下载监听器插件和线程组插件:

此时就多了这些东西:

每隔30s启动10个线程,这些线程要在5s内完成准备

两次就可以把这20个线程都准备好

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个线程


测试:

2.13 常⻅监听器

如上

3. 测试报告

⽣成性能测试报告的命令:

Jmeter -n -t 脚本⽂件 -l ⽇志⽂件 -e -o ⽬录

-n : ⽆图形化运⾏

-t : 被运⾏的脚本

-l : 将运⾏信息写⼊⽇志⽂件,后缀为jtl的⽇志⽂件

-e : ⽣成测试报告

-o : 指定报告输出⽬录

注意:⽇志⽂件和⽬录可以不存在,若为已经存在的情况下需要保证内容为空,否则会出现错误!

4. 性能分析

三大指标:

1.响应时间

如果响应时间超过了要求,代表系统到了瓶颈

原因:

系统不稳定,有时快有时慢

随着并发压力变大而慢慢变慢,响应时间变高

  1. 错误率(可靠性)

高并发场景下,系统是否能够正常处理业务

要求:4个9,5个9

原因:

接口请求错误

服务器无法继续处理,达到了瓶颈

后端系统限流(配置了不能超过多少并发),熔断,降级

3.吞吐量

波动很大:系统性能不稳定

慢慢变高,在趋于稳定:和并发量强相关.如果并发量小于吞吐量,慢慢增大并发量,吞吐量也会随着增加

慢慢变低,并发量页减少了:要么说明性能测试要结束了,并发减少,也可能是系统变得卡顿,从而导致响应时间变慢,导致单个线程发起的并发量变少

相关推荐
北京_宏哥5 小时前
🔥Jmeter(十一) - 从入门到精通 - JMeter逻辑控制器 - 下篇(详解教程)
前端·jmeter·面试
Trival_dream17 小时前
再次重拾jmeter之踩坑
jmeter
suimeng621 小时前
JMeter重要的是什么
jmeter
码媛1 天前
A006-基于Selenium和JMeter的吉屋web端的自动化测试设计与实现
selenium·测试工具·jmeter
北京_宏哥1 天前
🔥Jmeter(十) - 从入门到精通 - JMeter逻辑控制器 - 中篇(详解教程)
前端·jmeter·面试
北京_宏哥1 天前
🔥Jmeter(九) - 从入门到精通 - JMeter逻辑控制器 - 上篇(详解教程)
前端·jmeter·性能优化
suimeng62 天前
JMeter的接口测试步骤
jmeter·接口测试
zrhsmile4 天前
JMeter从入门到荒废-常见问题汇总
jmeter
wgslucky5 天前
Jmeter分布式测试启动
分布式·jmeter