后端性能测试的类型
目录
性能测试的类型
负载测试(load testing)
压力测试(Stress Testing)
可扩展性测试(
尖峰测试(Spike Testing)
耐久性测试(Endurance Testing)
并发测试(Concurrency Testing)
容量测试(Capacity Testing)
资料获取方法
性能测试的类型
性能测试:确定软件产品性能的测试。
负载测试(load testing)
负载测试的重点是系统处理由并发用户或进程的可控数量产生的事务请求所导致的不断增加的预期实际负载的能力。
负载测试用于评估组件或系统在不同负载下的行为,通常在预期的低使用率、典型使用率和峰值使用率之间进行。
负载测试几乎总是基于一些真实的组织条件。负载测试是所有性能测试的组成部分,因为它是其他性能测试类型的基础。负载测试的基础(运行和最终负载曲线)通常被称为volumetrics,并根据以下问题确定:
-
Who
谁是用户?是否有不同的用户组访问该负载测试的组件或系统?这些用户可能是执行不同任务或拥有不同访问权限的不同用户组。 -
What
用户正在执行哪些业务流程?
以在线零售网站为例。业务流程代表了用户想要执行的一些端到端的操作(例如,购买一本关于性能测试的书)。这个端到端的流程可以被分解成一系列可重用的任务(登录、搜索书籍、添加到购物篮、购买和注销),这些任务可以代表系统中的服务或组件。每个可重复使用的任务都可以分解成用户将要执行的一系列步骤(打开浏览器,浏览零售商网站,输入用户名和密码,点击登录按钮)。
这些业务流程中的每一个都代表了负载的定义,或负载的一部分,将在环境中执行代码来创建实际的负载。性能测试的部分技巧在于观察 "是什么",并了解该业务流程如何在被测系统中运行。例如性能测试计划需要创建80个独立的报告来测试ERP系统的商业智能报告。但是,当从后端服务器、数据库和服务进行测试时,发现80个脚本可以减少到7个,每个报告都可以通过输入数据进行管理(从而节省了性能工程师大量的工作)。
- Where
用户在哪里?用户是集中访问系统(如企业办公室)还是分散访问系统(如用户在家工作)?使用地理定位将负载重定向到不同的服务器、服务、组件或业务流程。
- When
负载测试在一天中的什么时间进行?
压力测试(Stress Testing)
压力测试的重点是系统或组件处理峰值负载的能力,这些负载达到或超过了其预期或指定工作负载的极限。压力测试也用于评估系统处理资源可用性降低的能力,如可访问的计算能力、可用带宽和内存。
压力测试是一种有用的类型,因为它有助于识别:被测系统的最大容量,组件或系统的哪个部分首先失效
压力测试需要注意的一点是,它可以无限期地进行下去。一旦确定并报告了最大容量,就存在替代方案:
压力测试可以从负载定义的角度(用户执行与时间行为相关的业务流程),简单地告知利益相关者最大容量。可能不需要采取进一步的措施--我们知道当负载达到X时,系统将变得不稳定。
压力测试通知开发人员和/或管理员,如果负载达到最大容量(资源利用率),哪个组件将失效。因此,如果负载达到X,出现故障的部件就是Y。
然后,可以采取进一步措施修复最初出现故障的组件,从而可能提高最大容量。如果时间和资金允许,测试可以继续到新的故障点,因为总有另一个组件会在负载下发生故障。
可扩展性测试(
scalability testing)
可扩展性测试的重点是系统满足未来效率要求的能力,这些效率要求可能超出目前的要求。这些测试的目的是确定系统的增长能力(例如,更多的用户、更大的数据存储量),而不违反当前指定的性能要求或失败。一旦知道了可扩展性的极限,就可以设置阈值,并在生产中进行监控,以便对可能出现的问题发出警告。此外,还可通过适当数量的硬件调整生产环境。
可扩展性:组件或系统可根据容量变化进行调整的程度。
可扩展性测试
确定软件产品可扩展性的测试。
-可扩展性测试
一个常见的问题是:"系统是可扩展的吗?
请记住,答案总是肯定的!我们总是可以增加系统、服务或组件的负载,并提高处理负载的能力。
之前我们问过:"负载对系统/服务/代码在时间行为、资源利用率和容量方面的可扩展性有多大影响?
通过可扩展性测试,我们现在回答了一个不同的问题。与其问 "系统/服务是否具有可扩展性?",不如问 "系统/服务的可扩展性如何?
"系统/服务的可扩展性如何?
可扩展性测试一般有两种类型--水平和垂直
横向可扩展性是在系统中增加更多相同规格的机器/设备/虚拟机,而纵向可扩展性则是将现有的机器/设备/虚拟机替换成更大、功能更强的机器,或为虚拟机/设备分配更多的CPU和/或内存。这两种方法各有利弊。
在这两种情况下,通常首先收集时间行为、资源利用率和单台服务器的容量。然后可以决定是测量横向可扩展性(添加额外的服务器/虚拟机/虚拟机)还是纵向可扩展性(增加单台服务器的资源),以提高系统/服务处理更高容量负载的整体能力。
需要始终明确的是,可扩展性总是有上限的。系统或服务可能具有可扩展性,但将必要的硬件/软件许可/基础设施扩展到所需水平的成本可能过于昂贵。系统或服务可能变得不稳定,或者增加容量对整体性能没有任何好处。
尖峰测试(Spike Testing)
尖峰测试主要是测试系统对突如其来的峰值负载做出正确响应并在其后恢复到稳定状态的能力。
尖峰测试: 测试确定系统从突发的峰值负载中恢复到稳定状态的能力。
尖峰负载测试已成为一种流行的测试方法,用于考察负载在短时间内超过规定峰值时系统的性能。这些峰值可能是
单个事件
耐久性测试(Endurance Testing)
耐久性测试的重点是系统在特定时间段内的稳定性。此类测试验证是否存在资源容量问题(如内存泄漏、数据库连接、线程池),这些问题最终可能会降低性能和/或导致断点故障。
耐久性测试:在系统运行环境下,确定系统在相当长的一段时间内承受重大负载的稳定性的测试。
耐久性测试也称为浸泡测试。负载测试和耐久性测试的区别主要在于测试执行的时间长短。两者在设计上具有相似的负载曲线。不同之处在于,负载测试可能只执行一小时;而耐久性测试通常会执行数小时、数天,甚至在极端情况下执行数周。耐久性测试的挑战在于获得足够的测试数据来长时间执行测试,并有足够的存储空间来捕获测试结果。耐久性测试变得更加重要,因为许多组织每周7天、每天24小时在线,这意味着几乎没有时间停机或 "重启服务器"。
并发测试(Concurrency Testing)
并发测试的重点是特定操作同时发生时(如大量用户同时登录)的影响。众所周知,并发问题很难发现和重现,特别是当问题发生在测试几乎无法控制的环境中,如生产环境。
并发性: 组件或系统同时执行多个独立的线程。
并发的概念是性能测试的基石。即使单个用户或事务产生负载,该负载也可能不足以真正锻炼被测系统。通过并发性,性能工程师可以定义有多少业务流程、任务甚至步骤同时发生。
一般可考虑三种并发类型。例如,如果被测系统是一个在线零售网站,许多用户可能同时在网站上执行一系列功能。在组件层面,测试登录组件时可能需要同时进行多次登录尝试。细分如下
- 应用程序并发性
可能有许多用户使用网站执行不同的业务流程(搜索、购买、检查订单状态、创建用户帐户等)。
- 业务流程并发
较少数量的用户可能同时执行一个业务流程(搜索网站)。
- 事务并发
用户子集同时执行一个业务流程(搜索),所有用户同时点击搜索按钮。-
也可能出现意外情况,这些情况更多属于故障转移和灾难恢复的范畴,但仍需要进行性能测试。并发测试可能会在高峰负载时同时运行批处理,或在繁忙时开始计划备份。
容量测试(Capacity Testing)
容量测试确定给定系统将支持多少用户和/或事务,并仍然满足既定的性能目标。这些目标也可能与事务产生的数据量有关。
容量:组件或系统参数的最大限制满足要求的程度。
容量测试类似于其他已经确定的测试类型(压力和尖峰测试)。容量测试和压力测试的区别在于,压力测试延伸到预定的故障点(例如,吞吐量或资源利用率的限制,或超过处理时间)。容量测试仍可能超出峰值负载,但其目的是实现性能测试目标(例如,系统将支持多少用户),而不是确定故障原因。容量测试的重点是达到规定的性能水平,而不是试图导致故障(压力)或 "看看会发生什么"(峰值)。通常情况下,容量测试的负载/性能增长与组织需求有关。例如,组织可能有一个全球增长率,定义为每年4%的新客户增长。容量测试可以帮助回答系统支持这种逐年增长的能力问题。
资料获取方法
【留言777】
各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~
相关文章:

后端性能测试的类型
目录 性能测试的类型 负载测试(load testing) 压力测试(Stress Testing) 可扩展性测试( 尖峰测试(Spike Testing) 耐久性测试(Endurance Testing) 并发测试(Concurrency Testing) 容量测试(Capacity Testing) 资料获取方法 性能测试的类型 性能测试:确定软…...

关闭Tomcat的日志输出
要关闭Tomcat的日志输出,您可以在Tomcat的配置文件中进行相应的调整。具体地说,您可以通过修改logging.properties文件来关闭Tomcat的日志输出。这个文件通常位于Tomcat的conf目录下。请按照以下步骤进行: 打开Tomcat安装目录,找…...

express 路由匹配和数据获取
express配置路由只需要通过app.method(url,func)来配置,其中url配置和其中的参数获取方法不同 直接写全路径 路由中允许存在. get请求传入的参数 router.get("/home", (req, res) > {res.status(200).send(req.query); });通过/home?a1会收到对象…...

62 | Python 操作 PDF
文章目录 Python 操作 PDF 教程1. 安装 PyPDF22. 读取 PDF 文件3. 创建 PDF 文件4. 修改 PDF 文件练习题1. 创建一个新的 PDF 文件,其中包含两个页面。第一个页面包含一段文本和一张图片,第二个页面包含一个表格。2. 打开练习题中创建的 PDF 文件,并将第一个页面中的文本修改…...

[SQL挖掘机] - 左连接: left join
介绍: 左连接是一种多表连接方式,它以左侧的表为基础,并返回满足连接条件的匹配行以及左侧表中的所有行,即使右侧的表中没有匹配的行。左连接将左表的每一行与右表进行比较,并根据连接条件返回结果集。 左连接的工作原理如下&am…...

Android 之 使用 SoundPool 播放音效
本节引言: 第九章给大家带来的是Android中的多媒体开发,与其说是多媒体开发还不如是多媒体相关API的 的使用,说下实际开发中我们做了一些和多媒体搭边的东西:拍照,录音,播放音乐,播放视频... 嗯…...

防火墙的ALG、NAT、双机热备知识点详解
具体的NAT和双机热备实验请到:NAT与双机热备实验 目录 1、ALG 2、NAT ALG 3、NAT域间双向转换 4、NAT域内双向转换 5、双出口NAT 6、防火墙的双机热备 解决方案1:VGMP 6.1 双机热备份技术产生的背景: 6.2 VRRP在多区域防火墙组网中的…...

传染病模型
title: 传染病模型 date: 2023-7-24 10:55:00 updated: 2023-7-24 10:55:00 tags: 算法数学建模传染病模型matlab categories: 数学建模 传染病模型中的符号表示 SI模型(艾滋传染模型) %% 直接求微分方程的解析解 dsolve(Dx1 -0.1 * x1 * x2 / 1000, D…...

一百三十七、Hive——HQL运行报错(持续更新中)
一、timestamp字段与int字段相加 (一)场景 change_time字段是timestamp字段,代表一个红绿灯周期的开始时间(先是绿灯、再是黄灯、最后红灯),而green是int字段,代表绿灯的秒数,现在…...

Spring Boot配置加密实践
Spring Boot配置加密实践 使用Java技术栈的时候,Spring Boot几乎已经成为了标配。Spring Boot帮助我们简化了各种技术的整合,我们只需要在application.yml配置文件中增加一点点的配置即可。 虽然Spring Boot简化了我们的工作,但是也隐藏了底…...

SwiftUI-基础
应用入口 Main函数与App结构体的绑定,遵循App协议 main struct BaseApp: App {var body: some Scene {WindowGroup {ContentView()}} } 兼容UIApplicationDelegate main struct BasicApp: App {UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate…...

vue。cli怎么使用自定义组件,会有哪些问题
在Vue CLI中使用自定义组件的步骤如下: 通过仔细检查以上问题并按照正确的步骤使用自定义组件,大多数问题都可以解决。此外,查看开发者工具的控制台输出和Vue警告信息,可以帮助你进一步调试和解决可能出现的问题 创建自定义组件&a…...

linux----vim的使用
vi和vim是Linux下的一个文本编辑工具,最小化安装只有vi vim,需要额外安装,比vi更强大一些 # vim 操作文件,有三种模式:普通模式,编辑模式,命令模式 -vim 文件名刚进来----》普通模式--》只…...

95. Python基础教程:异常处理try...except语句
【目录】 文章目录 1. try...except语法解析2. 程序异常3. except的4种使用方式3.1 单独的except3.2 except 异常名称3.3 except 异常类型 as 别名3.4 except (异常类型1,异常类型2) as 别名 4. 总结 【正文】 1. try…except语法解析 try[traɪ]:尝试。 except[…...

详解rocketMq通信模块升级构想
本文从开发者的角度深入解析了基于netty的通信模块, 并通过简易扩展实现微服务化通信工具雏形, 适合于想要了解netty通信框架的使用案例, 想了解中间件通信模块设计, 以及微服务通信底层架构的同学。希望此文能给大家带来通信模块架构灵感。 概述 网络通信是很常见的需求&#…...

【BOOST程序库】对字符串的处理
基本概念这里不解释了,代码中详细解释了BOOST程序库中对于字符串每一个方法的详细用法: 注意:这里每实践一个方法,都将上面实践过的方法进行了注释,如果全部取消注释,会出现重命名的问题。 #include <…...

(学习笔记-内存管理)虚拟内存
单片机是没有操作系统的,每次写完代码,都需要借助工具把程序烧录进去,这样程序才能跑起来。另外,单片机的CPU是直接操作内存的[物理地址]。 在这种情况下,要想在内存中同时运行两个程序是不可能的。如果第一个程序在 2…...

JVM理论(七)性能监控与调优
概述 性能优化的步骤 性能监控:就是通过以非强行或入侵方式收集或查看应用程序运行状态,包括如下问题 GC频繁CPU过载过高OOM内存泄漏死锁程序响应时间较长性能分析:通常在系统测试环境或者开发环境进行分析 通过查看程序日志以及GC日志,或者运用命令行工…...

复现YOLOv8改进最新MPDIoU:有效和准确的边界盒回归的损失,打败G/E/CIoU,效果明显!!!
MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression 论文简介MPDIoU核心设计思路论文方法实验部分加入YOLOv5代码论文地址:https://arxiv.org/pdf/2307.07662.pdf 论文简介 边界盒回归(Bounding box regression, BBR)广泛应用于目标检测和实例分割,是目标…...

LT6911C 是一款HDMI 1.4到双端口MIPIDSI/CSI或者LVDS加音频的一款高性能芯片
LT6911C 1.描述: LT6911C是一款高性能的HDMI1.4到MIPIDSI/CSI/LVDS芯片,用于VR/智能手机/显示器应用程序。对于MIPIDSI/CSI输出,LT6911C具有可配置的单端口或双端口MIPIDSI/CSI,具有1个高速时钟通道和1个~4个高速数据通道&#…...

vue动态引入静态资源
vue动态引入静态资源 静态资源位置(../../assets/piecture/page404.jpg)或者(/assets/piecture/page404.jpg) 错误引入方式 错误引入方式(一) <template><div><img :src"../../asset…...

perl 强制覆盖拷贝文件
如果你想在Perl中进行文件拷贝时强制覆盖目标文件(如果目标文件已经存在),你可以使用标准模块File::Copy提供的cp函数,它允许你指定是否覆盖目标文件。 以下是一个示例,展示了如何在Perl中进行强制覆盖拷贝文件&#…...

C语言每日一题之整数求二进制1的个数
今天分享一道题目,用三种方法来求解 二进制1的个数 方法1 我们的十进制除10和取余数就可以得到我们每一位的数字,那我们的二进制也可 以 #include<stdio.h> int num_find_1(unsigned int n) {int count 0;while (n){if (1 n % 2){count;}n / 2…...

AcWing 4443.无限区域
原题链接:AcWing 4443.无限区域 题目来源:夏季每日一题2023 给定一个无限大的二维平面,设点 S 为该平面的中心点。 设经过点 S 的垂直方向的直线为 P,如果直线 P 是一个圆的切线,且切点恰好为点 S,那么&a…...

2D坐标系下的点的转换矩阵(平移、缩放、旋转、错切)
文章目录 1. 平移 (Translation)2. 缩放 (Scaling)3. 旋转 (Rotation)4. 错切 (Shearing)5. 镜像 (Reflection) 1. 平移 (Translation)…...

【Rabbitmq】报错:ERROR CachingConnectionFactory Channel shutdown: channel error;
报错内容 ERROR CachingConnectionFactory Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code406, reply-textPRECONDITION_FAILED - unknown delivery tag 1, class-id60, method-id80) 原因 默认是自动ack,然后你代码…...

el-table组件的el-table-column电脑端使用fixed属性固定,移动端不使用固定,怎么实现?
要在电脑端使用 fixed 固定列,而在移动端不使用,可以使用 CSS 媒体查询结合 Vue 的动态绑定来实现。以下是一个示例代码: <template><el-table><el-table-columnprop"name"label"Name":fixed"isDesk…...

RocketMQ 行业分享
5.0的架构发生了重大调整,添加了一层rocketmq-proxy,可以通过grpc的方式接入。 参考 https://juejin.cn/post/7199413150973984827...

物联网场景中的边缘计算解决方案有哪些?
在物联网场景中,边缘计算是一种重要的解决方案,用于在物联网设备和云端之间进行实时数据处理、分析和决策。HiWoo Box作为工业边缘网关设备,具备边缘计算能力,包括单点公式计算、Python脚本编程以及规则引擎,它为物联网…...

【C++ 进阶】学习导论:C/C++ 进阶学习路线、大纲与目标
目录 一、C 学习路线 二、C 课程大纲与学习目标 (1)第一阶段:C 语言基础 (2)第二阶段:C 高级编程 (3)第三阶段:C 核心编程与桌面应用开发 (4…...