性能测试的基础概念原理

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 介绍关于性能测试基础概念,核心指标:并发用户数(VU)、吞吐量(QPS/TPS)、响应时间(RT),以及在性能测试过程一些注意事项。

image.png

0. 什么是性能测试?

系统的性能是一个很大的概念,覆盖面非常广泛,软件系统的性能包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等。

性能测试是为描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试。性能测试主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

通常把负载测试、压力测试、容量测试等统称为性能测试。

负载测试

负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的前提下,系统所能够承受的最大负载量的测试。

简而言之,负载测试是通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值。例如,通过逐步加压得到“响应时间不超过10秒”、“服务器平均CPU利用率低于85%”等指标的阈值。

压力测试

压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态来获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效。

配置测试

配置测试主要是通过对被测试软件的软硬件配置的测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统调优提供重要依据。

并发测试

并发测试是测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,所以几乎所有的性能测试都会涉及一些并发测试。因为并发测试对时间的要求比较苛刻,通常并发用户的模拟都是借助于工具,采用多线程或多进程方式来模拟多个虚拟用户的并发性操作。

容量测试

容量测试是在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景,在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力、最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。

可靠性测试

可靠性测试是通过给系统加载一定的业务压力(如CPU资源的使用率在70%~90%时)的情况下,运行一段时间,检查系统是否稳定。因为运行时间较长,所以通常可以测试出系统是否有内存泄露等问题。

在实际的性能测试过程中,也许用户经常会碰到要求7 × 24小时稳定运行的系统性能测试需求,对于这种稳定性要求较高的系统,可靠性测试尤为重要,但通常一次可靠性测试不可能执行1年时间,因此在多数情况下,可靠性测试是执行一段时间,如24小时、3 × 24小时或7 × 24小时来模拟长时间运行,通过长时间运行的相关监控和结果来判断能否满足需求,平均故障间隔时间(MTBF)是衡量可靠性的一项重要指标。

失败测试

对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。

1. 什么是并发?

从用户业务的角度,并发分为狭义和广义两类。

狭义并发即所有的用户在同一时刻做同一件事情或操作,这种操作一般针对同一类型的业务,或者所有用户进行完全一样的操作,目的是测试数据库和程序对并发操作的处理。比如,所有用户同一时刻做并发登录,同一时刻做表单提交。

广义并发即多个用户对系统发出了请求或者进行了操作,但是这些请求或操作可以是不同的,但对整个系统而言,仍然是有很多用户在同时进行操作。比如,在同一时刻有的用户在登录,有的用户在提交表单。

狭义并发强调对系统的请求操作是完全相同的,多适用于负载测试、压力测试;广义并发不限制对系统的请求操作,多适用于混合场景、稳定性测试。

从服务器的角度来看并发

前面的两种解释都是从用户业务的角度来解释并发的,因为我们平时所做的性能测试也是从用户端对业务层的操作来进行并发测试的。

如果考虑整个系统运行过程中服务器所承受的压力是这样的:在该系统的运行过程中,把整个运行过程划分为离散的时间点,在每个点上都有一个“同时向服务端发送请求的客户数”,这个就是所谓的服务器所承受的最大并发访问数。

2. 什么是并发用户数?与在线用户数和注册用户数的区别是?

并发用户数是指现实系统中同时操作业务的用户数,在性能测试工具中一般称为虚拟用户 (Virutal User)数。并发用户数跟注册用户数、在线用户数有很大差别:

  • 并发用户数:一定会对服务器产生压力的用户数量。
  • 在线用户数:只是“挂”在系统上对服务器不产生压力的用户数量。
  • 注册用户数:一般指的是数据库中存在的用户数量。

假设一个网站有20万注册用户,那20万就是这个网站的“注册用户数”。网站有一个在线统计功能,从统计数据中可以看到,同时登录网站的人数的最高记录是2万,就是有2万人同时用浏览器打开着这个网站,2万就是“在线用户数”

那么系统的并发用户数是多少呢?2万只表示系统最高峰时有这么多用户登录了网站,并不表示实际服务器的承受压力。因为服务器承受压力还与具体的用户访问模式相关,在这2万用户中考察某一个时间点用户发出请求数,可以会大大缩水。那么,该系统的服务端承受的最大并发访问数是多少呢?这个取决于业务并发用户数和业务场景,一般可以通过服务器日志的分析得到。

3. 什么是TPS、QPS?

TPS(Transaction Per Second):每秒事务数,即每秒系统能够处理的交易或事务的数量,它是衡量系统处理能力的重要指标。

QPS(Queries Per Second):每秒请求数,即每秒系统能够处理的请求数,它也是衡量系统处理能力的重要指标。

4. 并发用户数、响应时间和TPS之间的关系是?

事务是靠虚拟用户(并发用户)产生的,假如1个虚拟用户在1秒内完成1笔事务,那么TPS就是1,要想达到1000TPS至少需要1000个虚拟用户;如果某笔业务响应时间是1毫秒,那么1个虚拟用户在1秒内能完成1000笔事务,TPS就是1000。

因此1个虚拟用户可以产生1000TPS,1000个虚拟用户也可以产生1000TPS,主要看响应时间的快慢。

由此我们可以得出一个公式:TPS=虚拟用户数(并发用户数)/响应时间

BUT,该公式看似成立,但仅适用于单机单接口压测场景,因为在混合负载的情况下用户不仅只发送一个请求

5. 如何选择并发用户及施压策略?

对于已上线的系统,可以选取高峰时刻在一定时间内使用系统的人数,这些人数可以认为是在线用户数,并发用户数取其10%就可以了。例如在1小时内使用系统的用户数为10000,那么取10%作为并发用户数基本就够了。

对于新系统,没有历史数据作参考,只能通过业务部门进行评估。

性能测试需要一套标准化流程及测试策略,并发用户数只是指标考虑的一个。在进行压测时一般会按照梯度施压的方式增加用户数,以此观察系统在不同压力下的各种反应。而不是在没有预估的情况下,一次加压大量用户,这样会导致系统失败率高响应时间长,最终得到的测试结果也没有太大意义。

一般情况下,大型系统(业务量大、机器多)做性能测试 5000 个并发用户就够了,中小型系统做性能测试 1000 个并发用户就足够了。

6. 如何获取TPS?

对于已上线系统,可以通过高峰时刻,在5或10分钟内获取系统每笔交易的业务量和总业务量,然后按照单位时间内完成的笔数计算出TPS, 即业务笔数 /单位时间(5x60或10x60)。

对于新系统,因没有历史数据可供参考,只能通过业务发展趋势来预判各项指标,或者可以采用二八原则对TPS进行预估,即指80%的业务量在20%的时间里完成。

可以得出的公式:TSP=(90%x业务量x80%)/(20%x时间)

该公式比较适合一些互联网系统,比如秒杀、抢购等营销活动场景。

7. 如何评价系统性能?

在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好。

其实,针对服务器端的性能,应该以TPS为主来衡量系统的性能,并发用户数为辅来衡量系统的性能。如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成。因为在系统负载不高的情况下,将交易响应时间加到脚本中,并发用户数基本可以增加一倍,因此用并发用户数来衡量系统的性能没太大的意义

8. 测试脚本中事务选择的原则是什么?

测试脚本中事务选择的基本原则是:根据您的实际需求来设计。以一个网站为例:

如果您的压测目的是为了测试系统某个页面的对外服务能力,则可以用其页面的访问url作为一个事务。

如果您的压测目的是为了测试某个功能的服务能力,比如一个页面里某个url的服务能力(例如页面里有一个url需要访问数据库,想测试数据库的访问能力),则可以只压测这个url。

如果您的压测目的是为了测试某个业务场景或流程,比如从用户登录到浏览商品再到下单,这种较为复杂的业务流程,则需要对脚本中事务进行组合编排,包括一些参数的传递。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
26天前
|
消息中间件 分布式计算 大数据
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
85 0
|
4月前
|
测试技术 API 数据库
性能测试概念
**性能测试评估系统在负载下的表现,关注响应时间、吞吐量、并发用户数和资源利用率。关键指标包括RT、HPS、TPS、QPS、RPS等。并发数可由QPS和平均响应时间计算。提升压力的技术手段涉及多进程、多线程,各有优劣。P90、P95、P99等分位数用于描述数据分布,揭示不同负载场景下的系统性能。**
54 1
|
2月前
|
芯片
LDO的原理及测试方法
一、基本结构 这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。 LDO拓扑结构图 常见的基本结构 利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS))。 二、测试意义 了解集成电路的内部结构对测试有意义么? 1、了解内部结构,才能更好的理解测试原理或者设计测试方案2、可以学习提升对电路结构的理解能力。 针对LM317,了解了内部简单原理,可以知道1、内部结构设计针对的是温度系数,因此可能受温度的影响,实际也是会受到温度的影
177 88
|
1月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
118 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
27天前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
35 1
|
27天前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
39 1
|
1月前
|
前端开发 测试技术 程序员
在工作中会涉及到的几个环境(概念补充) 办公环境、开发环境、测试环境、线下环境、线上环境/生产环境都是什么,他们之间的关系?
本文解释了在职场中可能会接触到的不同环境,包括办公环境、开发环境、测试环境和生产环境(线上环境),以及它们之间的关系和重要性。
53 1
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
43 2
|
3月前
|
Web App开发 测试技术 API
Web自动化测试框架(基础篇)--Selenium WebDriver工作原理和环境搭建
本文详细介绍了Selenium WebDriver的工作原理,包括其架构、通信机制及支持的浏览器,并指导读者如何在Python环境下搭建Selenium WebDriver的测试环境,从安装Python和Selenium库到编写并运行第一个自动化测试脚本。
205 0
|
3月前
|
Kubernetes 监控 Java
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
338 0