前提:
性能测试的概念:通过工具,找出或获得系统在不同工况下的性能指标值
一、开展性能测试的顺序:
1、最先开始进行的-->负载测试
负载测试的概念:逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载量
关键词:逐步增加
eg:每天访问量几百万,基本上只需要增加10即可,可以快速找到系统的平衡值
最大负载值:即平衡的值怎么看,看服务器的处理能力在下降,响应时间长,会报错
2、找到最大值后,开始下一步:性能测试(增加起始量:start 的值)
3、最后测试服务器的稳定性-->压力测试
压力测试的概念:在较大的性能压力下,持续运行一个比较长的时间,看系统服务及各个资源利用情况
关键词:较大压力+较长时间
目的:看服务器是否稳定
4、可靠性测试:在一定的业务压力下,持续运行一段时间,查看系统是否稳定
关键词:是否稳定,一定的业务压力
含义:来看系统的稳定性,有没有日积月累的数据放在内存,cpu没有得到释放,(前期压力测试)
5、企业需要考虑-->容量测试:
在一定的软、硬件条件下,在数据库不同数量级数据量的情况时,对系统中读、写比较多的业务进行测试,从而获得不同数据量级下的性能指标值;
数据量级就要看数据库的索引
关键词:不同数据量级
二、性能测试主要指标:
企业关注的指标:
服务器利用情况 -- 资源利用率
能支持最大用户 -- 系统容量
能支持的最大并发用户 -- 并发用户数
是不是可以更换硬件提供性能 -- 可扩展
能不能持续运行长时间不宕机 -- 稳定性
开发人员关注那些性能:
架构设计是否合理 -- 系统架构
数据库设计 -- 数据库
代码逻辑 -- 代码
线程,同步,异步,队列 -- 实现技术
资源配置 -- 稳定性
主要指标:
1、并发 --> 狭义上:指同一个时间点执行相同的操作(如:秒杀)
并发用户,一直增加人,一旦这些人同时做一个事,那就是并发用户
2、并发用户数(重要指标)--> 同一时间点,执行相同请求的用户数(系统用户数、在线用户数、线程数)
3、事务(Transaction)-- > 指一个客户机向服务器发送请求然后服务器作出反应的过程
一个事务可以是一个请求,也可以是多个请求
jmeter,默认一个接口请求就是一个事务,当前这个接口的指标值
4、响应时间(RT)重要指标 -->(直接用网线测试指数最为准确)
从发起请求到收到请求响应的时间
发送请求网络传输时间(用网线的原因:减少这个时间)+服务器处理时间+返回响应网络传输时间
5、TPS\QPS最主要指标:
TPS(Transactions per Second):服务器每秒处理事务数,衡量服务器处理能力的最主要指标,是事务数,不是请求数。
企业里QPS(Queries per Second):服务器每秒处理事务数,衡量服务器处理能力的最主要指标 --> 每秒查询率大
6、吞吐量(Throughput):单位时间内处理的请求数量(事务/s)
(衡量网络,上行、下载都一样,就是等于TPS,网络足够宽,默认是一个请求一个事务,两个数值上相等。
网络足够宽,一个事务多个请求,吞吐量不等于事务,1tps 3个吞吐量)
7、吞吐率 --> 单位时间通过的数据平均速率(KB/S)
8、点击率(Hit per Second)--> 每秒点击数
9、资源利用率(重要) --> 指服务器资源的使用程度,比如服务器(应用及数据库)的cpu利用率,内存利用率,磁盘利用率,内存利用率,不要超过80%
(16核或32核的服务器,要看16核的使用率,不能只看一个,单核是100%都可以,不要达到80%的使用率,16*80%,4个核的闲置)
三、性能测试步骤:
1、性能测试准备:
(1)分析需求熟悉业务,可测性、明确性能测试指标;
(2)了解软件功能、架构(docker、微服务);
(3)指定测试计划,做好工作量评估、制定 测试模型(编辑测试用例)
3、性能测试脚本开发:
(1)选取协议
(2)制作脚本
(3)调试脚本
(4)验证脚本
4、性能测试脚本执行(试运行、场景执行)
5、结果分析与调优
(1)、分析依据:结果图标
(2)、分析思路:服务器硬件瓶颈>网络瓶颈>服务器os瓶颈(参数配置、数据库、web服务器)>应用瓶颈(sql语句、数据库设计、业务逻辑、算法
(3)、调优:
(4)、修改脚本和场景
6、测试报告与结果跟踪