性能测试与类型基础知识

一 性能测试

1.目的

包括:评估系统的能力(负荷、响应时间等)、识别系统的弱点(系统的瓶颈)、系统调优(长时间运行,可能有内存泄露等潜在问题)、验证稳定性可靠性(在一个生产的负荷下执行测试一定的时间)

2.思想

模拟生产环境的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求

3.特点

1.     验证系统是否满足预期的能力,

方法:a.确定用户场景  b.给出需要关注的性能指标  c.测试执行  d.测试分析

2.    需要事先了解被测系统的典型场景,并具有确定的性能目标。

典型场景:要求系统在100个并发用户的条件下进行某业务的操作,响应时间不超过5秒

3.   要求在已确定的环境下运行。要求硬件设备、软件环境、网络条件、基础数据等。


二 性能测试的类型

负载测试、压力测试、稳定性测试(可靠性测试)、配置测试、并发访问测试、失效恢复测试等


2.1.负载测试

 2.1.1 思想:在被测系统上不断的增加压力,直到性能指标,例如:“响应时间”超过预定的指标或某种资源使用已经达到饱和状态。可以找到系统处理的极限,为系统调优提供依据

2.1.2 目标:不关注稳定性,不关注长时间的运行,只是得到不同负载下的性能指标即可。

2.1.3 方法:从比较小的负载开始,逐渐增加模拟用户的数量(增加负载),观察不同负载下应用程序的响应时间、所耗资源。通过“检测-加压-直到性能指标超出预期”的方式是实现.

2.1.4 特点:

a.  找到系统处理能力的极限

b.  极限描述方式:“在给定条件下,最多允许120个并发用户访问”,或者“在给定条件下最多能够在1小时内处理2100笔业务”

c. 预期性能指标描述:“响应时间不超过10秒”,“服务器平均cpu利用率低于65%等指标”

d. 需要在给定的环境下进行,考虑被测系统的业务压力量和典型场景,是测试具有业务意义

一般用来了解系统的性能容量(系统在保证一定响应时间的情况下能够允许多少并发用户的访问)、或配合性能调优来使用(比较调优前后的性能差异

2.2 压力测试

2.2.1 思想:该方法是在一定的饱和状态下(长时间运行),例如CPU、内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,反应变慢,内存泄露、系统崩溃等现象。
2.2.2  特点:

a. 一般通过模拟负载等方法,是系统资源达到较高的水平

b. 一般情况下,会把压力设定为“CPU使用率达到75%以上,内存使用率达到70%以上”下,测试系统的能力。

压力测试的依据:JVM的可用内存,数据库的连接次数、数据库服务器的利用率等

2.3 稳定性测试(可靠性测试)

2.3.1 思想:通过给系统加载一定的业务能力(例如:资源在70%-90%的使用率)的情况下,让应用持续运行一段时间(1周、1个月),测试系统在这种条件下是否能够稳定运行。

2.3.2  特点:

a.  验证系统是否支持长期稳定的运行。

b.需要在压力下持续一段时间的运行。

c. 如果测试过程中发现,随着时间的推移,响应时间有明显的变化,或是系统资源使用率有明显波动,都可能是系统不稳定的征兆,需要重点关注。

2.4配置测试

2.4.1思想:通过对被测系统的软/硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到系统各项资源的最优分配原则。

2.4.2 方法:在经过测试获得了基准测试数据后进行环境调整,包括硬件资源,网络,应用服务器等),再将测试结果与基准测试数据进行对比,判断是否达到最佳状态。

2.4.3 特点:

a.了解各种不同因素对系统性能影响的程度,从而判断出最值得进行调优的操作。

b.在每次执行测试时更换、扩充硬件设备,调整网络环境,调整应用服务器和数据库服务器的参数设置,比较每次测试结果,从而确定各个因素对系统性能的影响,找出影响最大的因素。

2.5 并发测试:

2.5.1思想:通过模拟用户的并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。

2.5.2特点

该测试,关注如下问题:

  a.内存问题:是否有内存泄露、是否有太多的临时变量、是否有太多的超过设计生命周期的对象、

  b.数据库问题:是否有数据库死锁、是否经常出现长事物

  c.线程与进程问题:是否出现线程/进程同步失败

  d.其他:是否出现资源挣用导致的死锁,是否没有正确处理异常(例如超时等)导致系统死锁。

2.6失效测试

2.6.1 思想:针对有冗余备份和负载均衡的系统设计的,这种测试方法可以用来检验如果系统局部发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响。

2.6.2 特点:

a.      验证局部故障的情况下,系统能否继续使用。

b.      性能测试方法还需要指出,当问题发生时“能支持多少用户访问”的结论和“采取何种应急措施”的方案。

c.      不是所有的系统都需要进行这种类型的测试,尤其是并没有明确给出系统持续运行指标的系统。


负载测试与压力测试的区别

负载测试:在一定的工作负荷下,给系统造成的负荷及系统相应的时间,是测试软件本身所能承受的最大负荷的性能测试

压力测试:在一定的负荷条件下,长时间连续运行给系统性能造成的影响,是一种破坏性的测试

性能测试、负载测试、压力测试的区别:

举例:用跑步举例

1.      性能测试:在没有负重的情况下,你跑100米需要花多长时间

2.      负载测试:在10公斤、40公斤等负载下,你跑100米需要花多长时间。

3.      压力测试:你在一阵强风下,你在负载或没有负载的情况下,跑100米需要花多长时间。

性能测试是动力,负载测试是载重,压力测试是强度。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值