性能测试概念
一、性能测试的目的:
1、评估系统的能力!(测试中所得负荷和响应的数据可以被用于验证所计划模型的能力,并帮忙做出决策)
2、识别体系中是否存在瓶颈!(受控负荷可以被增加到一个极端水平,突破他,从而恢复瓶颈或薄弱的地方)
3、系统调优(重复运行测试,验证调整系统的活动达到预期的结果,并而优化性能)
4、检查软件是否有问题(长时间的测试可能导致内存泄漏等问题,揭示了程序中隐含的问题或冲突)
5、检查可靠性(reliability)和稳定性(resilience)(在一个受控负荷条件下持续运行是评估可靠性和稳定性的唯一方法)
二、不同角色分别对系统的分析:
1、 黑盒测试人员对系统分析:
1、数据请求经过网络
2、服务器前端进行接收
3、数据库服务器获取数据
4、前端接收并返回
5、页面呈现在界面上
2、系统运维人员对系统分析:
1、硬件资源利用率
2、何种硬件可以提高系统性能
3、是否可以支持7*24工作
4、可扩展性、可兼容性,最大容量,等瓶颈
3、开发人员对系统分析:
1、数据库设计是否合理
2、代码与算法
3、系统中资源使用方式
三、性能影响因素:
1、硬件配置
2、操作系统
3、用户量
4、操作方式
5、操作环境
6、使用时间:硬件使用时间长,软件越不用维护
7、开发者技术水平
8、开发语言
四、性能测试的概念:
性能:覆盖面非常广,对一个软件系统包含:执行效率,资源占用,安全性,扩展性,兼容性,稳定性,可靠性…………负载压力是测试中最重要的!
性能测试的概念:通过自动化工具模拟多种正常,峰值以及异常负载条件来对系统中的各项性能指标进行测试!
五、性能测试的分类及目的:
1、一般性能测试(验证在正常情况下是否满足正常指标)
2、压力测试:验证系统处于极限负载下或者某指标已经处于饱和情况下进行的测试!为了把系统测到崩溃!又分局部崩溃和全局崩溃!
3、负载测试:系统在一定压力下持续运行,直到出现拐点
目的:找出系统处理能力的极限
需要在给定测试环境下进行,通常也要考虑被测试环境的业务压力量和典型场景,使得测试结果具有业务上的意义!
4、稳定性测试
5、可靠性测试
6、大数据量测试(大量数据对系统产生的压力和影响)
目的:主要目的确定软件发生故障的极限!
确定测试对象在给定时间内能够持续处理的最大负载或工作量
使用性能测试工具的配合和支持
了解性能容量,用来调优!
7、配置测试:验证系统在不同的软件和硬件配置的情况下,找出系统各项资源的优先分配
8、恢复性测试:当软件出现故障后,是人工恢复还是自动恢复
9、并发测试(所有用户在一时间发送请求)
目的:主要是为了发现系统中隐藏的并发访问时问题。
主要关注系统中可能存在的并发问题,如:内存泄漏,线程锁和资源争用方面问题!
使用的性能测试工具的配合和支持
10、疲劳强度测试(服务器在长时间下持续接受大批量用户请求操作)
目的:检查系统处于压力性能下,应有的表现
一般通过负载的方法,使系统资源达到一个很高的水平
一般用于测试系统的稳定性!
11、容量测试(能够处理最大会话能力,确定系统可处理的最大用户数)
12、网络测试(针对各种网络下服务器访问进行测试)
13、失败测试:对于冗余备份和负载均衡的系统,通过这样的测试来验证如果系统局部发生故障用户是否能够继续使用系统,用户受到多大影响!
六、常用的性能术语:
1、虚拟用户(模拟出来的用户)
2、并发和并发用户数(并发=“同时性”操作 , 并发用户数=在一时间一起操作)
3、响应时间(分为请求响应时间(不同角度分析,服务器收到客户请求并响应数据后),事物响应时间(处理请求事物响应时间))
4、思考时间(两次请求之间的间隔时间,)
5、点击率(一秒钟向服务器请求多少数据)
6、每秒事物数(TPS)(每秒可以处理多少业务……)
7、吞吐量和吞吐率(单位时间内承受能力,吞吐率:单位时间内存放能力)
8、性能计数器(用于用户监控和分析服务器性能指标)
七、无
八、性能测试的流程:
性能需求分析---编写性能测试计划----搭建性能测试环境-----选择性能测试工具(jemet……)------编写性能测试用例----测试执行---发现性能中bug----修复和调整bug以及优化-----测试人员对结果进行分析------整理出分析报告
九、性能需求分析:
客户方提出----根据历史数据进行分析----进行分析和定位-----查看历史项目或同行业项目-----查看网络上一些资料
总结:明确目标,看结果是不是自己想要的那个预期结果!
十、性能要求:
1、 响应的速度;
2、服务器支持多少在线用户
3、同时可以多少人调用接口
4、业务请求率达到100%
5、在多少个并发用户数,tps要处理能力要达到多少
6、系统能在高于运行自己一倍的情况下,运行12小时
十一、测试场景设计:
被测交易或使用的脚本:测试脚本是测试场景的基础,脚本包含所对应的数据!
延时策略:延时是从上以用户到下一用户延迟的时间,延时也是为了检查性能问题!有三种方法延时:(1)上一订单完成后立马执行,(2)上一订单完成后使用延时在规定时间完成,(3)在指定时间内完成!
运行时长:不包含响应时间和退出时间,只有执行时间!
加压策略:并用用户以什么羊的步调来发送请求,两种:(1)同时请求,(2)指定间隔时间,(3)梯度(设置几个梯度,每个梯度执行几分钟)
并发用户数量:同一个概念,模拟真实用户请求的一种方式!
执行时长:从项目的开始到项目的结束!
终止方式:用户终止,同时终止以及每隔多少秒退出多少用户!
资源监控利用:监控的对象,使用的监控工具或方法,监控数据采集频率等!
十二、测试模型与测试指标
测试模型:测试系统各交易在先运行的交易数量的比例,并不是并发用户的比例
测试指标包含:在线用户数,最优并发用户数,最大并发用户数,交易平均响应时间,目标tps等,对于接口类测试指标包含:目标tps,平均响应时间!
十三、指标分析
响应时间:
客户端给服务器发送请求:F1
服务器接受并处理:F2
服务器响应客户端:F3
页面呈现:F4
系统时间系统视角:
公式:Fs=F1+F2+F3
不包含页面呈现时间
响应时间用户视角:
公式:Fs=F1+F2+F3+F4
从请求到最终呈现
响应时间服务器视角:
仅看服务器接受并处理的时间:仅F2
总结:
不同角色分别对应性能应如何来看
十四、吞吐量
概念:指客户端请求数量,体现出软件系统性能承载能力!
公式:F=Npu*R/T
F:吞吐量
Npu:模拟虚拟用户个数
R:每个vu发出请求数量
T:测试所用时间
吞吐率
单位:req/s
概念:单位时间内请求数量!
十五、性能测试的重点及难点:
需求分析
场景设计
性能调优
配置环境和模拟
十六:吞吐量衡量方式
RPS:请求数/s
QPS:查询数/s
TPS:事务数/s
HPS:点击数/s
十七、编写测试计划的目的:
通过对测试结果的分析,得到对系统质量的评价!
系统中存在的缺陷,是为了修复和预防bug提供建议!
分析测试过程中的不足,为将来的改进提供参考!