前言
性能测试是通过某种特定的方式对被测试系统按照一定的测试策略进行施压,获取该系统的响应时间、运行效率、资源利用情况等各项性能指标,来评价系统是否满足用户性能需求的过程
测试目的
性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。包括以下几个方面:
1.评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策
2.检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突
3.系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能
4.验证稳定性和可靠性:在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法
测试时机
性能测试的最佳时间段是在功能测试完成并进入验收阶段到版本发布之前
测试指标
性能测试指标一般包括系统指标和资源指标两部分
系统指标
包括并发用户数、响应时间、事务并发数(TPS)以及请求成功率
1.并发用户数:指某一物理时刻同时向系统提交请求的用户数。对于并发用户数避免两种错误的理解,一种错误理解是把并发用户数理解为系统注册用户数,还有一种错误理解是把并发用户数理解为系统在线用户数
2.响应时间:指从客户端提交访问请求到客户端接收到服务器响应所消耗的时间。对于系统快速响应类页面,一般响应时间小于2秒
3.事务并发数TPS:指系统每秒能够处理的事务数量(一个事务可能是有多个请求组成)。性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录、保存订单、提交订单操作均可定义为事务。注:有时候也用QPS,即每秒请求次数,指系统每秒能够处理的请求数量
4.请求成功率:指所有请求中,成功接收到响应的请求所占的比例。请求成功率是响应时间、TPS等指标的前提,在成功率满足大于99.9%的前提下,响应时间、TPS满足预期
资源指标
包括CPU使用率、内存利用率、磁盘I/O、网络宽带
1.CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过80%
2.内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为80%
3.磁盘I/O:IO存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是读IO操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能
4.网络带宽:一般使用计数器Bytes Total/sec来度量,Bytes Total/sec表示为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较
测试工具
性能测试的常用工具有:jmeter、loadrunner或第三方成熟测试工具
测试方法
常用的性能测试方法有:负载测试、压力测试、并发测试、基准测试、稳定性测试、可恢复性测试。在实际测试时往往需要选择一种或多种组合开展性能测试
负载测试
指的是最常见的验证一般性能需求而进行的性能测试。简单说来就是观察系统在一定的负载压力下是否能满足用户的需求。我们对负载测试可以有如下理解:
1.负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现
2.负载测试的预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易容量、并发容量、资源使用率等
3.负载测试也是最常用的性能测试方法,因此也有不少人将负载测试混淆为性能测试
压力测试
压力测试是为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户数。注意,这个极端条件并不一定是用户的性能需求,可能要远远高于用户的性能需求。可以这样理解,压力测试和负载测试不同的是,压力测试的预期结果就是系统出现问题,而我们要考察的是系统处理问题的方式。比如说,我们期待一个系统在面临压力的情况下能够保持稳定,处理速度可以变慢,但不能系统崩溃。因此,压力测试是能让我们识别系统的弱点和在极限负载下程序将如何运行
并发测试
验证系统的并发能力。通过一定的并发量观察系统在该并发量的情况下所表现出来的行为特征,确定系统是否满足设计的并发需要。并发测试是系统观点的测试行为
基准测试
顾名思义,基准测试要有一个基准点,也就是说供比较基点。当软件系统中增加一个新的模块的时候,需要做基准测试,以判断新模块对整个软件系统的性能影响。按照基准测试的方法,需要打开/关闭新模块至少各做一次测试。关闭模块之前的系统各个性能指标记下来作为基准(Benchmark),然后与打开模块状态下的系统性能指标作比较,以判断模块对系统性能的影响
稳定性测试
很简单,长时间进行负载测试,从而观察系统的稳定性
可恢复性测试
测试系统能否快速地从错误状态中恢复到正常状态。比如,在一个配有负载均衡的系统中,主机承受了压力无法正常工作后,备份机是否能够快速地接管负载。可恢复测试通常结合压力测试一起来做