性能测试的基本概念

性能测试的基本概念

一、为什么关注性能测试?
快增长模式:用户量爆发增涨、天猫双十一下单。
慢增长模式:用户量逐渐增加、产品推销。
大数据时代,需要关注性能。

二、性能概念
1、性能是一种指标,表明软件系统或构件对于其及时性要求的符合程度;
2、其次,性能是软件产品的一种特性,可以用时间来进行度量;
3、概念:主要通过自动化工具,模拟多种正常、峰值以及异常负载条件,来对系统的各项指标进行测试
4、性能不是一个人的事情,通常,对性能的关注是多个层面的:
(1)用户视角
软件对用户操作的响应时间:按钮、指令、链接
(2)管理员视角
服务器的资源使用情况
应用服务器和数据库的资源使用
系统能否实现扩展
系统性能可能的瓶颈在哪
更换哪些设备能够提高性能
最多支持多少用户的访问
系统容量:系统最大的业务处理量
系统稳定性:系统能否支持7X24小时的业务访问
(3)开发视角
系统架构:架构设计是否合理
数据库设计:数据库设计是否存在问题
代码是否存在性能方面的问题
系统中是否有不合理的内存使用方式
是否存在不合理的线程同步方式
是否存在不合理的资源竞争

三、软件性能的相关术语
1、响应时间:
(1)呈现时间:客户端浏览器对接收到数据的一个处理展示的过程,硬件及网络因素,客户的原因等。
(2)数据传输时间:有可能受到网络等因素,客户的原因。
(3)系统处理时间:系统得到请求后对请求进行处理并将结果返回; 压力测试需要关注的是系统处理时间,因为呈现时间和数据传输时间是不可控的。
2、合理的响应时间
(1)2/5/10秒原则
(2)另外,还需考虑使用频率:安装系统 1个小时、安装软件 几分钟。
3、并发用户数
(1)强调同时性
(2)多个用户同时对系统进行访问
4、吞吐量
(1)指在一次性能测试过程中网络上传输的数据量的总和
(2)系统吞吐量:*处理器CPU从存储设备读取→处理→存储信息的量
(3)吞吐率:单位时间内系统处理的数据量,也可以指单位时间内处理客户请求数量;TPS/though put /second:
字节数/秒:byte/second
请求数/秒:requests/second
5、性能计数器:
描述服务器或操作系统性能的一些数据指标
性能监视器:辅助监视,查看性能指标的状态:win+r→perfmon
计数器的作用:计数器在性能测试中发挥着“监控和分析”的关键作用;尤其是分析系统的可扩展性、进行性能瓶颈的定位时。单一的性能计数器只能体现系统
性能的某一个方面,对性能测试结果的分析必须基于多个不同的计数器。
6、思考时间think time:
也被称为“休眠时间”—sleep time, 指用户在进行操作时,每个请求之间的间隔时间 。
原因:为了更真实的模拟用户操作,因为用户不大可能持续不断的发出请求。

四、性能测试分类
1、性能测试(狭义)
方法:通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能的需要。
目的:验证系统是否具有宣称具有的能力。
特点:验证系统是否具有宣称具有的能力。
该方法要事先了解被测试系统经典场景,并具有确定的性能目标
关注点:宣称能力、经典场景
2、负载测试
方法:通过在被测系统上不断加压,直到性能指标达到极限。
特点:主要目的是找到系统处理能力的极限,一般用来了解系统的性能容量,或是配合性能调优来使用。
关注点:性能极限,对一个系统持续不断的加压,看在什么时候超出“我的要求”或系统崩溃。
3、压力测试(强度测试)
方法:测试系统在一定饱和状态下,系统能够处理会话的能力,以及系统是否会出现错误。
特点:主要目的是检查系统处于压力性能下时,应用的表现;一般通过模拟负载等方法,使得系统的资源使用达到较高的水平;一般用于测试系统的稳定性。
关注点:饱和状态,让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。
4、并发测试
方法:通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。
特点:主要目的是发现系统中可能隐藏的并发访问时的问题;主要关注系统可能存在的并发问题,如系统中的线程锁和资源争用方面的问题;可以在开发的各个阶段使用需要相关的测试工具的配合和支持。
关注点:同时, 多个用户同时(并发)对一个模块或操作进行加压。
集合点:方便并发使用的控制器。
5、配置测试
方法:通过对被测系统的软/硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
特点:主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作;一般在对系统性能状况有初步了解后进行;一般用于性能调优的规划能力。
关注点:微调–最优分配,通过对软硬件的不断调整,找出这个最佳状态,使系统达到一个最强的状态。
6、可靠性测试
方法:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
特点:主要目的是验证是否支持长期稳定的运行;需要在压力下持续一段时间的运行,需要关注系统的运行状况。
关注点:稳定,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。

五、性能测试流程
1、性能需求分析:测试人员需要与需求人员(客户)、领导及项目相关人员进行沟通,同时收集各种项目资料,对系统进行分析,确认 测试的意图;另外,还需要客户对性能的态度;重点关注指标。
2、性能测试计划:测试环境的准备;软硬件配置、网络状况等;测试数据的准备;
(1)测试的策略:设计符合需求的测试场景,需要对系统的哪些业务模块进行测试。
(2)明确人员配备:除测试人员,还包括开发、DBA、运维等人员的参与协助,性能测试的时间安排。
3、测试环境搭建
(1)测试用例:期望结果–由用户/客户决定,写清楚步骤
(2)用例评审
(3)编写脚本
4、测试工具选择
对需求进行分析,从成本、购买成本、开发成本,现有开源工具的二次开发成本,人员学习使用成本以及时间成本等考虑
测试执行:测试过程监控:
(1)查看LOG
(2)监控服务器资源
(3)监控数据库
5、测试结果分析
(1)需要性能测试工程师对整个被测环境的各种软硬件都要有深入的了解。
(2)根据测试结果和监控结果进行分析。
(3)根据性能的测试指标,分析出系统存在的瓶颈,并给出调优建议。
6、软硬件配置调整与优化
7、测试报告
测试范围
测试执行以及参与的人员
基准测试数据
测试执行的详细步骤及场景
测试数据记录和监控结果
测试结果对比和总结性评价
总流程图:
性能测试的基本概念