性能测试知识点总结:基础理论

互联 行业的快速发展,用户对软件需求的多样化,使得软件系统越发复杂。测试人员需要保证基本的功能测试外,性能测试的要求,也随越来越高。

但是在初学者中,提到性能测试,很多人直接和Loadrunner挂钩。认为Loadrunner就是性能测试。

其实这是错误的。Loadrunner只是性能测试的工具中的一种。性能测试不仅是Loadrunner。乐搏软件学院(ID:lebotest)从以下几个方面,为大家分享基础的性能测试理论,后续也会持续更新相关学习资料,达到理论与实战相结合,让性能测试学习,不在仅仅是工具的学习。

01软件性能是什么

定义:软件的性能,是软件的一种非功能特性,它关注的不是软件能否完成特定的功能,而是在完成该功能时展示出来的及时性。

由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试完成之后。

另外,由定义中的及时性,我们知道性能也是一种指标,可以用时间或其它指标来衡量,通常,我们会使用某些工具,或手段来检测软件的某些指标,检测他是否达到了要求,这就是性能测试。

性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

02各个群体眼中的性能测试

不同的人由于人生观、世界观、价值观以及教育背景、知识体系、人生阅历的不同,对于同一事物或问题的看法可能不同。对于软件性能也是如此,不同的人由于视角的不同,所关注的点也可能不同。下面来看看在不同的人群眼中性能分别是什么样的。

用户眼中的性能:

开发眼中的性能:

系统管理员眼中的性能:

测试眼中的性能:测试人员,通常是做为软件质量控制的一个关键角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分。

因此,测试人员眼中的性能应该是全面的,考虑的东西也需要全面:

1、测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。

2、测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等言方方面面。

03性能测试有哪些类型

基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考

负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等

压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力

稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。

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

04性能测试应用

性能测试应用场景主要有:

能力验证、

规划能力、

性能调优、

缺陷发现、

性能基准比较,

下表简单介绍和对比了这些场景的各自用途和特点:

能力验证:

主要用途:关注在给定的软硬件条件下,系统能否具有预期的能力表现

典型场景:在要求平均响应时间小于2秒的前提下,如何判断系统,是否能够支持50万用户/天的访问量?

特点:

a)要求在已确定的环境下运行

b)需要根据典型场景设计测试方案和用例,包括操作序列和并发用户量,需要明确的性能目标。

常用测试方法:

a)负载测试
b)压力测试
c)稳定性能测试

规划能力:

主要用途:关注如何使系统具有我们要求的性能能力

典型场景:某某系统计划在一年内获客量在到xxx万,系统到时候是否能支持这么多用户量?如果不能需要如何调整系统的配置?

特点:

a) 它是一种探索性的测试
b) 常用于了解系统性能和获得扩展性能的方法

常用测试方法:

a) 负载测试
b) 压力测试
c) 配置测试

性能调优:

主要用途:主要用于对系统性能进行调优

典型场景:某某系统上线运行一段时间后响应速度越来越慢,此时应该如何办?

特点:每次只改变一个配置,切忌无 休止的调优

常用测试方法:

a) 并发测试

b) 压力测试
c) 配置测试

缺陷发现:

主要用途:发现缺陷或问题重现、定位手段

典型场景:某些缺陷只有在高负载的情况下才能暴露出来,如线程锁、资源竞争或内存泄露。

特点:做为系统测试的补充,用来发现并发问题,或是对系统已经出现的问题进行重现和定位

常用测试方法:

a) 并发测试

b) 压力测试

性能基准比较:常用于敏捷开发过程中,敏捷开发流程的特点是小步快走,快速试错,迭代周期短,需求变化频繁。很难定义完善的性能测试目标,也没有时间在每个迭代开展详细的性能测试,可以通过建立性能基线,通过比较每次迭代中的性能表现变化,判断迭代是否达到了目标

通常在某个性能场景中,需要联合使用多种性能测试方法,一起进行性能测试。

05性能测试的概念

响应时间

定义:从用户发送一个请求,到用户接收到服务器返回响应数据,这段时间就是响应时间

关键路径:下图是一次http请求经过的路径演示,请求会通过 络,发送到web服务器进行处理。如果有操作DB的需求,再由 络转发到数据库进行处理,然后返回值给web服务器,web服务器最后把结果数据,通过 络返回给客户端。

计算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:( 络时间 + 应用程序处理时间)

响应时间与负载对应关系:

图中拐点说明:

  • 响应时间突然增加

  • 意味着系统的一种或多种资源利用达到的极限

  • 通常可以利用拐点来进行性能测试分析与定位

  • 吞吐量

    定义:单位时间内系统处理的客户端请求的数量

    计算单位:一般使用请求数/秒做为吞吐量的单位,出可以使用 页面数/秒表表示。另外,从业务角度来说也可以使用 访问人数 /天 或 页面访问量/天 做为单位。

    计算方法:Throughput = (number of requests) / (total time)

    吞吐量与负载对应关系:

    图中拐点说明:

  • 吞吐量逐渐达到饱和

  • 意味着系统的一种或多种资源利用达到的极限

  • 通常可以利用拐点来进行性能测试分析与定位

  • 并发数

    并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。

    在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求

    系统用户数:系统注册的总用户数据

    三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数

    资源利用率

    定义:指的是对不同系统资源的使用程度,通常以占用最大值的百分比来衡量

    我们通常需要关注的资源如下:

    CPU:像大脑一样,主要负责判断相关事情,以及实际处理的机制

    内存:临时记忆块区,将收集到的信息记录起来的地方,以供cpu进行判断。访问速度快,如果关机或断电,数据会消失。

    磁盘IO:永久记忆区块,将重要的数据保存起来(关机或断电不会丢失,速度慢),以便将来再次使用这些数据。

    络:

    资源利用与负载对应关系:

    图中拐点说明: 服务器某荐资源使用逐渐达到饱和

    其他常用概念

    TPS:Transactions Per Second,每秒事务数

    思考时间:操作之间的间隔时间,或者用户每个操作后的暂停时间。此时间内是不对服务器产生压力的。

    点击数:用户每秒钟向WEB服务器,提交的HTTP请求数。

    这个指标是WEB应用特有的一个指标:

    WEB应用是”请求-响应”模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.

    PV:Page View,页面访问量

    访问一个URL,产生一个PV,每日每个 站的总PV量是形容一个 站规模的重要指标。

    UV:Unique Visitor,用户访问

    一个独立的用户,访问站点的所有页面均算作一个UV。

    06理发店模型和曲线拐点模型

    前面我们乐搏软件学院(ID:lebotest),和大家分享了很多关于性能测试的基本概念,相对来说比较抽象。

    我们可以通过,性能测试理发店模型,或地铁进站模型,来更好的理解。

    07掌握哪些知识,才能做好性能测试

  • 掌握一门编程语言

  • 掌握计算机原理和操作系统知识

  • 良好的 络基础

  • 掌握数据库知识

  • 中间件(apache,tomcat)

  • 常用抓包工具

  • 性能测试工具

  • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年7月3日
    下一篇 2019年7月3日

    相关推荐