启动路径: bin/jmeter.bat
首页
修改 bin/jmeter.properties 配置文件
# 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
在线程组直接配置线程数、就可以并发请求了
Ramp-Up Period(in senconds):这个值的意思是在多少时间之内执行完全部线程。单位是秒。比如这里写10,线程数改为3,那就是10s之内运行3个线程,平均3秒钟执行一个。
这样子配置就是将这个线程组中的http请求,一个线程请求2次。
勾上永久的话,需要手动点击 stop 停止
配置这样就是6秒内会一直发送,循环次数会自动变成永久
启动延迟的意思就是延迟多少秒开始请求
比如启动延迟配置3 持续配置6
那就是3秒后之后开始请求,请求满6秒后结束
setUP线程组会在所有线程组执行前执行,tearDown线程组在所有的线程组执行完毕后执行。
setUp线程组:一般可以用来加载程序运行时需要的资源
tearDown线程组:可以用来放一些保存运行结果的代码
1、在http请求新增配置原件-HTTP信息头管理器
配置Content-Type 请求头
2、配置http请求
像请求服务器的信息这些默认值,我们可以直接在线程组下面新增一个http请求默认值,然后在这个线程组下新增的http请求都会去请求默认值的。
这个组件就是让我们的测试请求参数直接从文件中读取,从而实现多次请求的参数都不同。
对应的文件格式:
对应消息体的写法:
在http请求下新增一个用户参数
这边需要修改一下线程组的参数
用户自定义变量主要用把一些通用的参数提取出来 ,比如我们项目中的接口前缀都是 /api/ ,那我们就可以把这个抽取出来,到时候修改,就可以修改到所有的接口
然后在请求参数上使用插值表达式
函数参数化,举个例子。pageNo 参数需要动态从1~6,那我们就可以用到函数参数化
在HTTP请求里可以直接使用
其他函数可自行了解,用到了在学习
10qps => 每秒10个请求
我们用个需求来演示qps组件
需求: 一个用户以10qps的频率访问服务器、持续访问5秒。
1、在线程组下新增一个配置器,用来查看报告
2、我们需要在线程组中配置一下Ramp-Up、循环次数
10qps 的频率访问 5 秒,所以Ramp-Up 要配置5、循环次数要配置50
3、在HTTP请求下新增一个常量吞吐量定时器、配置一下吞吐量
吞吐量的配置是按分钟来的,我们需求是10qps,所以要乘以60
运行之后我们来看一下聚合报告
聚合报告各项意思:
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())
查看结果树:只保留最外层的查看结果树
报告:最外层添加聚合报告,察看结果更方便
线程组:增删改查分别放到不同线程组,尽量不放到一个线程组内,方便对单个请求做测试
分布式:如并发量比较大,采用分布式测试
新增/删除:新增和删除接口,建议不要采用时间模式(定时器)来压测,直接使用线程数和循环。(新增和删除高并发情况比较少)
100个用户同时访问服务器: 线程数为100,然后设置集合点:添加->定时器->同步定时器(Synchronizing Timer),分组数为100
100个用户:线程数为100;
20QPS:表示一个用户20次/秒去访问服务器(添加->定时器->Constant Throughput Timer);
持续10s,那么循环次数应该为20*10=200;