jmeter全面总结8jmeter实战

###

再次系统的整理一下深入一下性能测试

###

压测的核心有三个,

1,压测环境,环境不对,一切白费,系统的架构,使用的服务器配置,使用的软件的版本,比如Nginx,比如mysql,比如redis,等等, 

2,压测场景数据准备和场景梳理其中,场景梳理是非常重要,而梳理流程要对系统的架构,系统接口的请求流要非常熟悉,这是一个难点,需要和开发详细沟通,

3,对性能数据的监控分析,分析是非常复杂的,性能的瓶颈的原因多种多样,

###

而脚本编写,和压测执行,反而是比较简单的事情,

###

压测是一个很专业的事情,涉及到的知识面非常的广,而压测不是测试部门的单独的事情,涉及到开发,测试,运维,都要全员参与,

###

一,压测环境搭建

1,要和现网的环境保持一致,这是测试现网的容量

2,还需要测试单机的并发情况,

3,然后看增加机器的情况,看看性能的变化,

4,这个过程,可能需要开发协助

二,压测场景梳理

####

压测场景,至少又要分成两部分

1是单接口的压测

2是多接口的场景压测,要梳理流程,

###

比如是一个订餐的网站,下面怎么业务梳理,

 

 

三,编写脚本前的准备

1,要知道压测的接口地址,

2,要添加压测环境的业务数据

比如用户数据

商品数据

等等,

数据是一个很重要的内容,数据量要足够,数据要有多样性,否则不具有真实性

 

四,编写jmeter压测脚本

录制

手动,熟练了之后,手动创建就行了,

###

脚本包括几个部分

1,请求

2,查看结果树

3,聚合报告

4,断言

 

####

成功和失败的场景,都有覆盖,if判断一个随机数来控制,

多次选择,使用循环来控制,产生一个随机数,1-4,可能是循环请求选择饭店的接口,1次,或者4次等,

 上面的if和for循环可以通过添加逻辑控制器来实现

csv 文件

 随机数

####

cookie信息,header信息

五,压测执行策略 

 压测执行,也不是乱来的,

需要执行一个压测执行策略,

 

横轴是并发数

纵轴有三个,系统资源利用,tps每秒响应,响应时间,

第一阶段light load, 并发增加,响应时间会变慢,系统的tps也增加,系统的性能会逐渐打满,

第二阶段heavy load ,系统的性能增加不怎么变化了,系统性能处于比较满的状态

第三阶段buckle zone,随着并发增加,系统性能减低,甚至不影响了,是一个不能接收的阶段,

当然时间上测试过程的曲线不会这么工整,因为在中间的heavy 阶段可能就出现error了,而tps还能往上增加,但是已经没有多大的意义了,

压测策略

短时低并发

短时高并发,

长时低并发,

长时高并发,

关键是并发和运行时间的设置,这两个是策略的关键,

一般会使用逐渐加压的方式,然后观察tps,如果并发增加tps不变了,就是一个瓶颈了,

关于执行机,

最好是控制机和执行机分来,因为jmeter本身也是会占用资源的,

关于网络,

如果要减少网络的干扰,那就压测执行机和被压测系统在同一个网络,减少网络的干扰,

如果你想要真实的网络,那就是使用普通网络,都行,

但是一般就是在同一网络压测,减少网络干扰,毕竟我们压测的系统,还是要尽量减少网络的问题,

错误率,

不能大于0.5%,如果是1%,2%,就不行了,因为100个里面有1,2两个错误,这是不能接收的,

性能基线数据

新的系统,是根据需求,比如你想要达到多少并发,

已经上线的系统,是根据现网跑出来的数据,最为基线数据

性能的干扰因素越少,结果就越稳定

比如网络,压测机和被压系统在同一个网络

比如压测机,执行机和负载机分来,

测试5个并发,然后统计数据,

 在20个并发上面之后,流量的变化已经不大了,响应时间变长了,

所以最优的流量是在10-20之间,

所以合理的最大并发就在10-20

所以下一轮的并发会更加的精确,比如10 12 15 18 20 

 然后再来一轮,

我们压测的目标要定好

就是寻找系统的最大并发数是多少,

找到系统的瓶颈点,

压测执行总结:

###

六,性能监控平台

 这个性能监控平台,主要是为了 压测数据收集

有两部分

1,jmeter的数据收集

使用的是influxdb,和grafana

前面的文章已经讲过了,都是docker方式

2,服务器的性能数据

使用的是prometheus,和grafana,

 前面的文章已经讲过了,都是docker方式

七,压测数据分析

 根据数据分析性能瓶颈

另外压测的数据结果是会变动的,就好像人的血糖,你不同的时间去测量,也会变化的,因为网络原因等,还是有关系的,

针对变动的问题,可以多次测量取平均值的方式也是可以的,当然时间周期就会比较久一点,

但是不能变动的离谱,

八,自动化压测

这个后面详细说

 

 

 

 

 怎么改变脚本文件的并发数,就是使用三剑客来改文件的并发数,

九,测试报告生成

jmeter有一个自己的报告,

补充

1,异步接口测试,

异步接口一般都会很快,因为只是一个触发,服务器后面还在后面算结果

比如银行结算的接口,

这个性能可以看后台单位时间能处理的数据,比如两小时处理了两千万的数据,这就是他的性能情况,

那么需要多少台机器,才能全部跑完,是可以算出来的, 

####

原文地址:https://www.cnblogs.com/andy0816/p/15634685.html