jmeter-6-从入门到放弃【性能基础篇】
通常我们使用【阶梯式】压测,支持远程启动分布式压测。阶梯式也就是模拟一段时间内不断增长,直到指定的数量暂停增长,在一段时间进行大量请求测试。
如果需要并发测试,那么将需要合理设计场景,比如秒杀,可以使用同步器,一键启动所有远程调用多个机器把1000个线程用户启动完成,然后一起发送请求。
性能测试是很需要对整个链路数据的流向经过哪些(调用了谁、经过哪些中间件)
个人认为性能测试的价值:体现在应用服务机器成本中
Jmeter安装使用基础可以参考:https://www.cnblogs.com/gsxl/p/14993497.html
一、性能测试使用到的分析
1、压测多大的量?
- 可以通过产品经理询问每天xx订单在多少量?再结合28原则
- 监控信息每天访问此接口数量
- 数据库信息得知用户量是多少,再结合28原则,是否摸高测试
2、压测是做单个接口还是多个?
- 根据业务场景进行,比如电商行业,选购+下单+支付,便是3个接口(得看涉及的接口范围,简称:链路式)。
- 如果有明确压测只需【查询业绩】 接口,那就单个压测。比如签到、秒杀。
3、性能测试28原则
指80%的业务量在20%的时间(s)里完成。
- 例:如某系统,每天单量10w,90%下单主要集中在9-12点。
则:业务量=10w个,时间=3x60x60=10800s
TPS=(90%*10w*80%) / (20%*10800)=0.9*10w*0.8/(0.2*10800)=72000/2160=33.33个/s (TPS:系统每秒处理事务的个数)
4、过程监控,分析与调优
- cpu
- 内存
- 磁盘io
- 网络使用情况
- 中间件:数据库、mq、redis
- 代码性能
- jmeter 压测返回结果、99线平均响应时间、TPS每秒应用处理事务的数量
5、性能测试执行具体步骤
- 方案确定
- 脚本编写 (需调试跑通)
- 测试数据准备 (个人认为压测工作量主要之一在这里,准备数据比较麻烦)
- 执行脚本 (先调试一个请求成功,在设置>2,确保没问题后设置好对应线程数等等)
- 过程记录或分析及反馈,是否第N轮,是则重复(可能需要改线程数等)
- 编写报告
二、线程组界面简介:
线程数:并发数量
Ramp-Up时间:多少秒起完上面设置的线程数,一般为线程数的1-2倍。
循环次数:要循环多少次?一般压测是勾选循环
持续时间:在压测时,是通过一定的范围时间内压测。
三、Jmeter 执行前需设置
1、聚合报告-配置,去掉勾选 XML (用来生成报告)
2、数据收集写入文件,用来生成报告的。
3、报告生成
需要把jmeter配置先改一下,文件:D:\apache-jmeter-5.3\bin\jmeter.properties
490行的,jmeter.save.saveservice.output_format=csv
需要注意路径,如我的:
- E:\apache-jmeter-5.3\bin\jmeter -g data.csv -o reprot.html
data.csv 为刚才汇总报告写入的文件路径
reprot.html 为生成的报告路径
打开报告的 html 文件。
4、编写报告及发送
报告可以使用word、excel等下编写,主要体现,压测需求,测试机器环境,报告的过程中的图表走势图(吞吐量/响应时间等等),是否满足压测需求,
报告模板可以参考百度一大堆
注:
- 1、压测报告需注明我们压测的环境。
- 2、如发现压测机与本地请求响应时间不一样的时候,我们要测的是应用的性能而不是网络的性能。
本篇文章只是入门级,适合能够编写脚本,分析压测量,执行脚本,但不会太多分析调优的测试人员。
最后额外分享:
性能测试 ①登录需要怎样绕过验证码? ②登录密码需要加密或者请求信息都要加密怎么办?
答:最简单的就是,手动去登录把token粘贴到脚本上。
其次请求信息都要加密怎么办?如果后端使用的是Java那么可以直接让开发给加密的方法规则,如果不是那可能你要自己折磨写一个加密的Jar包。