【四、性能测试】性能测试基础与几个重要的概念

news2025/1/11 14:54:45

你好,我是山茶,一个95后在职程序员。也是一个目标跟 1000+ 程序员探索出 AI + 测试 + 副业之路的 bro,欢迎跟我一起沟通交流!

一、什么是性能测试?

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

从过去的工作中我所理解的性能测试,是对当前系统进行系统化的全链路方式、单服务方式,模拟用户使用场景,施加压力下,系统的响应情况是否良好、是否会出现无压力情况下未出现的问题,从而避免上线以后出现不可控的性能问题

二、性能测试基础概念

1.响应时间

用户从客户端发送请求到所有的请求都从服务器返回客户所经历的时间。强调数据都返回客户端所花费的时间

那为什么说是所有数据呢?

因为用户体验的响应时间带有主观性,用户可能会认为从提交请求到服务器开始返回数据到客户端的这段时间为响应时间。以一个Web 应用的页面响应 时间为例,如图所示。

从图中可以看到,页面响应时间=网络传输时间+应用延迟时间。其中网络传输时间为(N1+N2+N3+N4),应用延迟时间为(A1+A2+A3),而应用延迟时间又可分解为数据库延迟时间(A2)和Web 服务器延迟时间(A1+A3)。

2.并发用户数

指同一时刻与服务器进行数据交互的所有用户数量。

在工作中,对于并发用户这个概念的理解经常会出现以下两种误区:一是认为系统所有的用户都是并发用户;二是认为所有在线的用户都是并发用户。

3.吞吐量TPS

在性能测试过程中,吞吐量是指单位时间内服务器处理客户请求的数量,吞吐量通常使用请求数/秒来衡量,直接体现服务器的承载能力。

吞吐量作为性能测试过程中主要的指标之一,它与虚拟用户数之间存在一定的联系,当系统没有遇到性能瓶颈时,可以采用下面这个公式来计算

其中,F 表示吞吐量; NVU 表示VU(Virtual User,虚拟用户)的个数; R 表示每个VU 发出的请求数量;T 表示性能测试所用的时间。但是如果系统遇到性能瓶颈,这 个公式就不再适用,吞吐量与VU 之间的关系图如图所示。从图中可以看出,吞吐量在VU 数量增长到一定值时,软件系统出现性能瓶颈,此时吞吐量的值并不再随着VU 数量的增加而增大,而是趋于平衡。

但在实际测试过程中,测试前吞吐量是不知道的,必须通过不断添加虚拟用户来不断地测试,才能找到吞吐量的拐点,即服务器实际吞吐量的值。

备注

  • 看到很多博客或性能测试人员将QPS和TPS混为一谈,个人认为,他们是以测试结果的统计得到该结论的;

  • TPS和QPS都是衡量系统处理能力的重要指标,一般和并发结合起来判断系统的处理能力;

  • QPS是查询,而TPS是事务,事务是查询的入口,也包含其他类型的业务场景,因此QPS应该是TPS的子集

TPS:Transaction Per Second:每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以request/second为单位; QPS:Query Per Second :每秒查询率,指服务器在单位时间内(秒)处理的查询请求速率;

  1. 性能拐点

在上面的概念中我们提到了“性能拐点”,那么什么是性能拐点呢?

具体的从以下的图片进行说明;性能拐点:顾名思义,当系统软件达到一定程度的时候,发生了转变及发生了拐弯。

如下图所示,横轴坐标为虚拟用户量,竖轴坐标为响应时间(response time)、tps(Throughput)、资源使用率(Utilization)三条曲线;下图被横竖轴划分为三个区域,第一个区域轻负载区、第二个区域重负载区域,第三个区域则为 塌陷区(用户无法忍受而放弃)

说明

  • 随着并发用户数的增加,在轻负载区,资源使用率逐渐增加、tps相应时间逐渐变大同时相应时间逐渐增加。

  • 随着用户数的逐渐增加,到达轻负载与重负载交界点时,tps开始逐渐缓慢增加、资源使用率开始逐渐趋于使用最大,此时为最佳并发用户点。

  • 当用户数到达重负载区和塌陷区的临界点时,响应时间陡增、tps陡降,此时交界点为性能拐点。此时为性能最大承受点

  1. 事务: 性能测试中,事务指的是从端到端,一个完整的操作过程,比如一次登录、一次筛选条件查询,一次支付等

  1. 思考时间: 思考时间(Think Time)也称为“休眠时间”,是指用户在进行操作时,每个请求之间的时间间隔。对于交互系统来说,用户不可能持续不断地发出请求,一般情况下,用户在向服务端发送一个请求后,会等待一段时间再发送下一个请求。性能测试过程中,为了模拟这个过程而引入思考时间的概念。

  1. 资源使用率: 资源使用率是指服务器系统不同硬件资源被使用的程度,主要包括CPU 使用率、内存使用率、磁盘使用率、网络等。资源使用率=资源实际使用量/总的可用资源量。资源利用率表现当前服务器资源使用的情况,它是分析服务器出现瓶颈和对服务器进行调优的主要依据,在配置调优测试的过程中,通过比较配置调优前后系统资源的使用率来判断调优的效果

今天我们仅对性能测试及其基础概念了解,接下来将深入学习如何进行性能测试

以上本文完,如果你觉得有用就“点个赞呗👍”

作者简介:

程序员山茶,一个工作5年,并坚持探索测试之路的测试开发工程师。曾混迹于互联网大厂、IOTA行业领航企业、安全行业、大数据行业领航企业,欢迎和我一起沟通交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1654663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Clion STM32CubeMX 项目

系列文章目录 前言 最后修改 2024 年 4 月 16 日 操作系统:Windows / Linux / macOS 所需工具 STM32CubeMX、GNU ARM 工具链 项目格式: CMake 兼容配置: OpenOCD 运行与调试/嵌入式 GDB 服务器 对于以 STM32 板卡为目标的嵌入式项目&#xf…

渗透之sql盲注(时间/boolean盲注)

sql盲注:sql盲注意思是我们并不能在web页面中看到具体的信息,我们只能通过输入的语句的真假来判断。从而拿到我们想要的信息。 我们通常使用ascii值来进行盲注。 目录 手动注入: 时间盲注: 布尔盲注: python脚本注…

gitlab集群高可用架构拆分部署

目录 前言 负载均衡器准备 外部负载均衡器 内部负载均衡器 (可选)Consul服务 Postgresql拆分 1.准备postgresql集群 手动安装postgresql插件 2./etc/gitlab/gitlab.rb配置 3.生效配置文件 Redis拆分 1./etc/gitlab/gitlab.rb配置 2.生效配置文件 Gitaly拆分 1.…

C# 和 Qt 相比的一些优势

C# 和 Qt 都是流行的软件开发工具,它们各自具有不同的优势,适用于不同的开发场景。以下是 C# 和 Qt 相比的一些优势。相比之下,Qt 也有其独特的优势,特别是在跨平台 GUI 应用程序开发方面。然而,C# 的这些优势使得它在…

又发现一个ai生成音乐的网站-heymusic

网址 https://heymusic.ai/ 尴尬,不挂梯子能登录进来,但是谷歌账号注册不了,刷新了几遍也没注册上。 看了下价格,应该不是免费的,所以也没了试用的兴趣。 我也不想用别的邮箱注册了,所以只能简单的水一…

DenseCLIP环境配置

直接看raoyongming/DenseCLIP: [CVPR 2022] DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting (github.com) 但这里的环境配置可能和现在不太适配,自己配了好久没弄好 后面尝试了另外的版本的(但这个版本少了一些内容&#…

【MM32F3270火龙果】点亮led

文章目录 前言GPIO的工作模式一、有哪些工作模式?1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 二、操作GPIO点亮led2.1 初始化gpio2.2 写gpio 三、示例代码总结 前言 本文将介绍如何在MM32F3270火龙果微控制器上使用Keil开发环境点亮LED。MM32F3270火龙…

【R语言】生存分析模型

生存分析模型是用于研究时间至某个事件发生的概率的统计模型。这个事件可以是死亡、疾病复发、治疗失败等。生存分析模型旨在解决在研究时间相关数据时的挑战,例如右侧截尾(右侧截尾表示未观察到的事件发生,例如研究结束时还未发生事件&#…

大语言模型入门介绍(附赠书)

自2022年底ChatGPT的震撼上线以来,大语言模型技术迅速在学术界和工业界引起了广泛关注,标志着人工智能技术的又一次重要跃进。作为当前人工智能领域的前沿技术之一,代表了机器学习模型在规模和复杂性上的显著进步。它们通常由深度神经网络构成…

17.接口自动化学习-日志

1.日志输出渠道 &#xff08;1&#xff09;文件格式 xx.log &#xff08;2&#xff09;控制台输出 2.日志级别 debug<info<warnning<error<critical 3.代码实现 from utils.handle_path import log_path import logging import datetime def logger(fileLogTr…

微信视频号怎么开店卖东西的?从开店到发货,具体流程来了

这两年&#xff0c;视频号逐渐展露头角&#xff0c;发展短&#xff0c;商家少&#xff0c;很多类目都没被商家占领&#xff0c;于是好多想创业的新手玩家就准备去视频号小店这个新平台闯一闯 那视频号小店是怎么开店卖东西的&#xff1f;今天我就给大家讲一讲视频号小店的正确…

modprobe: can‘t open ‘modules.dep‘: No such file or directory

使用modprobe会提示modprobe: cant open modules.dep: No such file or directory 直接输入depmod即可。 如果depmod没有效果&#xff0c;则需要重新配置编译你的根文件。 在busybox配置界面进入linux Module Utilities, 上下键选择depmod&#xff0c;并按 y 选中&#xff0c…

【三】DRF序列化进阶

序列化器的定义与使用 多表关联序列化 【1】准备工作 # settings.py DATABASES {default: {# 数据库引擎选择使用MySQLENGINE: django.db.backends.mysql,# 指定数据库名字&#xff0c;需提前创建NAME: books,# 指定数据库用户名USER: root,# 指定数据库用户密码PASSWORD: …

鸿蒙开发全攻略:华为应用系统如何携手嵌入式技术开启新篇章~

鸿蒙操作系统是华为自主创新的成果&#xff0c;打破了传统操作系统的局限。通过结合嵌入式技术&#xff0c;鸿蒙实现了跨平台、跨设备的高度融合&#xff0c;提供了流畅、智能的体验。华为应用系统与嵌入式技术的结合&#xff0c;提升了性能&#xff0c;丰富了用户体验。鸿蒙与…

翻译技巧早操练-(减译法)

hello&#xff0c;大家好&#xff0c;今天继续来学习翻译的技巧篇第二个-减译法。 往期回顾 翻译早操练-&#xff08;增译法&#xff09;-CSDN博客 减译法的目的就是为了译入语表达的通顺&#xff0c;如果原文的一些表达直接翻译到译入语即累赘还不合时宜&#xff0c;那么可以采…

多模态融合技术现实世界中的挑战与研究进展

在人工智能的诸多领域中&#xff0c;多模态融合技术正逐渐成为连接不同信息源的桥梁。这种技术通过整合来自视觉、听觉、文本等多种模态的数据&#xff0c;旨在提供更为丰富和精确的预测结果。然而&#xff0c;现实世界的数据往往是不完美和不完整的&#xff0c;这给多模态融合…

【运维网络篇】史上最全的 网络知识 思维导图!

01 TCP/IP网络协议栈 02 TCP/IP协议层次划分 03 传输介质简介 04 以太网帧结构 05 IP编址 06 ICMP协议 07 ARP协议 08 传输层协议 09 路由基础 10 静态路由基础 11 距离矢量路由协议——RIP 12 链路状态路由协议——OSPF 13 HDLC&PPP原理与应用 14 帧中继…

MY SQL 实验一:

一、实验目的 通过实验了解MYSQL数据库服务器的基本架构及基本的使用方法。 二、实验原理、条件 本实验采用著名的开源数据库软件MYSQL 作为实验平台。MYSQL有多种版本&#xff0c;常用的是服务器版。数据库引擎是用于存储、处理和保护数据的核心服务。MYSQL有多个数据库引擎&a…

QT功能 实现动态内容国际化实验

文章目录 1、新建项目2、给头文件添加代码3、给源文件添加代码4、生成ts文件5、翻译ts文件中的内容6、运行效果 1、新建项目 随便新建一个默认项目即可&#xff0c;此步省略&#xff0c;如果新建项目都不会&#xff0c;就不应该来看这篇博文。 2、给头文件添加代码 相关代码如…

如何切换PHP版本

如果服务器上安装了多个php&#xff0c;可能会导致默认的php版本错误&#xff0c;无法启动swoole等服务&#xff0c; 查看命令行的php版本方法&#xff1a;https://q.crmeb.com/thread/9921 解决方法如下&#xff0c;选一个即可&#xff1a; 一、切换命令行php版本&#xff…