后端性能测试的类型

news2024/9/25 9:38:20

目录

性能测试的类型

负载测试(load testing)

压力测试(Stress Testing)

可扩展性测试(

尖峰测试(Spike Testing)

耐久性测试(Endurance Testing)

并发测试(Concurrency Testing)

容量测试(Capacity Testing)

资料获取方法


性能测试的类型

性能测试:确定软件产品性能的测试。

负载测试(load testing)

负载测试的重点是系统处理由并发用户或进程的可控数量产生的事务请求所导致的不断增加的预期实际负载的能力。

负载测试用于评估组件或系统在不同负载下的行为,通常在预期的低使用率、典型使用率和峰值使用率之间进行。

负载测试几乎总是基于一些真实的组织条件。负载测试是所有性能测试的组成部分,因为它是其他性能测试类型的基础。负载测试的基础(运行和最终负载曲线)通常被称为volumetrics,并根据以下问题确定:

  • Who
    谁是用户?是否有不同的用户组访问该负载测试的组件或系统?这些用户可能是执行不同任务或拥有不同访问权限的不同用户组。

  • What

用户正在执行哪些业务流程?

image

以在线零售网站为例。业务流程代表了用户想要执行的一些端到端的操作(例如,购买一本关于性能测试的书)。这个端到端的流程可以被分解成一系列可重用的任务(登录、搜索书籍、添加到购物篮、购买和注销),这些任务可以代表系统中的服务或组件。每个可重复使用的任务都可以分解成用户将要执行的一系列步骤(打开浏览器,浏览零售商网站,输入用户名和密码,点击登录按钮)。

这些业务流程中的每一个都代表了负载的定义,或负载的一部分,将在环境中执行代码来创建实际的负载。性能测试的部分技巧在于观察 "是什么",并了解该业务流程如何在被测系统中运行。例如性能测试计划需要创建80个独立的报告来测试ERP系统的商业智能报告。但是,当从后端服务器、数据库和服务进行测试时,发现80个脚本可以减少到7个,每个报告都可以通过输入数据进行管理(从而节省了性能工程师大量的工作)。

  • Where

用户在哪里?用户是集中访问系统(如企业办公室)还是分散访问系统(如用户在家工作)?使用地理定位将负载重定向到不同的服务器、服务、组件或业务流程。

  • When

负载测试在一天中的什么时间进行?

image

压力测试(Stress Testing)

image

压力测试的重点是系统或组件处理峰值负载的能力,这些负载达到或超过了其预期或指定工作负载的极限。压力测试也用于评估系统处理资源可用性降低的能力,如可访问的计算能力、可用带宽和内存。

压力测试是一种有用的类型,因为它有助于识别:被测系统的最大容量,组件或系统的哪个部分首先失效

压力测试需要注意的一点是,它可以无限期地进行下去。一旦确定并报告了最大容量,就存在替代方案:
压力测试可以从负载定义的角度(用户执行与时间行为相关的业务流程),简单地告知利益相关者最大容量。可能不需要采取进一步的措施--我们知道当负载达到X时,系统将变得不稳定。

压力测试通知开发人员和/或管理员,如果负载达到最大容量(资源利用率),哪个组件将失效。因此,如果负载达到X,出现故障的部件就是Y。

然后,可以采取进一步措施修复最初出现故障的组件,从而可能提高最大容量。如果时间和资金允许,测试可以继续到新的故障点,因为总有另一个组件会在负载下发生故障。

可扩展性测试(

scalability testing)

image

可扩展性测试的重点是系统满足未来效率要求的能力,这些效率要求可能超出目前的要求。这些测试的目的是确定系统的增长能力(例如,更多的用户、更大的数据存储量),而不违反当前指定的性能要求或失败。一旦知道了可扩展性的极限,就可以设置阈值,并在生产中进行监控,以便对可能出现的问题发出警告。此外,还可通过适当数量的硬件调整生产环境。

可扩展性:组件或系统可根据容量变化进行调整的程度。

可扩展性测试
确定软件产品可扩展性的测试。

-可扩展性测试

一个常见的问题是:"系统是可扩展的吗?

请记住,答案总是肯定的!我们总是可以增加系统、服务或组件的负载,并提高处理负载的能力。

之前我们问过:"负载对系统/服务/代码在时间行为、资源利用率和容量方面的可扩展性有多大影响?

通过可扩展性测试,我们现在回答了一个不同的问题。与其问 "系统/服务是否具有可扩展性?",不如问 "系统/服务的可扩展性如何?

"系统/服务的可扩展性如何?

可扩展性测试一般有两种类型--水平和垂直

横向可扩展性是在系统中增加更多相同规格的机器/设备/虚拟机,而纵向可扩展性则是将现有的机器/设备/虚拟机替换成更大、功能更强的机器,或为虚拟机/设备分配更多的CPU和/或内存。这两种方法各有利弊。

在这两种情况下,通常首先收集时间行为、资源利用率和单台服务器的容量。然后可以决定是测量横向可扩展性(添加额外的服务器/虚拟机/虚拟机)还是纵向可扩展性(增加单台服务器的资源),以提高系统/服务处理更高容量负载的整体能力。

需要始终明确的是,可扩展性总是有上限的。系统或服务可能具有可扩展性,但将必要的硬件/软件许可/基础设施扩展到所需水平的成本可能过于昂贵。系统或服务可能变得不稳定,或者增加容量对整体性能没有任何好处。

尖峰测试(Spike Testing)

image

尖峰测试主要是测试系统对突如其来的峰值负载做出正确响应并在其后恢复到稳定状态的能力。

尖峰测试: 测试确定系统从突发的峰值负载中恢复到稳定状态的能力。

尖峰负载测试已成为一种流行的测试方法,用于考察负载在短时间内超过规定峰值时系统的性能。这些峰值可能是
单个事件

耐久性测试(Endurance Testing)

耐久性测试的重点是系统在特定时间段内的稳定性。此类测试验证是否存在资源容量问题(如内存泄漏、数据库连接、线程池),这些问题最终可能会降低性能和/或导致断点故障。

耐久性测试:在系统运行环境下,确定系统在相当长的一段时间内承受重大负载的稳定性的测试。

耐久性测试也称为浸泡测试。负载测试和耐久性测试的区别主要在于测试执行的时间长短。两者在设计上具有相似的负载曲线。不同之处在于,负载测试可能只执行一小时;而耐久性测试通常会执行数小时、数天,甚至在极端情况下执行数周。耐久性测试的挑战在于获得足够的测试数据来长时间执行测试,并有足够的存储空间来捕获测试结果。耐久性测试变得更加重要,因为许多组织每周7天、每天24小时在线,这意味着几乎没有时间停机或 "重启服务器"。

并发测试(Concurrency Testing)

并发测试的重点是特定操作同时发生时(如大量用户同时登录)的影响。众所周知,并发问题很难发现和重现,特别是当问题发生在测试几乎无法控制的环境中,如生产环境。

并发性: 组件或系统同时执行多个独立的线程。

并发的概念是性能测试的基石。即使单个用户或事务产生负载,该负载也可能不足以真正锻炼被测系统。通过并发性,性能工程师可以定义有多少业务流程、任务甚至步骤同时发生。

一般可考虑三种并发类型。例如,如果被测系统是一个在线零售网站,许多用户可能同时在网站上执行一系列功能。在组件层面,测试登录组件时可能需要同时进行多次登录尝试。细分如下

  • 应用程序并发性

可能有许多用户使用网站执行不同的业务流程(搜索、购买、检查订单状态、创建用户帐户等)。

  • 业务流程并发

较少数量的用户可能同时执行一个业务流程(搜索网站)。

  • 事务并发

用户子集同时执行一个业务流程(搜索),所有用户同时点击搜索按钮。-

也可能出现意外情况,这些情况更多属于故障转移和灾难恢复的范畴,但仍需要进行性能测试。并发测试可能会在高峰负载时同时运行批处理,或在繁忙时开始计划备份。

容量测试(Capacity Testing)

容量测试确定给定系统将支持多少用户和/或事务,并仍然满足既定的性能目标。这些目标也可能与事务产生的数据量有关。

容量:组件或系统参数的最大限制满足要求的程度。

容量测试类似于其他已经确定的测试类型(压力和尖峰测试)。容量测试和压力测试的区别在于,压力测试延伸到预定的故障点(例如,吞吐量或资源利用率的限制,或超过处理时间)。容量测试仍可能超出峰值负载,但其目的是实现性能测试目标(例如,系统将支持多少用户),而不是确定故障原因。容量测试的重点是达到规定的性能水平,而不是试图导致故障(压力)或 "看看会发生什么"(峰值)。通常情况下,容量测试的负载/性能增长与组织需求有关。例如,组织可能有一个全球增长率,定义为每年4%的新客户增长。容量测试可以帮助回答系统支持这种逐年增长的能力问题。


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

QT:手动实现登录框

要求&#xff1a; 1、登录窗口更改标题、图标 2、设置固定尺寸、并给定一定的透明度 #include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {this->setFixedSize(800,650); //设置固定尺寸qDebug()<<this->windowT…

新一代分布式任务调度框架

概述 PowerJob是新一代分布式任务调度与计算框架&#xff0c;支持CRON、API、固定频率、固定延迟等调度策略&#xff0c;提供工作流来编排任务解决依赖关系&#xff0c;能让您轻松完成作业的调度与繁杂任务的分布式计算。 为什么选择PowerJob&#xff1f; 当前市面上流行的作…

盒式外观安装比例放大器

比例阀放大器是一种电子放大器&#xff0c;可以将微小的电信号放大成较大的电信号。比例阀放大器通常用于工业控制系统中&#xff0c;其特点是可以调节控制参数&#xff0c;从而可以控制系统的行为。比例阀放大器有板式、盒式、插头式和集成式四种类型&#xff0c;每种类型都有…

嵌入式Linux系统组成

嵌入式Linux系统的组成 文章目录 嵌入式Linux系统的组成一、发行版Linux系统VS嵌入式Linux系统二、嵌入式Linux系统架构一、发行版Linux系统VS嵌入式Linux系统 1.产品 发行版Linux系统产品:服务器、消费平板、消费手提电脑 嵌入式Linux系统产品:扫地机器人,小米机顶盒特定场…

「预告」飞凌嵌入式邀您相约第13届配电技术应用论坛

2023年8月3日~5日&#xff0c;第十三届配电技术应用论坛即将在浙江杭州举行&#xff0c;飞凌嵌入式受邀参加。 作为助力快速实现“双碳”目标和新型电力系统建设&#xff0c;加强“双碳”目标下的智能配电网技术研发布局的主要会议&#xff0c;第十三届配电技术应用论坛将从政…

无涯教程-jQuery - jQuery.getScript( url, callback )方法函数

jQuery.getScript(url&#xff0c;[callback])方法使用HTTP GET请求加载并执行JavaScript文件。 该方法返回XMLHttpRequest对象。 jQuery.getScript( url, [callback] ) - 语法 $.getScript( url, [callback] ) 这是此方法使用的所有参数的描述- url - 包含请求…

谁懂啊!这个教室神器居然轻松搞定课堂纪律

教育是人类社会发展进步的重要支柱&#xff0c;而教师则是这个伟大事业的奠基者。随着科技的飞速发展&#xff0c;我们正迎来教育领域全新的可能性。 在这个数字化时代&#xff0c;在线巡课系统成为了现代教育管理的一颗明星&#xff0c;为教育者提供了更加高效、精确的教学评估…

Redis复制 (replica)

是什么 官网地址&#xff1a;Redis replication | Redis 其实就是主从复制&#xff0c;Master以写为主&#xff0c;Slave以读为主&#xff0c;当master数据变化的时候&#xff0c;自动将新的数据异步同步到其它slave数据库。 能干嘛 读写分离容灾恢复数据备份水平扩容支撑高并…

无涯教程-jQuery - load( url, data, callback)方法函数

load(url&#xff0c;data&#xff0c;callback)方法从服务器加载数据&#xff0c;并将返回的HTML放入匹配的元素中。 load( url, [data], [callback] ) - 语法 [selector].load( url, [data], [callback] ) 这是此方法使用的所有参数的描述- url - 包含请求发送到…

不需要PS也能生成淘宝我的订单页面截图

不知道大家有没有遇到这样的情况&#xff1a;在发微博、发朋友圈或者写博客的时候&#xff0c;想要分享购物心得&#xff0c;但却苦恼于找不到虚拟淘宝订单截图&#xff1f;别担心&#xff0c;今天我就来教大家一个轻松又快捷的方法——使用淘宝订单生成器。 无需PS&#xff0c…

uni-app踩坑记

打包h5如何配置域名&#xff1a; 在manifest.json中配置域名 配置完成后无论是测试环境还是正式环境都带上/mobile/&#xff0c;否则会报错404 如何引入调试工具erada: 在默认的index.html中直接引入erada&#xff0c;页面样式会整个错乱&#xff0c;解决方案就是引入官方…

Ueditor 百度强大富文本Springboot 项目集成使用(包含上传文件和上传图片的功能使用)简单易懂,举一反三

Ueditor 百度强大富文本Springboot 项目集成使用 首先如果大家的富文本中不考虑图片或者附件的情况下&#xff0c;只考虑纯文本且排版的情况下我们可以直接让前端的vue来继承UEditor就可以啦。但是要让前端将那几个上传图片和附件的哪些功能给阉割掉&#xff01; 然后就是说如…

安装python需要多大内存,python下载安装包多大

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;安装python需要多大内存&#xff0c;python安装占多大空间&#xff0c;现在让我们一起来看看吧&#xff01; 1、pytorch包有多大 938.79MB。pytorch包有938.79MB&#xff0c;pytorch离线安装包是一个不错的学习资源&am…

【CMake保姆级教程】CMake图文安装教程

文章目录 一、CMake概况二、安装Ubuntu CMake三、简单的CMake实验如何使用CMake测试代码执行CMake 总结 一、CMake概况 CMake 是一个项目构建工具&#xff0c;并且是跨平台的。关于项目构建我们所熟知的还有Makefile&#xff08;通过 make 命令进行项目的构建&#xff09;&…

【Docker consul的容器服务更新与发现】

文章目录 一、Consul 的简介&#xff08;1&#xff09;什么是服务注册与发现&#xff08;2&#xff09;什么是consul 二、consul 部署1、consul服务器1. 建立 Consul 服务2. 查看集群信息3. 通过 http api 获取集群信息 2、registrator服务器1. 安装 Gliderlabs/Registrator2. …

AcWing 算法基础课二 数据结构 链表 栈 队列 并查集 哈希表

单链表. AcWing. 826.单链表 import java.util.Scanner; public class Main{static int[] e new int[100010];//结点i的值static int[] ne new int[100010];//结点i的next指针static int idx,head;//head是头结点&#xff0c;idx存当前已经用到了哪个点public static void i…

Cpp02 — 内联函数、auto关键字、范围for、nullptr

前言&#xff1a;本文章主要用于个人复习&#xff0c;追求简洁&#xff0c;感谢大家的参考、交流和搬运&#xff0c;后续可能会继续修改和完善。 因为是个人复习&#xff0c;会有部分压缩和省略。 一、内联函数 C语言为了减少小函数的栈帧开销&#xff0c;提供了宏函数&#x…

SpingBoot整合Swagger和Hibernate-Validate练习

需求&#xff1a;用SpingBootSwaggerHibernate-Validate集成一个demo&#xff0c;用Swagger查看Controller的接口文档。Swagger接口包括Controller的请求和返回&#xff0c;用Hibernate-Validate校验Controller的请求参数的合法性。目前只需要校验非空即可。 1.新建一个Springb…

python 将pdf文件转图片

有小伙伴问了怎么将 pdf文件转图片的问题&#xff0c;我百度了一波儿&#xff0c;搞了以下python代码给他封装成exe工具了。 中途打包踩了个坑&#xff0c;python进程池的问题&#xff0c;本地运行没啥问题&#xff0c;打包好的exe文件双击就会使电脑内存爆破卡死&#xff0c;…

IT行业有哪些工资高、又有前景的岗位?

“IT行业涵盖了广泛的职位和领域&#xff0c;其中一些职位包括软件工程师、系统管理员、数据库管理员、网络工程师、UI/UX设计师、移动应用开发者、项目经理、IT顾问和技术支持工程师等” ——高薪岗位 那么&#xff0c;岗位如此之多&#xff0c;如何选择学习方向呢&#xff1…