前言:
性能测试目的及意义价值 1、评估系统的能力:主要从测试结果中的负荷和响应时间,并发用户等数据验证系统的各项指标达到用户需求 2、识别体系中的弱点:根据测试过程中的负荷或代码走差方式找出系统的极端或繁琐的代码逻辑,从而找到体系中的瓶颈或薄弱地方 3、系统调优:重复进行性能测试,验证系统活动是否达到预期结果,从而进行改进 4、检测软件中的问题:主要查找一些隐含的问题或者硬件引发的问题。主要方法大量的重复测试验证 5、验证稳定性和可靠性:不但要验证系统的稳定性和可靠性,还要验证人为因素的稳定性。
接下来介绍一下企业常见五大性能测试工具
一:Apache Bench(ab)
是一款用来针对HTTP协议做性能压测的命令行工具,支持在本地环境发起测试请求,
优点:工具较为简单,使用易上手,能够输出相关性能指标。
缺点:只支持HTTP协议,缺少场景关联,只能对单一请示链接压测,无图形界面不好分
是一款命令行工具。
官方下载地址:https://www.apachehaus.com/cgi-bin/download.plx
部分参数解析:
-n:请求次数 -c:并发用户数 -t:并发时间以秒为单位。
注意:如果使用了-t ,那么就没必要使用-n了。一个用时间计算一个是用次数计算
案例实战:
10个用户并发请求一个项目,持续时间10秒钟 命令参数为:
ab -c 10 -t 10 http://192.168.1.7:8101/#/login?redirect=%2Fdashboard
(http://192.168.1.7:8101/#/login是在我本地电脑部署的一款教育系统)
压测之前:我们看看我电脑的cpu利用率 一般在3%左右,然后我们执行压测
压测之后:再看看电脑cpu的利用率 最高达到27%
想要学习更多的软件测试,自动化测试,性能测试 可看软件测试全栈分享
total transferred : 场景中的网络传输量
html transferred : 场景中html内容传输量
requests per second : 每秒请求数
time per request: 平均响应时间
Time per request :服务器平均响应时间
最下面这段表示的是每个请求处理时间的分布情况 重要的看90%的请求处理时间
二:wrk
http基准测试工具,支持高并发低损耗,安装部署简单,不适合多协议及复杂场景,
需要有lua脚本基础,只支持http协议,无图形界面不好分析,学习成本相对较高。
三:locust
python开源框架,支持多协议,复杂场景(需要二次开发),
支持图形化界面,框架总体日益成熟中,需要有python编程基础
四:Loadrunner
可谓性能测试工具鼻祖了,甚至在之前一说性能测试就会想到Loadrunner,图形指标非常
富,有利于分析定位,但缺点就是收费的,而且昂贵,且学习成本也较高。
五:jmeter
优点就是开源,支持多协议复杂场景,目前市场使用最广泛,学习成本相对适中,
缺点就是本身消耗资源较高,好在有非常便利的分布式集群,对于中大型项目也足够了。
后面我们可以通过jmeter进行服务端性能测试,
JMeter分布式集群压测及集群部署、Linux系统实时监控命令(top、free、vmstat、iostat、df、netstat、nmon)Mysql慢查询SQL定位+连接数、锁监控,Redis项目性能测试实战指标监控分析+搭建平台Grafana+prometheus+redis_expoter监控分析、全链路压测介绍+性能测试报告编写