小程序H5接口测试整理(JMeter)

前提(需安装的插件):

  1. JMeter Manager
  2. Custom Thread Groups
  3. 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/ ,如图

image-20210716101836283

插件下载到本地后放在jmeter对应的安装目录lib/ext 如图

image-20210716101942766

安装后重启jmeter后,打开在选项中可以看到对应的插件如图:

image-20210716102101609

图2:插件安装界面:

image-20210716102158135

在此界面中可以选择需要安装的插件:Custom Thread Groups和Basic Graphs

然后在测试计划-->线程组中可以看到出现的新线程组,如图

image-20210716102331636

测试场景设计和插件使用

基准测试

一般情况下,基准测试也是单用户测试,测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标,为多用户并发测试和综合场景测试等性能分析提供参考依据,这里设计一个Thread Group 线程组线程的测试,如图

image-20210716104256706

这里设计了立即启动2个线程(用户)查看对应的接口结果信息:

image-20210716104325182

负载测试

负载测试:逐步增加用户并发数,有两种场景;阶梯场景和波浪式场景

阶梯场景

测试计划-->添加-->线程-->Stepping Thread Group(说明:Concurrency Thread Group和Stepping Thread Group都可用于阶梯式加压测试但是由于Stepping Thread Group已经不再被官方推荐使用了,我们对Concurrency Thread Group进行简单介绍),如图

image-20210716105449468

解释:

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:活跃的线程数

image-20210716114949441

波浪式场景

测试计划-->添加-->线程-->Ultimate Thread Group

image-20210716111305540

解释:

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个请求数。
————————————————


测试场景设计说明

参考如图:

image-20210716114352930

参考信息:

  1. pluto果冻
  2. Jmeter的线程组
  3. 场景设计
  4. 线程组使用
原文地址:https://www.cnblogs.com/LOVEYU/p/15019555.html