性能测试
一、性能测试
性能
描述产品除功能外的所具有的速度、效率和能力的综合能力评价
性能测试
对软件的性能进行定性的测量过程
性能测试的特点
1.性能测试方法的主要目的是验证软件系统是否有系统具有预期的能力。
2.性能测试方法要事先了解被测试系统的具体使用场景,并具有确定的性能目标。
3.性能测试方法要求在已经确定的环境下运行。
常见的性能测试
压力测试
系统在一定饱和状态下,如cpu、内存等饱和情况下,系统能处理的会话能力,以及系统是否会出现错误
特点:
1.该方法的主要目的是检查系统处于压力情况下试应用的性能表现
2.该方法通过增加访问压力,使系统资源保持在一定水平,检验应用的表现,重点在于有无出错信息产生,系统对应用的响应时间等
3.该方法一般通过模拟负载等方法,使得系统的资源使用达到较高的水平
4.该方法主要目的是找到系统处理能力的极限
负载测试
在被检测系统上不断增加压力,直到性能指标超过预期指标或者某种资源使用已经达到饱和状态,可以找到系统的处理极限,为系统调优提供数据
特点:
1.该方法在给定的测试环境下进行,通常需要考虑被检测系统的业务压力和典型场景
2.该方法一般用来了解系统的性能容量,或者是配合性能调优来使用性能容量,系统在保证一定响应时间的情况下能够允许多少并发用户的访问
并发测试
模拟多用户同时访问同一个应用、模块或者数据记录时是否存在思索或者其它性能问题
特点:
1.并发测试方法的主要目的是发现系统中可能隐藏并发访问时的问题。
2.并发测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源并用方面的问题。
3.并发测试方法可以在开发的各个阶段使用,不过是需要相关的测试工具的配合和支持
其他测试
如:可靠性测试、基准测试、验收性能测试、失效恢复测试等
二、主流性能测试工具
性能测试工具用途
性能测试在实际执行过程中,往往会有各类复杂的性能业务场景需要实现,无论是大批量用户,还是相对较长的执行时间,也包括运行时会需要做很多数据的记录、展示,生成各种我们所需要的数据报表等,这些内容都可以基于工具来全部获取,并通过工具的使用,可以简化整个前期的性能测试准备工作,以及系统性能的数据结果获取,完成性能测试阶段下的一部分工作内容,但是,工具≠性能测试,工具只是为了满足性能测试的一些需求而使用的一种手段,仅此而已
所有的性能测试工具只是为了实现性能测试的一种手段,和辅助的作用
是值得性能测试是在系统效率的测试上,需要关注的是系统整体的运行效率,是否存在有影响效率的性能问题
对于单个核心接口进行性能测试,考虑它的并发最大能达到多少,是否满足性能指标
性能测试工具
Jmeter:
Apache旗下推出的一款开源性能测试工具,完全基于java语言实现,支持脚本自定义与二次开发,如果个人Java能力较强,可以自主编写代码,搭配Jmeter实现更多性能测试
LoadRunner:
MicroFocus旗下推出的一款付费性能测试工具,虽然支持多语言的自主脚本编写,但在HTTP网络协议下的性能测试脚本默认是以C语言的形式来实现,LR也是性能测试领域下的老牌软件
Locust:
基于Python语言实现的一个开源编程式性能测试框架,所有的测试脚本都市就业Python编写程序来实现,提供有运行过程中的持续监控Web服务,也可以自定义搭配持续集成技术进行使用,具有较高的自由度,且在实际中可以支持各类协议
Gatling:
基于Java实现的一款开源性能测试工具,支持Scala、Java、Kotlin进行测试脚本的编写,对于HTTP有着出色的支持能力,同时,理论上可以支持到其他的各类协议
其他:
性能测试工具:
ab等
性能监控平台:
skywalking、telegraf、influxDB、grafana、prometheus等
三、企业及性能测试全流程
1.性能需求分析
基于系统需求以及用户的实际应用场景,对系统性能指标进行定义和提取,确保系统能够符合到实际场景,满足运行时的性能需求,并结合需求内容进行性能场景的设计,确保所有指标度可以被合理化的场景覆盖
2.环境准备
基于性能指标和确定的性能场景,搭建系统环境,并提前生成测试所需的相关数据,搭建性能测试所需的工作环境,包含工具、场景等一系列性能测试相关
3.脚本编写
通过工具录制、代码编写等手段,将测试脚本完成,依据性能场景对有需要的脚本进行各类脚本增强,满足到实际的性能场景测试需求
4.脚本执行
运行测试脚本,获取系统的实际性能数据
5.判断指标是否满足
基于系统的实际性能数据范奎,结合性能测试需求进行评估,检验性能指标是否达标
达标:
继续进行进一步的性能测试,用以测试系统的阈值、测试系统是否具备有抗风险的能力
不达标:
结合实际性能数据,进入性能诊断阶段,对系统性能不达标项进行分析
6.性能诊断
针对未通过项指标,进行追踪定位,分析系统未达标原因,结合完整系统架构,从网络、架构中间件、业务流、数据库、代码块、服务端硬件资源等等,通过各种手段与工具,在各个维度进行问题的排查,准确定位到引起性能不达标的原因所在,一遍后续优化整改
7.提供优化建议
针对已经排查确定的问题,测试方给出优化的建议,对接到不同角色一同商讨如何对现有问题进行优化,最终确立解决,进行性能优化