Jmeter的安装与使用

 一、安装

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

Jmeter的安装与使用_第1张图片

首页

Jmeter的安装与使用_第2张图片

jmeter 汉化

修改 bin/jmeter.properties 配置文件

Jmeter的安装与使用_第3张图片

设置放大缩小

# 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、新增线程组

Jmeter的安装与使用_第4张图片

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

Jmeter的安装与使用_第5张图片

3、填写请求信息

Jmeter的安装与使用_第6张图片

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

Jmeter的安装与使用_第7张图片

Jmeter的安装与使用_第8张图片

并发请求

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

Jmeter的安装与使用_第9张图片

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

Jmeter的安装与使用_第10张图片

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

线程组配置-循环次数

Jmeter的安装与使用_第11张图片

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

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

Jmeter的安装与使用_第12张图片

线程组配置-调度器

Jmeter的安装与使用_第13张图片

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

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

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

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

setUp和tearDown线程组

Jmeter的安装与使用_第14张图片

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

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

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

POST请求

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

Jmeter的安装与使用_第15张图片

配置Content-Type 请求头

Jmeter的安装与使用_第16张图片

2、配置http请求

Jmeter的安装与使用_第17张图片

Http请求默认参数

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

Jmeter的安装与使用_第18张图片

Jmeter的安装与使用_第19张图片

Jmeter参数化

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

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

Jmeter的安装与使用_第20张图片

Jmeter的安装与使用_第21张图片

对应的文件格式:

Jmeter的安装与使用_第22张图片

对应消息体的写法:

Jmeter的安装与使用_第23张图片

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

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

Jmeter的安装与使用_第24张图片

Jmeter的安装与使用_第25张图片

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

Jmeter的安装与使用_第26张图片

3、用户自定义变量

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

Jmeter的安装与使用_第27张图片

Jmeter的安装与使用_第28张图片

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

Jmeter的安装与使用_第29张图片

4、函数参数化

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

Jmeter的安装与使用_第30张图片

Jmeter的安装与使用_第31张图片

Jmeter的安装与使用_第32张图片

在HTTP请求里可以直接使用

Jmeter的安装与使用_第33张图片

Jmeter的安装与使用_第34张图片

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

Jmeter 组件QPS

10qps => 每秒10个请求

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

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

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

Jmeter的安装与使用_第35张图片

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

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

Jmeter的安装与使用_第36张图片

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

Jmeter的安装与使用_第37张图片

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

Jmeter的安装与使用_第38张图片

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

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.

Jmeter的安装与使用_第39张图片

bb7cd5c77de8e4be6333200a4c95e232.png

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

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

Jmeter的安装与使用_第40张图片

Jmeter的安装与使用_第41张图片

821b7d2e8e0387f1be98120f2aa2320d.png

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

100个用户:线程数为100;

Jmeter的安装与使用_第42张图片

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

Jmeter的安装与使用_第43张图片

Jmeter的安装与使用_第44张图片

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

Jmeter的安装与使用_第45张图片

引用

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

你可能感兴趣的:(jmeter)