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

你好,我是山茶,一个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-…

JavaScript检测数组类型

在JavaScript中,可以使用typeof操作符检测一个变量的数据类型。对于数组类型来说,typeof操作符返回的结果是"object"。 虽然typeof操作符可以用来检测数组类型,但它并不能区分数组和其他对象类型。为了准确地检测一个变量是否是数…

Verilog 触发器状态机语言描述-条件语句

条件语句 调试探针条件 调试探针条件可在双向或三向分支条件语句中使用。每个调试探针条件都占用调试探针连接到的 ILA 的 PROBE 端口上 的 1 个触发器比较器。 重要提示 ! 每个 PROBE 端口都可包含 1 到 16 个触发器比较器 ( 在编译时配置 &a…

MySQL调优-01反范式化表设计

MySQL调优-01反范式化表设计 数据库设计三范式 第一范式(1NF)。确保数据库表的每一列都是不可分割的原子数据项,即列中不可包含数组、记录等非原子数据项;确保表中没有重复的属性或列,每个属性只出现一次,…

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

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

Hutool 只复制不为空的属性

在使用 Hutool 的工具类进行复制时,有时候需要只复制不为空的属性。 比如在修改时,先把数据库中的数据查出来: SysArea sysArea getById(dto.getId());此时再以传入值复制到数据库表对象中,但如果传入值中有属性为null&#xf…

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

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

力扣:最大子数组和

在这里和大家分享一下关于最大子数组和、最小子数组和的算法题。 其中最大子数组在力扣刷题中遇到,最小子数组和在笔试中遇到,虽然一个为最大,一个为最小,但是它们的思路完全一样,而且在写法上也是对称的,…

Termux安装某个Python包时只能pip install但是又出错的解决办法

在安装pandas时用pkg search pandas是没有内容的,这时候只能用pip install pandas安装,但是途中一定会报错,导致安装失败,解决办法是先安装tur-repo,即 pkg install tur-repo 然后搜索pandas,有pkg安装包…

Thinkphp5 中常见的session 操作方法

在 ThinkPHP 框架中,session 是用于在多个页面或请求之间存储用户信息的机制。以下是在 ThinkPHP 中进行 session 常见操作的一些示例: 启动 Session 在 ThinkPHP 中,通常不需要手动启动 Session,因为框架会在应用启动时自动处理…

在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…

LeetCode 35.搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入…

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

目录 一、绝对误差限、相对误差限 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.…

|Python新手小白中级教程|第二十六章:面向对象编程(示例操作)(2)

文章目录 前言实操一、分析游戏《外星人入侵》的初始化代码实操二、自制游戏的初始化数据总结 前言 大家好&#xff0c;我是你们的BoBo仔吖&#xff0c;今天我们学习的东东是续上节课的内容。上节课我们初识对象编程操作class类&#xff0c;今天我们就来实操 实操一、分析游戏…

Ansible——playbook编写

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