后端性能测试的类型

目录

性能测试的类型

负载测试(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.mzph.cn/news/13249.shtml

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

相关文章

【Linux下6818开发板(ARM)】硬件空间挂载

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

【Maven】Maven配置国内镜像

文章目录 1. 配置maven的settings.xml文件1.1. 先把镜像mirror配置好1.2. 再把仓库配置好 2. 在idea中引用3. 参考资料 网上配置maven国内镜像的文章很多,为什么选择我,原因是:一次配置得永生、仓库覆盖广、仓库覆盖全面、作者自用的配置。 1…

JavaSE - Sting类

目录 一. 字符串的定义 二. String类中的常用方法 1. 比较两个字符串是否相等(返回值是boolean类型) 2. 比较两个字符串的大小(返回值是int类型) 3. 字符串查找 (1)s1.charAt(index) index:下标&…

基于RK3588+AI的边缘计算算法方案:智慧园区、智慧社区、智慧物流

RK3588 AI 边缘计算主板规格书简介 关于本文档 本文档详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格,以及详细的硬件接口设计参考说明,使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通&am…

Python 进阶(四):日期和时间(time、datetime、calendar 模块)

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 1. time模块1.1 获取当前时间1.2 时间休眠1.3 格式化时间 2. datetime模块2.1 获取当前…

EXCEL数据自动web网页查询----高效工作,做个监工

目的 自动将excel将数据填充到web网页,将反馈的数据粘贴到excel表 准备 24KB的鼠标连点器软件(文末附链接)、Excel 宏模块 优势 不需要编程、web验证、爬虫等风险提示。轻量、稳定、安全。 缺点 效率没那么快 演示 宏环境 ht…

Go语法入门 + 项目实战

👂 Take me Hand Acoustic - Ccile Corbel - 单曲 - 网易云音乐 第3个小项目有问题,不能在Windows下跑,懒得去搜Linux上怎么跑了,已经落下进度了.... 目录 😳前言 🍉Go两小时 🔑小项目实战 …

《Kubernetes故障篇:unable to retrieve OCI runtime error》

一、背景信息 1、环境信息如下: 操作系统K8S版本containerd版本Centos7.6v1.24.12v1.6.12 2、报错信息如下: Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: …

【SAP Abap】记录一次SAP长文本内容通过Web页面完整显示的应用

【SAP Abap】记录一次SAP长文本内容通过Web页面完整显示的应用 1、业务背景2、实现效果3、开发代码3.1、拼接html3.2、显示html3.3、ALV导出Excel 1、业务背景 业务在销售订单中,通过长文本描述,记录了一些生产备注信息,如生产标准、客户要求…

CentOS7安装jenkins

一、安装相关依赖 sudo yum install -y wget sudo yum install -y fontconfig java-11-openjdk二、安装Jenkins 可以查看官网的安装方式 安装官网步骤 先导入jenkins yum 源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo…

索引的数据结构

索引的数据结构 部分资料来自B站尚硅谷-宋红康老师 1. 为什么使用索引 使用索引是为了加快数据库的查询速度和提高数据库的性能。索引是数据库表中的一种数据结构,它可以帮助数据库快速定位并检索所需的数据。 当数据库表中的数据量较大时,如果没有索…

ELK + Fliebeat + Kafka日志系统

参考: ELKFilebeatKafka分布式日志管理平台搭建_51CTO博客_elk 搭建 ELK 日志分析系统概述及部署(上)-阿里云开发者社区 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。…

Verilog语法学习——LV6_多功能数据处理器

LV6_多功能数据处理器 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 描述 根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a…

解决使用@Field注解配置分词器失效问题(Spring Data Elasticsearch)

问题复现:插入数据时,实体类配置的Field注解没有生效 实体类: package cn.aopmin.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Id; import…

浅谈深度神经网络

Deep neural networks are completely flexible by design, and there really are no fixed rules when it comes to model architecture. -- David Foster 前言 神经网络 (neural network) 受到人脑的启发,可模仿生物神经元相互传递信号。神经网络就是由神经元组成…

docker配置文件挂载(容器数据管理)

目录 数据卷(容器数据管理)什么是数据卷数据集操作命令创建和查看数据卷挂载数据卷案例案例-给nginx挂载数据卷案例-给MySQL挂载本地目录 总结 数据卷(容器数据管理) 在之前的nginx案例中,修改nginx的html页面时&#…

如何利用Requestly提升前端开发与测试的效率

痛点 B站最牛的Python接口自动化测试进阶教程合集(真实企业项目实战) 前端测试 在进行前端页面开发或者测试的时候,我们会遇到这一类场景: 在开发阶段,前端想通过调用真实的接口返回响应在开发或者生产阶段需要验证前…

热备盘激活失败导致raid5阵列崩溃的服务器数据恢复案例

服务器数据恢复环境: 一台Linux Redhat操作系统服务器上有一组由5块硬盘组建的raid5阵列,包含一块热备盘。上层部署一个OA系统和Oracle数据库。 服务器故障: raid5阵列中的1块磁盘离线,硬盘离线却没有激活热备盘,直到…

IntelliJ IDEA 2023.2 主要更新了什么?(图文版)

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spring 6【数据校验Validation、JSR 303 和 Hibernate 实现】(十三)-全面详解(学习总结---从入门到深化)

目录 数据校验Validation 2.JSR 303 和 Hibernate 实现 数据校验Validation 1.数据校验介绍 数据校验分为客户端数据校验和服务端数据校验。都是为了保证数据完整性的。 客户端数据校验直接使用客户端脚本校验即可。例如在B/S模型项目中,可以选择使用JavaScript…