性能测试总结-Jmeter代码使用

一:性能测试的流程

1.找产品沟通哪些接口需要压测,需要达到什么样的预期值(TPS和响应时间)
2.编写测试方案,比如测试场景,时间计划,人力投入等
3.测试数据准备,测试账号(预估并发量),设计测试脚本(参数化,表达式,断言,控制器)
4.运行测试脚本,数据监听(响应时间,tps,活动线程),结果分析(判断性能瓶颈)
5:基本性能瓶颈做调优(tomcat线程池,jvm内存,swap内存,带宽)
6:调优之后做性能回归,和前期结果做对比,是否有明显的优化。
7:代码问题优化(自己定位或者交给开发定位)
8:性能测试报告。整理性能测试数据(包括调优之前和调优之后)
9:构建持久化的性能监听平台,监听线上的服务性能

二:性能测试中一般关注哪些指标?

1.并发用户数:同一时间 向服务器发送请求的用户数
2.响应时间:从客户端发出请求到得到响应的整个时间,一般包括网络响应时间+server的响应时间。
3.TPS吞吐量:系统每秒处理事务数,TPS越高,性能越好
4.错误率:系统在负载情况下,失败交易的概率,一般不超出千分之3,即成功率不低于99.7%
5.CPU:后台服务的所有指令和数据处理都是由CPU负责,服务对CPU的利用率对服务的性能起着决定性的作用
6.内存:检查被测服务所占用内存的波动情况,它是与CPU进行沟通的桥梁

三:性能测试的类别

1.负载测试:通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值,保持性能指标要求的前提下测试系统能够承受的最大负载,比如:100人下订单 1s,1000人下订单 2S
2.压力测试:从负载的基础上增加逐步增加负载,使系统某些资源达到饱和甚至失效,是使系统性能达到极限的状态,3000人下订单 —》4000人下订单–》5000人下订单 -〉崩溃
两者区别:例如软件系统正常的响应时间为2s,负载测试确定访问量超过1万时响应时间变慢。压力测试则继续增加用户访问量观察系统的性能变化,当用户增加到2万时系统响应时间为3s,当用户增加到3万时响应时间为4s,当用户增加到4万时,系统崩溃无法响应。由此确定系统能承受的最大访问量为4万。
3.稳定性测试:通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,使其持续运行一段时间(如7×24h),检查系统是否稳定,通常可以检测出系统是否有内存泄漏等问题
4.配置测试:是指调整软件系统的软硬件环境,从而找到系统各项资源的最优分配原则,例如安装版本更高的数据库、配置性能更好的CPU和内存等
5.基线测试:在给产品系统施加较低压时,查看系统的运状况并记录相关数做为基础参考
6.并发测试:测试多个用户同时访问同一个应用、在极短的时间内,发送多个请求,来验证服务器对并发的处理能力,比如秒杀活动
7.容量测试:评估系统在不同负载条件下的性能表现,并确定系统的容量和资源需求,以支持预期的用户数量和数据量

四:Jmeter使用

1.Jmeter主要目录介绍

bin:核心可执行文件,包含配置:
jmeter.properties: 核心配置文件
extras:插件拓展的包
lib:核心的依赖包
2.基础功能组件+线程组和Sampler
流程1:添加->threads->线程组(控制总体并发)
线程组:就是一组线程,并发执行,每个线程可以认为是一个请求
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程—多个用户持续时间内去请求接口
准备时⻓(Ramp-Up Period(in seconds)):全部线程启动的时 ⻓,比如100个线程,20秒,则表示20秒内 100个线程都要启动完成, 每秒启动5个线程
循环次数:每个线程发送的次数,假如值为5,100个线程,则会发送 500次请求,可以勾选永远循环,当勾选永远时,需要与调度器一起使用。
性能测试总结-Jmeter代码使用_第1张图片

流程2:线程组->添加-> Sampler(采样器) -> Http (一个线程组下面可以 增加几个Sampler)
查看结果:
线程组->添加->监听器->察看结果树
线程组->添加->监听器->聚合报告
3.特殊的线程组setUP-tearDown和调度器实战
setUP:最先执行,前置工作
线程组:中级执行,常规处理
tearDown:最后执行,收尾工作
4.Http采样器复用和Http请求头管理
如果有多个接口,每个接口都需要重复配置http协议、ip、端 口等相同参数,维护起来麻烦
可以通过配置 http请求默认值 进行默认配置,那对应的线程 组则不用重复配置
性能测试总结-Jmeter代码使用_第2张图片
性能测试总结-Jmeter代码使用_第3张图片
5.聚合报告解析
在这里插入图片描述

lable: sampler的名称
Samples: 一共发出去多少请求,例如10个用户,循环10次,则 是 100
Average: 平均响应时间
Median: 中位数,也就是 50% 用户的响应时间
90% Line : 90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)
95% Line : 95% 用户的响应不会超过该时间
99% Line : 99% 用户的响应不会超过该时间
min : 最小响应时间
max : 最大响应时间
Error%:错误的请求的数量/请求的总数
Throughput: 吞吐量——默认情况下表示每秒完成的请求数 (Request per Second) 可类比为qps
KB/Sec: 每秒接收数据量
性能测试的关键点:
TPS:
Transactions Per Second 每秒事务数, 可以是一个接口、 多个接口、一个业务流程
包括增删改操作
QPS:
Queries Per Second, 每秒查询数, 指一台服务器每秒能 够响应的查询次数
QPS 只是一个简单查询的统计,不能描述增删改等操作 如果只是查询操作 TPS = QPS
RT:响应时间
6.压测结果断言
a : 响应断言,多数情况都可以,但是推荐使用较为简单的断言,比如响 应断言
,复杂断言会消耗压测机器的性能
性能测试总结-Jmeter代码使用_第4张图片
b : 持续时间断言
用于判断服务器的响应时间,作用对象是服务器
Duration in milliseconds:响应时间设置(单位毫秒),如 果响应时间大于设置的响应时间,断言失败,否则成功
应用场景:
高并发下的,接口响应时间增加,如果超过一定时间则认为是 超时
性能测试总结-Jmeter代码使用_第5张图片
7.Jmeter用户自定义变量实战
企业开发里面一般都是有多环境开发,项目中有变量会根据环境变化而变化,可以使用自定义变量,在一处定义四处使用,改的时候只要改一次即可,引用方式 X X X ,在接口中变量中使用 ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / d i r e c t / 56 e f f 0786 e 9 b 4 e 7 f b 6 c 603091617499 a . p n g ) ! [ 在这里插入图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / d i r e c t / f 98566154 f 5440 a a b 2 d d 2363 b 4 c 80832. p n g ) 8. C S V 多个可变参数业务开发里面参数一般不是固定方式,而是采用可变参数进行压测比如压测商品详情,查看 i d 从 1   100 的商品详情,运用时 {XXX},在接口中变量中使用 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/56eff0786e9b4e7fb6c603091617499a.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f98566154f5440aab2dd2363b4c80832.png) 8.CSV多个可变参数 业务开发里面参数一般不是固定方式,而是采用可变参数进行 压测 比如压测商品详情,查看id从1~100 的商品详情,运用时 XXX,在接口中变量中使用![在这里插入图片描述](https://imgblog.csdnimg.cn/direct/56eff0786e9b4e7fb6c603091617499a.png)![在这里插入图片描述](https://imgblog.csdnimg.cn/direct/f98566154f5440aab2dd2363b4c80832.png)8.CSV多个可变参数业务开发里面参数一般不是固定方式,而是采用可变参数进行压测比如压测商品详情,查看id1 100的商品详情,运用时{XXX}
性能测试总结-Jmeter代码使用_第6张图片
性能测试总结-Jmeter代码使用_第7张图片
性能测试总结-Jmeter代码使用_第8张图片

你可能感兴趣的:(性能优化)