当我们谈论系统性能测试时,具体谈论的是什么?

本文为博主自学笔记整理,内容来源于互联网,如有侵权,请联系删除。

个人笔记:https://github.com/dbses/TechNotes

01丨性能测试是什么样的?

性能测试要有指标

时间指标、容量指标、资源利用率指标。

性能测试要有模型

业务模型,比如说,我们有 100 种业务,只有 50 个业务需要有并发量,那就要把这些有并发的业务统计出来,哪个业务并发多,哪个业务并发少,做压力测试时就要控制好这样的比例。

监控模型,这个部分的监控,要有分层、分段的能力,要有全局监控、定向监控的能力。

性能测试要有方案

方案规定的内容中有几个关键点,分别是测试环境、测试数据、测试模型、性能指标、压力策略、准入准出和进度风险。

性能测试要有预定的条件

这里的条件包括软硬件环境、测试数据、测试执行策略、压力补偿等内容。要是展开来说,在场景执行之前,这些条件应该是确定的。

性能测试中要有场景

  1. 基准性能场景
  2. 容量性能场景
  3. 稳定性性能场景
  4. 异常性能场景

性能测试中要有分析调优

性能项目分以下几类:

  • 新系统性能测试类

    这样的项目一般都会要求测试出系统的最大容量。

  • 旧系统新版本性能测试类

    只要性能不下降,就可以根据历史数据推算容量。

  • 新系统性能测试优化类

    这类系统不仅要测试出最大容量,还要求调优到最好。

对性能团队的职责定位有如下几种:

  1. 性能验证
  2. 性能测试
  3. 性能测试 + 分析调做强

性能测试要有结果报告

在报告中写上 TPS、响应时间以及资源对比图。

02 | TPS和响应时间之间是什么关系?

image-20210529215017916

上图中蓝线表示 TPS,黄线表示响应时间。

在 TPS 增加的过程中,响应时间一开始会处在较低的状态,也就是在 A 点之前。

接着响应时间开始有些增加,直到业务可以承受的时间点 B,这时 TPS 仍然有增长的空间。

再接着增加压力,达到 C 点时,达到最大 TPS。我们再接着增加压力,响应时间接着增加,但 TPS 会有所下降。

这里并不是必然的,有些系统在队列上处理得很好,会保持稳定的 TPS,然后多出来的请求都被友好拒绝。

最后,D 点之后响应时间过长,达到了超时的程度。

在实际的性能测试中,基准性能场景也好,容量性能场景也好,都是需要递增的,而不是上来就用几百几千的线程。同时,递增也是要连续的,而不是 100 线程、200 线程、300 线程这样断开执行场景。

性能场景为什么要连续?而不是断开?

递增线程数可以记录每次的性能指标,画曲线对比分析,来观察指标变化的趋势,找出性能瓶颈以及服务器最大处理能力。

03 | 系统性能指标有哪些?

性能测试行业常用的性能指标表示法。

简写英文全称含义
RTResponse Time响应时间。通常我们说的响应时间,都是包括了Request Time和Response Time。
HPSHits Per Second每秒点击数
TPSTransactions Per Second每秒事务数
QPSQueries Per Second在MySQL中指每秒SQL数
RPSRequests Per Second每秒请求数
CPSCodes Per Second在HTTP协议中,CPS偶有提及,指的是HTTP返回码每秒。
PVPage View页面浏览量
UVUnique Visitor独立访问者
IPInternet Protocol本意是IP地址,在性能中一般指独立IP数
Throughput/吞吐量
IOPSInput/Output Operations Per Second通常描述磁盘

TPS

TPS 是性能领域中一个关键的性能指标概念,它用来描述每秒事务数,可以反映出一个系统的处理能力。TPS 在不同的行业、不同的业务中定义的粒度也是不同的。所以不管你在哪里用 TPS,一定要有一个前提,就是所有相关的人都要知道你的 T 是如何定义的。

以下图为例:

image-20210530215245305

如果我们要单独测试接口 1、2、3,那 T 就是接口级的;如果我们要从用户的角度来下一 个订单,那 1、2、3 应该在一个 T 中,这就是业务级的了。

RPS

如果一个用户点击了一次,发出来 3 个 HTTP Request,调用了 2 次订单服务,调用了 2 次库存服务,调用了 1 次积分服务,那么这个 Request 该如何计算?

image-20210530211539445

如果要描述整体,最多算是有 3 个 RPS。如果从 HTTP 协议的角度去理解,那么 HTTP Request 算是一个比较准确的描述了,但它本身的定义并没有包含业务。如果赋予它业务的含义,那么用它来描述性能也是可以的。

压力工具中的线程数(用户数)与 TPS

“并发”这个概念是需要具体的指标来承载的。

你可以说,我的并发是 1000TPS,或者 1000RPS,或者 1000HPS。但不能说并发 1000 这样没有单位的词。

以下图为例,来描述线程数与 TPS。

image-20210531220842593

上图有 4 个并发线程,每个线程都可以在一秒内完成 4 个事务,所以总的 TPS 是 16。

那么用户数怎么来定义呢?一个系统如果有 1 万个用户在线,很多业务中,并发度都会低于 5%,甚至低于 1%。拿 5% 来计算,就是
10000 用 户 ∗ 5 % = 500 ( T P S ) 10000 用户 * 5\%=500(TPS) 100005%=500(TPS)
注意这里是 TPS 而不是并发线程数。如果这时响应时间是 100ms,那显然并发线程数是
500 T P S / ( 1000 m s / 100 m s ) = 50 ( 并 发 线 程 ) 500TPS / (1000ms / 100ms)=50(并发线程) 500TPS/(1000ms/100ms)=50(线)
通过这样简单的计算逻辑,我们就可以看出来用户数、线程数和 TPS 之间的关系了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值