性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
性能测试应用场景(领域)主要有:能力验证、规划能力、性能调优、缺陷发现、性能基准比较,
下表简单介绍和对比了这几个场景的各自用途和特点:
下表为性能测试应用领域与测试方法关联:
图中拐点说明:
2、意味着系统的一种或多种资源利用达到的极限
3、通常可以利用拐点来进行性能测试分析与定位
2、吞吐量
计算方法:Throughput=(numberofrequests)/(totaltime)
吞吐量-负载对应关系:
①上升阶段:吞吐量随着负载的增加而增加,吞吐量和负载成正比;
②平稳阶段:吞吐量随着负载的增加而保持稳定,无太大变化或波动;
③下降阶段:吞吐量随着负载的增加而下降,吞吐量和负载成反比;
a1面积越大,说明系统的性能能力越强,a2面积越大,说明系统稳定性越好,a3面积越大,说明系统的容错能力越好
吞吐率
通常情况下,吞吐率用“字节数/秒”来衡量,当然,也可以用“请求数/秒”和“页面数/秒”来衡量;
3、并发数
②广义上的并发:多个用户与系统发生了交互,这些业务场景可以是相同的也可以是不同的,交叉请求和处理较多;
4、资源利用率
内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%;
网络带宽:一般使用计数器BytesTotal/sec来度量,其表示为发送和接收字节的速率,包括帧字符在内;判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较;
超时错误率:主要指事务由于超时或系统内部其它错误导致失败占总事务的比率;
资源利用-负载对应关系:
1、服务器某件资源使用逐渐达到饱和
2、通常可以利用拐点来进行性能测试分析与定位
5、其它常用概念:
TPS
QPS是查询,而TPS是事务,事务是查询的入口,也包含其他类型的业务场景,因此QPS应该是TPS的子集!
QPS
TPS和QPS都是衡量系统处理能力的重要指标,一般和并发结合起来判断系统的处理能力;
ThinkingTime
PV
PageView:页面浏览量,通常是衡量一个页面甚至网站流量的重要指标;
RT/ART
需要分析的系统信息
需要分析的业务信息
性能需求评估
确定性能测试点:
建立性能指标
建立系统负载模型
测试机环境
执行机环境:这个就是用来生成负载的执行机,通常需要在物理机上运行。负载工具:JDK/Eclipse/LoadRunerorJmeter或Galting等监控工具:准备性能测试时的服务器资源、JVM、数据库监控工具,以便进行后续的性能测试分析与调优
服务器环境
系统运行环境:这个通常就是我们的测试环境,Linux系统/数据库/应用服务/各种监控工具。大部分公司的测试环境会低于生产环境,同时还需要考虑到不同的硬件配置是否会是制约系统性能的重要因素!因此在测试环境中,需要部署多个不同的测试环境,在不同的硬件配置上检查应用系统的性能,配置大概是如下几类:①数据库服务器②应用服务器③负载模拟器④软件运行环境,平台并对不同配置下系统的测试结果进行分析,得出最优结果(最适合当前系统的配置)
通过和业务部门沟通以及以往用户操作习惯,确定用户操作习惯模式,以及不同的场景用户数量,操作次数,确定测试指标,以及性能监控等
选择LoadRuner或者Jmeter,我使用的是Jmeter。
我使用Jmeter的工具进行录制,(PS:能直接写脚本就自己写尽量少录制,录制有时候会有干扰)
对脚本进行修改,增强脚本,让脚本更符合业务逻辑,可用性更强。(1)参数化用户输入(2)关联数据(3)增加事物(4增加检查点)
调试脚本(1)Vugen单次回放(2)Vugen多次回放(3)Controller单脚本多用户(4)Controller多脚本多用户(5)查看回放日志
验证脚本(1)通过检查点验证(2)通过查看后台服务器日志验证(3)通过测试系统查看运行后台变化(4)利用SQL语句查询/插入/更新/修改,查看效果
获取数据有两种方式:
(1)拉取生产数据,尽量保持数据一致以及量级足够(2)利用脚本自动生成数据或者利用测试工具生成数据,(如:利用JDBC预埋数据)
b)DB数据量大小:为了尽量符合生产场景,需要模拟线上大量数据情况,那么要往数据库里提前插入一定的数据量。
执行测试脚本
在已部署好的测试环境中,按照业务场景和编号,按顺序执行我们已经设计好的测试脚本
测试结果记录
根据测试采用的工具不同,结果的记录也有不同的形式;展现方式:折线图,统计图,表格等,现在大多的性能测试工具都提供比较完整的界面图形化的测试结果,当然,对于服务器的资源使用等情况,可以利用一些计数器或第三方监控工具来对其进行记录,执行完测试后,对结果进行整理分析,
测试环境的系统性能分析
根据之前记录得到的测试结果,经过计算,与预定的性能指标进行对比,确定是否达到了我们需要的结果;如未达到,查看具体的瓶颈点,然后根据瓶颈点的具体数据,
硬件设备对系统性能表现的影响分析
配置几个不同的测试环境,故可以根据不同测试环境的硬件资源使用状况图进行分析,确定瓶颈是再数据库服务器、应用服务器抑或其他方面,然后针对性的进行优化等操作
其他影响因素分析
影响系统性能的因素很多,可以从用户能感受到的场景分析,哪里比较慢,哪里速度尚可,这里可以根据2\5\8原则对其进行分析;至于其他诸如网络带宽、操作动作、存储池、线程实现、服务器处理机制等一系列的影响因素,具体问题具体分析,
测试中发现的问题
在性能测试执行过程中,可能会发现某些功能上的不足或存在的缺陷,以及需要优化的地方,需要多次执行测试。
性能测试报告是性能测试的里程碑,通过报告能展示出性能测试的最终成果,展示系统性能是否符合需求,是否有性能隐患
性能测试报告中需要阐明:性能测试目标、性能测试环境、性能测试数据构造规则、性能测试策略、性能测试结果、性能测试调优说明、性能测试过程中遇到的问题和解决办法等。
性能测试工程师完成该次性能测试后,需要将测试结果进行备案,并做为下次性能测试的基线标准,具体包括性能测试结果数据、性能测试瓶颈和调优方案等。同时需要将测试过程中遇到的问题,包括代码瓶颈、配置项问题、数据问题和沟通问题,以及解决办法或解决方案,进行知识沉淀。