前提(需安装的插件):
- JMeter Manager
- Custom Thread Groups
- Basic Graphs
术语解释
1.线程属性的解读
①线程数:代表模拟的用户数量
注意线程数不宜一开始设置的太大,然后根据线程数设置启动时间100以内1-2s,1000个2-3秒。
设置1个线程数,循环次数设置多次,这种不算是性能测试;需要设置多线程数,模拟多用户向服务器发起请求,才算性能测试。
②Ramp-Up时间:代表的是线程数准备时间(设定的时间内,线程数向服务器发送请求,例如:设置30个线程数,Ramp-Up时间设置为2,那么2秒结束后30个线程数已经向服务器发送请求,并不等于每秒启动15个线程数,有可能前面一秒启动n个线程数,第二秒启动30-n个线程数,总之2秒结束设置的线程数都会发送完请求),那么设置这个时间有什么意义呢?举例说明吧,比如设置了1000个线程数,启动时间设置为1秒,那么服务器在这1秒钟承受的压力会很大,有可能服务器还没时间分配足够的资源导致报错(这种报错原因是因为场景设置的原因导致的);如果设置时间增加一点,那么请求在这段时间内持续发送,服务器有缓冲时间,服务器压力会小一些,就不会出现抖动的现象。
③循环次数:代表的是线程组需要向接口发送多少次重复的请求,如果选择“永远”,那么线程数会一直发送请求,直到强行停止才会停止stop(有可能后面的发送的请求会报错);不过一般“永远”会和调度器一起使用,在调度器中设置持续时间,到了时间循环就会停止(这种情况因为不是强行停止,就不会出现报错的情况)
测试插件安装
插件下载地址:https://jmeter-plugins.org/install/Install/ ,如图
插件下载到本地后放在jmeter对应的安装目录lib/ext 如图
安装后重启jmeter后,打开在选项中可以看到对应的插件如图:
图2:插件安装界面:
在此界面中可以选择需要安装的插件:Custom Thread Groups和Basic Graphs
然后在测试计划-->线程组中可以看到出现的新线程组,如图
测试场景设计和插件使用
基准测试
一般情况下,基准测试也是单用户测试,测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标,为多用户并发测试和综合场景测试等性能分析提供参考依据,这里设计一个Thread Group 线程组线程的测试,如图
这里设计了立即启动2个线程(用户)查看对应的接口结果信息:
负载测试
负载测试:逐步增加用户并发数,有两种场景;阶梯场景和波浪式场景
阶梯场景
测试计划-->添加-->线程-->Stepping Thread Group(说明:Concurrency Thread Group和Stepping Thread Group都可用于阶梯式加压测试,但是由于Stepping Thread Group已经不再被官方推荐使用了,我们对Concurrency Thread Group进行简单介绍),如图
解释:
target concurrency:目标并发数
ramp up time(min):加速时间
ramp-up steps count:加速步骤计数
hold target rate time(min):保持目标费率时间
thread iterations limit:线程迭代次数限制
log threads status into file:将线程状态记录到文件
以上,以图形的方式展示了线程加压的过程。
例如:
50个线程组,加速时间为5分钟,10个加速步骤,保持目标费率3分钟:
10个加速步骤,每步5个线程组;
5分钟/10步=0.5,每步0.5分钟;即每1分钟加载10个线程组,直到达到50个;
达到50个线程组之后,所有这些线程组将继续运行,加压3分钟。
通过添加监听器来跑一例子看看结果图并分析,如图
Transactions per Second:TPS每秒请求事物数
Response Times Over Time:随着时间变化的响应时间
Active Threads Over Time:活跃的线程数
波浪式场景
测试计划-->添加-->线程-->Ultimate Thread Group
解释:
Start Threads Count:最大启动线程数50个
Initial Delay,sec:初始化等待0秒
Start up Time,sec:增加到最大线程数,花费30秒
Hold Load For,sec:保持最大线程数,运行60秒
Shutdown Time:减少到0个线程,花费10秒适用场景:订餐系统,用餐时间点时,系统访问量很大,用餐时间为波浪的波峰
其他几种测试插件场景说明
Arrivals Thread Group & Free-Form Arrivals Thread Group
跟Concurrency Thread Group线程组功能作用大同小异
target rate:目标费率,每秒钟多少个请求数
ramp up time(sec):达到目标费率需要的时间
ramp-up steps count:达到目标费率需要多少步
hold target rate time(sec):保持目标费率时间
thread iterations limit:线程迭代次数限制,如果我们只需运行每个用户一次以模拟用户的实际行为,则设置为1;设置为空,表示每个用户将运行不确定的迭代,直到调度结束。
log threads status into file:将线程状态记录到文件
concurrency limit:最大并发数限制
举例:
目标费率为100,加速时间为10秒钟,5个加速步骤,保持目标费率10秒钟:
5个加速步骤,每步20增加个费率;
10s/5步=2,每步2秒钟;即每2秒钟加载20个费率,直到达到100;
达到100个费率之后,按照这个标准进行加压10秒钟;
以上,前十秒钟按照设置不断增加费率,请求数为(20+40+60+80+100)*2=600个;后十秒钟,按照每秒100个费率计算,请求数为100*10=1000个;共计1600个请求数。
————————————————
测试场景设计说明
参考信息: