前言

本篇文章带大家一起学习性能测试
1,使用jmeter工具进行接口的性能压测
2,熟练使用jmeter工具
3,针对项目接口进行压测(性能测试的流程和操作的过程介绍)
4,分析调优(拓展部分)

一,关于性能测试的理论介绍

为什么要进行性能测试?

业务方面需求:
1.如每年双十一活动/微信春晚抢红包/12306春运订票等
2.当前服务器配置是否支持10000人同时使用
功能:有 /无
性能:好/坏
性能关注点:
性能(效率)
(1)时间特点:即服务器处理用户请求的响应时间,如卡/不卡的情况
(2)资源特点:软件运行时,对服务器资源的消耗情况,如CPU,内存,磁盘等

什么是性能测试?一般是指服务器的性能
使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程
1.后台处理程序的性能(代码的性能)
2.中间件,数据库,架构设计等是否存在瓶颈

中间件:tomcat,apache,nginx等应用服务器

性能测试的目的是什么?

1,评估当前系统能力,如验收第三方提供的软件
2,找到性能瓶颈,优化性能
3,评估软件能否满足未来的需求,例如 淘宝双十一交易额逐年递增

性能测试和功能测试比较
1.区别:关注点不一样
功能测试:主要关注功能上(满足条件,和不满足条件的)
性能测试:主要关注业务场景上 (响应时间 消耗资源)
2.功能测试和性能测试相辅相成
测试顺序:一般先功能测试 ,后性能测试

性能测试的策略,即性能测试的分类有哪些?(面试高频知识点)

1,基准测试:获取单个用户测试的各项性能指标,为多用户并发测试提供参考依据
2,负载测试:是验证在不同的并发下系统的表现情况,测试30,50,80个用户的性能
案例:健身,举哑铃
10斤哑铃,举起10个需要15秒。
20斤哑铃,举起10个需要15秒
30斤哑铃,举起10个需要15秒—最优负载量
40斤哑铃,举起10个需要20秒—最优负载量
50斤哑铃,举起10个需要40秒
60斤哑铃,举起10个需要100秒—最大负载量
70斤哑铃,举不起来
3,稳定性测试:在服务器稳定运行的情况下,进行长时间测试,时长一般为1天
4,其他:并发测试压力测试容量测试

横向坐标:系统当前的用户量,越往右用户量越大!
纵向坐标:
1 :资源的利用情况(Utilization,包括硬件资源和软件资源)
2:吞吐量(Throughput,这里是指每秒事务数)即处理能力
3:响应时间(Response Time),业务处理的响应时间

(1)在A点—-B点区间内,随着用户数量的增加 【在最优负载内】
系统资源的使用情况 在逐步增加的
系统处理能力也在逐步增加
系统的响应时间变化不大

(2)在B点—-C点区间内,随着用户数量的增加 【达到了最大负载量】
系统资源的使用情况 不变
系统处理能力不变
系统的响应时间在逐步增加

(3)在C点—-D点区间内,随着用户数量的增加 【系统崩溃,超过了最大负载量】
系统资源的使用情况
系统处理能力会减小
系统的响应时间在逐步增加

系统处理的最大用户数量是(B)
系统长时间稳定运行时,推荐的用户数量是(B)

并发测试:是指在极短的时间内,发送多个请求 来验证服务器对并发的处理能力。例如 抢红包,抢购,秒杀活动等

压力测试:是在强负载下(大数据量,大量并发用户下)的测试,查看应用程序在峰值的使用情况,

(1)稳定性压力测试:在系统高负载的情况下(临近C点)长时间运行(24小时)查看系统处理能力。
(2)破坏性压力测试:在系统极限负载的情况下(C-D点)对系统进行压力测试,查看系统容错能力和错误恢复能力。

容量测试:关注软件的极限压力下的各个参数值 例如 最大TPS (每秒事务处理量(TransactionPerSecond)),最大并发数,最大连接数(数据库建立连接)

性能测试的常用指标有哪些?(面试高频知识点)

定义:在性能测试的过程中 记录的数据值,用这些数据值与需求中的性能要求做对比,达到标准则无问题,未达到则是性能BUG

1.响应时间:从客户端发起请求开始,到客户端从收到服务器端返回的结果的整个消耗时间
响应时间=网络时间+应用程序处理时间
2.并发数(正在发生请求的用户,,,)
同一时刻 不同的用户做同一个操作或对同一个服务器做不同的操作。
绝对并发:同一时刻不同的用户做同一个操作。
3.吞吐量:每秒服务器处理的请求个数或事务数。从技术角度衡量系统性能重要指标,TPS 每秒事务数
4.点击数(使用少):只有web项目才有此指标,
5.资源使用率:指系统资源使用的情况, 资源利用率=资源的使用量/总的资源可用量×100%

1)建议CPU不高于80% CPU:的能力高低直接影响了整个电脑的运行速度,绝大多数的程序,都要经过它的运算,当然也包括病毒,如果它的使用率太高,会导致整个电脑的速度下降

2)内存不高于80% 内存:程序运行时所消耗的空间
3)磁盘不高于90% 磁盘:存储数据文件
4)网络不高于80% 影响数据的传输速度

6.错误率:系统在负载情况下失败业务的概率 ,错误率=(失败业务数 / 业务总数)*100%

性能测试的流程有哪些?(面试高频知识点)

1.性能测试需求分析
2.性能测试计划与方案
3.性能测试用例
4.性能测试脚本编写/录制
5.建立性能测试环境
6.执行测试用例
7.性能测试监控
8.性能分析和调优

9.性能测试报告总结

性能测试需求分析
1,熟悉被测试的系统
(1)熟悉被测试的系统的业务功能
(2)熟悉测试系统的技术架构
2.明确性能测试内容
业务方面:确定关键业务,即用户使用频率高的业务功能
技术方面:逻辑复杂高的业务 即CPU密集运行的地方
3.明确测试范围
负载测试:最优,最大负载量
稳定性测试:能否长时间稳定地运行
并发测试:用户一起使用时是否会出问题
4.确定测试指标
没有明确指标时:可以参考类似系统对比,查相关资料,
有明确指标时
例如:(1)下单业务并发20个用户
(2)平均响应时间要小于等于3S
(3)事务成功率100%
(4)CPU使用率小于等于85%

性能测试计划与方案

1.项目背景
2.测试目的
3.测试范围
4.测试策略
5.风险控制
6.交付清单
7.进度与分工

性能测试用例
要素:用例标题,用例编号,用例前置条件,用例步骤,用例预期结果,用例实际结果(需要监控的各项性能指标)
模板如下,和功能测试用例差不多一样

执行测试步骤
1.测试脚本编写/录制:用例编写完成后,结合用例的需要 进行测试脚本的编写

2.搭建测试环境:一般包括硬件和软件环境及网络环境(运维和开发协助完成)
注意:尽可能和用户使用的环境一样

3.执行测试脚本:先保证脚本调试通过之后,才能进入正式的压测阶段,在执行测试脚本同时,要先进行性能运行场景的设置,再运行脚本

4.性能测试监控:监控服务器的各项指标 例如:监控CPU,内存,网络,tps,磁盘等

5.性能分析和调优:对结果进行分析以后,提测系统存在性能的瓶颈。调优 即让开发改代码
(性能的BUG数量少,但开发 修改可能一个月的时间才能修复)

性能测试报告
1.性能测试需求覆盖情况,测试过程回顾,测试中发现的问题,
2.各类风险如果控制的 ,目前是否存在签证的风险
3.经过本次性能测试后,总结测试经验和教训