Jmeter的安装与使用

2024-01-03 10:29:22

?一、安装

https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.2.ziphttps://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.2.zip开箱即用

启动路径: bin/jmeter.bat

897dd7e67401bf5795f728def8d2a7fe.png

首页

e4a5ece87d19be407ebdf0c9be738175.png

jmeter 汉化

修改 bin/jmeter.properties 配置文件

160fdf346206cc1d900aa3a844e6922e.png

设置放大缩小

# To enable pseudo-HiDPI mode change to true
jmeter.hidpi.mode=true
# HiDPI scale factor
jmeter.hidpi.scale.factor=1.8

消息体数据字体大小

jsyntaxtextarea.font.family=Hack
jsyntaxtextarea.font.size=16

修改工具栏图标大小

jmeter.toolbar.icons.size=32x32

修改左侧树大小

jmeter.tree.icons.size=24x24

二、Jmeter 的使用

发送get请求

1、新增线程组

ea46efca50f3982178b697517dd48aff.png

2、在线程组下新增一个http请求

60c7e2e8962e3ec3bbc9bac73662ea99.png

3、填写请求信息

0d9744f285f5df16fb11352c1dde410d.png

4、新增一个查看结果树并启动

df8a5499567173edea2d5ca689f1d6bb.png

ba18a166c7aa0e20cf8451305378b43d.png

并发请求

在线程组直接配置线程数、就可以并发请求了

60d668a1035e3015ef7140552ad045b5.png

线程组配置-Ramp-Up Period(in senconds)

479a3e644a0ae206bddfa5f5894bdb0c.png

Ramp-Up Period(in senconds):这个值的意思是在多少时间之内执行完全部线程。单位是秒。比如这里写10,线程数改为3,那就是10s之内运行3个线程,平均3秒钟执行一个。

线程组配置-循环次数

51ad24e19d70eecac71e1da6ca271f8b.png

这样子配置就是将这个线程组中的http请求,一个线程请求2次。

勾上永久的话,需要手动点击 stop 停止

8d7e85f43774bb86a2ce76f4a9a586b7.png

线程组配置-调度器

ebf36914e2996a0b0d4832406a43afda.png

配置这样就是6秒内会一直发送,循环次数会自动变成永久

启动延迟的意思就是延迟多少秒开始请求

比如启动延迟配置3 持续配置6

那就是3秒后之后开始请求,请求满6秒后结束

setUp和tearDown线程组

020a8f0387512f0d45721e8ea3666860.png

setUP线程组会在所有线程组执行前执行,tearDown线程组在所有的线程组执行完毕后执行。

setUp线程组:一般可以用来加载程序运行时需要的资源

tearDown线程组:可以用来放一些保存运行结果的代码

POST请求

1、在http请求新增配置原件-HTTP信息头管理器

e5937eaa9a9d4b8e81fd2a7b2355c567.png

配置Content-Type 请求头

271da9a238490e9526fbfac536ba1719.png

2、配置http请求

096ddd6df4d9d16743d4d576302072de.png

Http请求默认参数

像请求服务器的信息这些默认值,我们可以直接在线程组下面新增一个http请求默认值,然后在这个线程组下新增的http请求都会去请求默认值的。

3bf46cfee897def9ee2d24c737500404.png

00bd9360eaad730e1bb30c24571e733a.png

Jmeter参数化

1、CSV数据文件设置配件(使用文件)

这个组件就是让我们的测试请求参数直接从文件中读取,从而实现多次请求的参数都不同。

53cd677747f97068e80790fc5d6f4e62.png

becd4d16550509581d35445e0208e496.png

对应的文件格式:

bdabb39557ebed92c371ccc3aacfe30f.png

对应消息体的写法:

dc32bd98e28eb998b4cd3ac885d04f09.png

2、前置处理器-用户参数(不使用文件)

在http请求下新增一个用户参数

3c14abeae0c60c26c42b50741d1a582e.png

6c863744aa0051e0eebf48efd660b72f.png

这边需要修改一下线程组的参数

bde5bc3faeb91443c1a16c458764effd.png

3、用户自定义变量

用户自定义变量主要用把一些通用的参数提取出来 ,比如我们项目中的接口前缀都是 /api/ ,那我们就可以把这个抽取出来,到时候修改,就可以修改到所有的接口

a5fbccf6ae970612ffe521f229ac87e7.png

fbc16ce880cbe64be1823593bbdc2463.png

然后在请求参数上使用插值表达式

458d130c23d7d44355113b820bb1d6cb.png

4、函数参数化

函数参数化,举个例子。pageNo 参数需要动态从1~6,那我们就可以用到函数参数化

de073543c6b9bd830a657e950369601e.png

560db38ed06659a549084c49e116b436.png

7745fc2126e3843df5bff525e7c3a9ad.png

在HTTP请求里可以直接使用

6a28fa92d18a79b5bae08b0fc65eafa4.png

f25a14bdc434c7fdeca7a59c1ffe0df3.png

其他函数可自行了解,用到了在学习

Jmeter 组件QPS

10qps => 每秒10个请求

我们用个需求来演示qps组件

需求: 一个用户以10qps的频率访问服务器、持续访问5秒。

1、在线程组下新增一个配置器,用来查看报告

733edcad5c5307b6b0e123d2c2a643aa.png

2、我们需要在线程组中配置一下Ramp-Up、循环次数

10qps 的频率访问 5 秒,所以Ramp-Up 要配置5、循环次数要配置50

1e5aff5a17c6ebd876b05ea08a4f67b0.png

3、在HTTP请求下新增一个常量吞吐量定时器、配置一下吞吐量

af1f99755dbb1e1a1773f9c18e7fed78.png

吞吐量的配置是按分钟来的,我们需求是10qps,所以要乘以60

c32337fa25fd013390db79da5068fb22.png

运行之后我们来看一下聚合报告

2a60e303c2aa353c0154d970e7826084.png

聚合报告各项意思:

Label:请求的名称,就是我们在进行测试的http request sampler的名称

样本(Samples):总共发给服务器的请求数量,线程组中有一个用户,循环50次,总共就50个请求

平均值(Average):默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间 ,单位是毫秒

中位数(Median): 50%用户的请求的响应时间,中位数

90%Line:90%的请求的响应时间

95%Line:95%的请求的响应时间

99%Line:99%的请求的响应时间

最小值(Min):最小的响应时间

最大值(Max):最大的响应时间

异常%(Error %):错误率=错误的请求的数量/请求的总数

吞吐量(Throughput): 默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数 (这个就是QPS,我们设置的虽然是10,但是这里显示10.2,这样也没关系的,会有一点上下浮动)

接收(Received KB/sec): 每秒从服务器端接收到的数据量

发送(Send KB/sec):每秒发送的请求数

性能压力测试

模拟多种场景测试程序的响应时间、出错率等

参数化:尽量避免从外部读取参数(测试性能,尽量避免影响性能测试结果的事件),直接通过固定参数+函数形式(__counter())

查看结果树:只保留最外层的查看结果树

报告:最外层添加聚合报告,察看结果更方便

线程组:增删改查分别放到不同线程组,尽量不放到一个线程组内,方便对单个请求做测试

分布式:如并发量比较大,采用分布式测试

新增/删除:新增和删除接口,建议不要采用时间模式(定时器)来压测,直接使用线程数和循环。(新增和删除高并发情况比较少)

需求1:在300秒内启动100个用户,每个用户访问10次服务器,平均响应时间在10ms内,错误率为0.

f02ec39d1467a94add1824218301907b.png

bb7cd5c77de8e4be6333200a4c95e232.png

需求2:100个用户同时访问服务器,平均响应时间为10s内,错误率0.

100个用户同时访问服务器: 线程数为100,然后设置集合点:添加->定时器->同步定时器(Synchronizing Timer),分组数为100

021b36961c41f9eb3af480b4ceff75b5.png

80e6c94910e6c50733ba2bfb8e92e72e.png

821b7d2e8e0387f1be98120f2aa2320d.png

需求3:100个用户,以20QPS的频率访问服务器资源,持续10s,要求平均响应时间为30s内,错误率0.

100个用户:线程数为100;

33c967ea70e029e9906d51cfba1e810e.png

20QPS:表示一个用户20次/秒去访问服务器(添加->定时器->Constant Throughput Timer);

98078f209b6b20e342872ada55ffef02.png

7aecf08d7d3555d3cde15ff1cc92cea4.png

持续10s,那么循环次数应该为20*10=200;

93382ff5354d178c25804e601c1643ae.png

引用

Jmeter接口测试、性能测试详细讲解+实战教程,堪称经典!-CSDN博客

文章来源:https://blog.csdn.net/weixin_65861329/article/details/135337165
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。