菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
293
0

性能测试

原创
05/13 14:22
阅读数 33092

性能测试的基本特点:

1.以功能实现正确为前提

2.通常有一定的并发用户

3.重点考察服务器端在一定并发压力下的性能指标

最后,再明确下性能测试的目的。通常,对服务器端应用程序开展性能测试,是为了验证软件系统是否能够达到预期的性能指标,同时发现软件系统中存在的性能瓶颈,从而实现优化系统的目的。

 

根据不同的测试目的,性能测试可以分为多种类型,常见的有如下几类:

1.基准测试(Standard Testing)

2.负载测试(Load Testing)

3.压力测试(Stress Testing)

4.疲劳强度测试

  首先说下基准测试。基准测试指的是模拟单个用户执行业务场景时,考察系统的性能指标。严格意义上来讲,基准测试并不能算作性能测试范畴,它跟功能测试并没有太大区别。差异在于,基准测试的目的更多地是关注业务功能的正确性,或者说验证测试脚本的正确性,然后,将基准测试时采集得到的系统性能指标,作为基准测试结果,为后续并发压力测试的性能分析提供参考依据。

  负载测试,主要指的是模拟系统在正常负载压力场景下,考察系统的性能指标。这里说的正常负载,主要是指用户对系统能承受的最大业务负载量的期望值,即预计系统最大应该支持多大用户的并发量。通过负载测试,目的是验证系统是否能满足预期的业务压力场景。

  和负载测试的概念比较接近的是压力测试。通俗地讲,压力测试是为了发现在多大并发压力下系统的性能会变得不可接受,或者出现性能拐点(崩溃)的情况。在加压策略上,压力测试会对被测系统逐步加压,在加压的过程中考察系统性能指标的走势情况,最终找出系统在出现性能拐点时的并发用户数,也就是系统支持的最大并发用户数。

  最后再说下疲劳强度测试。其实疲劳强度测试的加压策略跟负载测试也很接近,都是对系统模拟出系统能承受的最大业务负载量,差异在于,疲劳强度测试更关注系统在长时间运行情况下系统性能指标的变化情况,例如,系统在运行一段时间后,是否会出现事务处理失败、响应时间增长、业务吞吐量降低、CPU/内存资源增长等问题。

 

 

从维度上划分,性能指标主要分为两大类,分别是业务性能指标和系统资源性能指标。

  业务性能指标可以直观地反映被测系统的实际性能状况,常用的指标项有:

  1.并发用户数

  2.事务吞吐率(TPS/RPS)

  3.事务平均响应时间

  4.事务成功率

  而系统资源性能指标,主要是反映整个系统环境的硬件资源使用情况,常用的指标包括:

  1.服务器:CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等;

  2.数据库:数据库连接数、数据库读写响应时长、数据库读写吞吐量等;

  3.网络:网络吞吐量、网络带宽、网络缓冲池大小;

  4.缓存(Redis):静态资源缓存命中率、动态数据缓存命中率、缓存吞吐量等;

  5.测试设备(压力发生器):CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等。

 

性能测试的几个基本概念。
  并发数
  并发数是指在同一个时间点,同时请求服务的客户数量。
  比如大家常说的:『 我的网站可以承受一万并发。 』在通常情况下指的是:如果同时有一万名用户访问网站,所有人都可以正常获得服务。而不会有超时或连接拒绝情况发生。
  吞吐率
  吞吐率指的是服务处理请求的效率,计算方式为 ( 总处理请求数 / 总耗时 )。
  HTTP 服务的吞吐率通常以 RPS(Requests Per Second 请求数每秒)作为单位。吞吐量越高,代表服务处理效率就越高。换句话说就是网站的性能越高。
  注意:吞吐率和并发数是两个完全独立的概念。拿银行柜台来举个例子,并发数指同时有多少人往银行柜台涌来。吞吐率则指银行柜台在一段时间内可以服务多少个人。
  但是在性能测试中,二者之间通常会呈现出一种关联关系。当并发数增大时,吞吐率通常也会随之上升( 多用户发挥出并行处理优势) 。但在并发数超过某个边界值后,吞吐率则会下降 (用户过多,花在上下文切换的开销急剧增大,又或者内存消耗过多) 。
  响应时间
  响应时间指的是用户从发出请求到接收完响应之间的总耗时,它由网络传输耗时、服务处理耗时等多个部分组成。通常以毫秒(ms)作为单位。
  与并发数的关系:一般来说,随着并发数增大,单个用户的响应时间通常会随之增加。这很好理解,餐馆吃饭的人越多,单个顾客等待的时间就越长。
  与吞吐率的关系:更高的吞吐率通常意味着更低的响应时间。因为吞吐率是以 单位时间 内的请求处理能力来计算的。
  平均响应时间与百分位响应时间
  平均响应时间指的是所有请求平均花费的时间,如果有100个请求,其中 98 个耗时为 1ms,其他两个为 100ms。那么平均响应时间为 (98 * 1 + 2 * 100) / 100.0 = 2.98ms 。
  百分位数( Percentile - Wikipedia )是一个统计学名词。以响应时间为例, 99% 的百分位响应时间 ,指的是 99% 的请求响应时间,都处在这个值以下。
  拿上面的响应时间来说,其整体平均响应时间虽然为 2.98ms,但 99% 的百分位响应时间却是 100ms。
  相对于平均响应时间来说,百分位响应时间通常更能反映服务的整体效率。现实世界中用的较多的是 98% 的百分位响应时间,比如 GitHub System Status 中就有一条 98TH PERC. WEB RESPONSE TIME 曲线。
 
 
容量测试、负载测试、强度测试的英文解释为:
  VolumeTesting=Largeamountsofdata
  LoadTesting=Largeamountofusers
  StressTesting=Toomanyusers,toomuchdata,toolittletimeandtoolittleroom

发表评论

0/200
293 点赞
0 评论
收藏