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

你好,我是山茶,一个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.mzph.cn/pingmian/8547.shtml

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

相关文章

【Linux——Centos7安装RabbitMQ】 RabbitMQ无法连接

到这一步是基本已经装好了,现在是在开放端口,我这个报错是因为我的防火墙是处于关闭状态,所以在开放端口时会报防火墙为运行,把防火墙打开,在开放端口,就可以访问到了 重启防火墙: systemctl …

MATLAB的Bar3函数调节渐变色

一. colormap函数 可以使用colormap函数: t1=[281.1,584.6, 884.3,1182.9,1485.2; 291.6,592.6,896,1197.75,1497.33; 293.8,596.4,898.6,1204.4,1506.4; 295.8,598,904.4,1209.0,1514.6];bar3(t1,1) set(gca,XTickLabel,{300,600,900,1200,1500},FontSize,10) set(gca,YTic…

常见C语言基础题说明一

一. 简介 整理一些C语言常见的基础笔试题。 假如系统是 32位计算机的情况下,字节对齐方式为 4字节对齐。计算如下题目。 二. 常见C语言基础笔试题 1. 计算 sizeof(数组名), sizeof(指针),strlen(数组名) 大小 计算如下的变量的值&…

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现:4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…

技术速递|介绍 .NET MAUI 社区工具包 v8 :包含 TouchBehavior 支持!

作者:Gerald Versluis 排版:Alan Wang .NET MAUI 社区工具包团队很自豪地向您介绍 .NET MAUI 社区工具包的第 8 版! 在这个最新的主要版本中,我们为您带来了备受期待的 TouchBehavior(以前称为 TouchEffect&#xff0…

MM模块学习一(供应商创建,物料类型的定义及功能)

物料管理流程: 源头:采购需求->采购申请 MRP:物料需求计划。运行物料需求计划的结果,根据物料的性质来判断是外购(采购申请)或者是生产(计划订单->生产订单)。 采购申请&am…

在Linux中安装Docker

如果之前安装过旧版本的 Docker,可以使用下面命令卸载: yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine…

500的项目研发成本2000?

上个月接了一个小程序的二开项目,功能不多就2个诉求:调整首页数据排序规则,帖子详情增加一个海报,报了一个我认为还比较合适的价格500。 当我拿到代码的那一刻有点小害怕,因为这个客户的之前合作过一次,项…

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…

数值计算方法——大题题型总结

目录 一、绝对误差限、相对误差限 1.1 例题 1.2 解题套路 1.3 题解 二、敛散性、收敛速度 2.1 例题 2.2 解题套路 2.3 题解 三、牛顿迭代法 3.1 例题 3.2 解题套路 3.3 题解 四、割线法 4.1 例题 4.2 解题套路 ​4.3 题解 五、列主元素消去法 5.1 例题 5.…

Ansible——playbook编写

一、简介 1.什么是playbook Ansible Playbook 是设定自动化任务的一种蓝图&#xff0c;可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。 Ansible Playbook 本质上是一些框架&#xff0c;是一些预先编…

多线程基础知识(全面):创建线程、线程状态如何变化、wait()、notify()、sleep()、停止线程

文章目录 一、创建线程的四种方式1.1 继承Thread类1.2 实现runnable接口1.3 实现Callable接口1.4 线程池创建线程1.5 补充&#xff1a;runnable、callable都可以创建线程&#xff0c;有什么区别&#xff1b;run()和 start()有什么区别 二、线程包括哪些状态、状态之间如何变化2…

书单 | 6本AI领域名家名作,大模型时代,趁风而起!

–文末赠书– 大模型时代&#xff0c;想抓住风口吗&#xff1f; 本期书单就来分享6本AI领域名家名作&#xff0c;给大家把大模型时代那些事儿讲清楚&#xff01; 放心&#xff0c;入门的同学也可以从最基础的学起~~ 快来看看有哪些书吧…… 01 ▊《多模态大模型&#xff1…

PCIe下一代线缆标准CopprLink发布

作为业界广泛采用的高速串行点对点互联标准&#xff0c;PCIe自诞生以来历经多次迭代升级&#xff0c;现已成为CPU、GPU、FPGA、SSD等计算设备间不可或缺的互连桥梁。PCIe 7.0标准更是将数据传输速率提升至令人惊叹的32 GB/s&#xff08;每通道&#xff09;。 然而&#xff0c;面…

PPT弹簧画法

1. 插入两个圆 2. 使用Lvyhtools的形状-位置分布-圆形阵列 注意:阵列中心要点击文字后才能选择 3. 删除中心的圆,使用Onekey10的原位复制,可以多次; 4. 右击图像选择设置形状格式-线条(无线条) 5. 找到第二个选项,深度设置大小为0.3-0.6磅 6. 再次到Onekey10界面,选择…

深度解析DPO及其变体在多种任务上的表现如何,该如何选择

深度学习自然语言处理 原创作者&#xff1a;wkk 单位&#xff1a;亚利桑那州立大学paper&#xff1a;Insights into Alignment:Evaluating DPO and its Variants Across Multiple TasksLink&#xff1a;https://arxiv.org/pdf/2404.14723 今天&#xff0c;我要带大家深入了解一…

VueReal将在Display Week上推出microLED创新技术

公司展示将microLED从晶圆转移到背板的“改变游戏规则”的平台 在2024年显示周&#xff08;5月12日至16日在圣何塞举行&#xff09;上&#xff0c;VueReal将展示其MicroSolid打印平台&#xff0c;并展示其在推动微LED显示器和其他微型半导体器件在智能手机显示器和AR/VR解决方案…

Crowd counting 系列NO.2—MCNN

声明&#xff1a;博客是用latex写的&#xff0c;所以直接用图片来展示吧&#xff0c;效果是一样的。下载资源网上都很容易搜到&#xff0c;如需下载资源&#xff0c;请留言。

(动画详解)LeetCode20.有效的括号

题目描述 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 解题思路 栈的方法 遍历整个字符串 当检测到左括号的时候&#xff0c;就让左括号入栈 当检测到右括号的时候&#xff0c;就让左括号出栈与右括号对比 如果相等则继续比较直到结束&#xff0c;如果不相等…

【C++历练之路】STL中的哈希——手搓哈希底层逻辑

W...Y的主页 &#x1f495; 代码仓库分享 &#x1f60a; 前言&#xff1a; "hash"通常指的是哈希&#xff0c;它是一种将数据&#xff08;如字符串或者数字&#xff09;转换为一个固定长度的数值&#xff08;通常是整数&#xff09;的方法。哈希函数能够将任意长度…