###

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

###

压测的核心有三个,

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

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

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

###

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

###

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

###

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

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

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

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

 

 

二,压测场景梳理

####

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

1是单接口的压测

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

###

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

jmeter全面总结-8-jmeter实战

 

 jmeter全面总结-8-jmeter实战

 

 jmeter全面总结-8-jmeter实战

 

 

 

 

三,编写脚本前的准备

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

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

比如用户数据

商品数据

等等,

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

 jmeter全面总结-8-jmeter实战

 

 

四,编写jmeter压测脚本

录制

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

###

脚本包括几个部分

1,请求

2,查看结果树

3,聚合报告

4,断言

 jmeter全面总结-8-jmeter实战

 

 

jmeter全面总结-8-jmeter实战

 

####

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

jmeter全面总结-8-jmeter实战

 

 

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

jmeter全面总结-8-jmeter实战

 

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

jmeter全面总结-8-jmeter实战

 

csv 文件

jmeter全面总结-8-jmeter实战

 

 随机数

jmeter全面总结-8-jmeter实战

 

 

 

####

cookie信息,header信息

jmeter全面总结-8-jmeter实战

 

五,压测执行策略 

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

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

jmeter全面总结-8-jmeter实战

 

 jmeter全面总结-8-jmeter实战

 

横轴是并发数

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

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

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

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

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

 

压测策略

短时低并发

短时高并发,

长时低并发,

长时高并发,

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

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

 

关于执行机,

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

 

关于网络,

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

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

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

 

 

错误率,

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

 

性能基线数据

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

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

 

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

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

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

 

jmeter全面总结-8-jmeter实战

 

 

jmeter全面总结-8-jmeter实战

 

 

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

jmeter全面总结-8-jmeter实战

 

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

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

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

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

 然后再来一轮,

 

 

我们压测的目标要定好

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

找到系统的瓶颈点,

 

压测执行总结:

jmeter全面总结-8-jmeter实战

 

 

 

###

六,性能监控平台

 

jmeter全面总结-8-jmeter实战

 

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

有两部分

1,jmeter的数据收集

使用的是influxdb,和grafana

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

2,服务器的性能数据

使用的是prometheus,和grafana,

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

七,压测数据分析

 根据数据分析性能瓶颈

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

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

但是不能变动的离谱,

 

 

八,自动化压测

这个后面详细说

jmeter全面总结-8-jmeter实战

 

 jmeter全面总结-8-jmeter实战

 

 jmeter全面总结-8-jmeter实战

 

 jmeter全面总结-8-jmeter实战

 

 jmeter全面总结-8-jmeter实战

 

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

jmeter全面总结-8-jmeter实战

 

 

jmeter全面总结-8-jmeter实战

 

 

九,测试报告生成

jmeter有一个自己的报告,

jmeter全面总结-8-jmeter实战

 

 

补充

1,异步接口测试,

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

比如银行结算的接口,

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

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

 

 

 

 

 

 

####

相关文章:

  • 2022-12-23
  • 2021-10-13
  • 2022-12-23
  • 2021-05-21
  • 2021-10-11
  • 2022-12-23
  • 2021-12-20
  • 2021-06-28
猜你喜欢
  • 2022-12-23
  • 2021-11-13
  • 2021-05-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2021-09-22
相关资源
相似解决方案