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(有可能后面的发送的请求会报错);不过一般“永远”会和调度器一起使用,在调度器中设置持续时间,到了时间循环就会停止(这种情况因为不是强行停止,就不会出现报错的情况)
强行停止会报错
因为强行停止,导致后面的接口请求失败
强行停止,导致后面的请求报错,异常列中就会有异常信息
④调度器:当循环次数设置“永远”时,强行停止会后面的接口请求失败,导致收集的数据有问题,所以一般不推荐强行停止,这时候就需要调度器了,勾选调度器,设置持续时间,到了时间后线程会自动停止。
线程组会持续10s的时间,向服务器不断发送请求,时间结束后自动停止,且不会报错。( jmeter执行的时期 取样器的执行顺序是从上往下的顺序执行 用单用户调接口 从查看结果树中 可以看到 在做性能测试时 用的是多用户并发 同一时间点 不同虚拟用户可能做的事情不一样 所以此时 查看结果树中显示的 不会按照取样器的从上往先显示 但是每个并发用户自身对于取样器的执行顺序还是从上往下的)
异常列中也没有统计到异常信息的百分比
2.秒杀场景设计
3.负载测试场景设计(逐步增加压力,看服务器的最大平衡值(逐步增加并发用户数))
因为负载测试,需要逐步增加压力,也就是逐步增加线程数,通过手工增加的方式很不方便,这个时候需要安装这个插件:jmeter-plugins-manager-1.3.jar,让线程数自动增加。
将其拷贝到自己安装的jmeter的lib\ext路径下即可
然后重启jmeter,就会加载这个jar包,点击选项--就可以看到plugins manager
插件安装,在Available Plugins下安装jpgc - Standard Set这个插件
勾选插件后,点击改变和重启jmeter按钮
安装成功后,重启jmeter后,就会看到增加了很多线程组
负载测试阶梯式场景:使用阶梯式线程组
阶梯式线程组的参数解读
添加监听器(之前的插件安装了以后,才会有这些监听器)
配置阶梯线程组参数,然后用之前的登录接口为例
然后执行脚本查看结果
接下来要做的就是对数据的分析
波浪形场景设计(终极场景)
添加线程组
点击add row,添加一行数据到线程工作计划中
线程工作计划中的参数解读
设置参数(模拟有规律的波浪形的请求,例如外卖平台订餐场景,有时间规律的请求;某段时间向服务器发起请求,然后请求数下降,然后再向服务器发送请求,再下降,向服务器发起波浪形的请求冲击,主要是验证服务器稳定性)
设置的场景线程组不重叠(即第一组线程组运行完成后,第二组线程组才启动,那么第二组的初始时间要大于第一组所消耗的总时间)
设置的线程组重叠(即第一组线程组还没运行完,第二组线程组就启动,在某段时间内,两个线程组会同时执行)
同样以之前登录接口为例,来进行波浪形场景的负载测试
执行线程后查看结果
每个时间点对应的相应时间的值
TPS图