一、定义
性能测试是用一定的技术工具,找出或验证某些性能指标值的测试
1、工具:
jmeter(用的最多、开源的)、loadrunner(用的不多)
Column 1 | jmeter | loadrunner |
---|---|---|
语言 | 纯java开发 | C语言开发 |
支持应用 | 对java为主的系统支持较好 | 支持比较全面 |
是否收费 | 开源免费 | 商业软件 |
学习成本 | 应用简单、上手快、java自定义测试计划 | 功能复杂、学习成本高 |
协议支持 | 支持常见的http/ftp/smp等 | 使用完善的组件进行定制化测试 |
组件功能 | Thread Group,Samplers | 一整套完善的测试组件 |
压测场景支撑:单接口/复杂事务:jmeter场景+逻辑控制器
压力需求:jmeter需求
CI支持:jmeter Jmx场景文件,数据驱动,结构可视化
二次开发需求:jmeter开源插件化思想,支持Thrift、Dubbo等多种协议。可以支持平台化
问题支持:lmeter开放社区、广泛应用
2、找出或验证
从来没有做过性能测试的时候,不确定产品的基本指标值,第一次做的时可以将指标值作为基准值
性能测试不找bug,找确切的输出的性能指标值(响应时间、1s能处理多少个事务(100个用户同时发送请求))
1、找出性能的指标值
响应时间(RT):从发起请求到收到响应的时间
最大并发用户数(秒杀:1s最大支持多少的用户数的请求)
TPS:服务器1s支持多少事务数
资源利用率:硬件资源(cpu、内存、磁盘)
2、验证性能有没有优化
负载测试和压力测试属于广义的性能测试
负载测试:逐步增加并发用户数,发起请求,找到我们系统的最大并发用户数的拐点区间
关键词:逐步加压
日均访问量:刷新一次算一次访问量,并不是有多少人访问
例如:从10个并发用户数开始,每次增加10个用户数,当到130时性能指标值正常,到140时性能指标值下降(响应时间变长)此时拐点区间为130-140;然后再每次增加1个用户,当136正常,137异常,拐点就是136,在最大并发用户数136的性能指标值设置为基准值,在以后版本迭代时,和这个基准值比较即可。
压力测试:通过一定的并发用户数(<=136),持续比较长的时间请求,查看我们服务器的稳定性
关键词:比较大的并发用户数+比较长的时间*24
例如:996能持续多长时间
3、性能测试的顺序
先负载测试(最大并发用户数(指标值),拐点的区间缩小具体的某一个值,再拿到这一个值(136)进行性能的测试),
后压力测试是看稳定性,找出不稳定的原因
比较小的并发用户数:136*20%的并发用户数,运行几个小时
比较大的并发用户数:136的并发用户数,运行几个小时
4、性能测试的必要性研究------关键项评估
二、做性能测试前提
1、生命财产安全要做性能
2、大型新系统----替换之前的旧系统(性能反而更差了)—怎么做?有时间限制—所以做核心的(例如淘宝)
3、架构有重大调整
4、业务量剧增(双十一活动)
5、重大缺陷–影响范围广(小bug不必要做性能测试)
6、一定不要按照需求来搞:因为产品和开发不懂性能测试,他们写的不能相信,对他们给的指标要可量化
7、100w用户,某一个接口做性能测试,可活跃的用户?各个指标值?没有给出具体的值
8、日均访问量为500w:一天中有500w请求,那500w是平均为24h还是8h?一般是按照8h算
500w/8/3600=174TPS ----- 每个人1s发一次请求,但是不可能只发送一次请求,所以
人数*每人每秒请求次数=tps
9、可测性----可以量化为性能指标值
三、基本准则
首先单接口,再多接口
然后多接口构成业务\模块
然后多业务混合
然后再系统
最后全链路
四、性能测试的必备条件
硬件资源相同、软件配置相同的服务器
1、独立服务器
性能测试会消耗大量资源,会影响功能测试、自动化测试(最后出现问题不确定是由于性能的问题,还是bug的问题)
2、生产环境不能用于性能测试
3、独立网络
因为,多用户—发送的数据就比较多----网络会受到影响
不能用无线网络----不能保证稳定—性能指标会受影响
五、并发、并发数、并发用户数
并发数:单位时间内向服务器发起请求的用户数、虚拟用户数
并发用户数:用于模拟真实用户向服务器发起请求的性能测试虚拟用户数量,这个时间点在刷新这个页面,发送的请求就可以不同
系统用户数:只要访问过系统的用户,可能含一次性访问的用户(用户个人信息在系统里面,注册 过)
在线用户数:当前正在访问系统的用户,不一定有压力(这个时间点在用这个系统,包括挂机没有发送请求)
响应时间:从发起请求到收到响应的时间
六、吞吐量和吞吐率
吞吐量和吞吐率-------------衡量网络的重要指标
吞吐量:事务/s 单位时间内网络通过的事务数
吞吐率:kb/s 单位时间内网络能够传输的数据量大小
事务/s:Transaction per second===TPS; 是硬件和软件的综合的指标,综合能力的体现
服务器每秒钟通过的事务数
当网络没有瓶颈,吞吐量的值=tps值
资源利用率
cpu:一般不能超过80%
内存:一般不能超过80%
磁盘
I/O