当前位置: 首页 > news >正文

压力测试详解

压力测试

压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端条件下的工作情况。

在软件工程中,压力测试也被称为耐力测试。在压力测试中,对AUT进行短时间的压力测试,以了解其承受能力。压力测试最突出的用途是确定系统或软件或硬件崩溃的极限。它还检查系统是否在极端条件下显示出有效的错误管理。

从网站复制5GB数据并粘贴到记事本中,会对正在测试的应用程序施加压力。记事本处于压力下,并给出“未响应”错误消息。

需要压力测试的场景

考虑下面的实时例子,我们可以发现压力测试的用法

  • 在节日期间,在线购物网站可能会迎来流量高峰,或者宣布打折。
  • 当一个博客在一家主要报纸上被提及时,它的流量就会突然激增。

必须进行压力测试以适应这种异常的流量峰值。未能适应这种突然的流量可能会导致收入和声誉的损失。

压力测试也非常有价值,原因如下:

  • 检查系统是否处于异常状态。
  • 当系统处于压力下时显示适当的错误消息。
  • 系统在极端条件下的故障可能导致巨大的收入损失
  • 最好通过执行压力测试来为极端条件做好准备。

压力测试的目标

压力测试的目标是分析系统发生故障后的行为。为了使压力测试成功,系统在极端条件下应该显示适当的错误消息。

为了进行压力测试,有时可能会使用大量的数据集,这些数据集可能在压力测试过程中丢失。测试人员在进行压力测试时不应该丢失这些与安全性相关的数据。

压力测试的主要目的是确保系统在故障后能够恢复,这称为可恢复性。

负载测试Vs压力测试

负载测试压力测试
负载测试是测试系统在正常工作负载条件下的行为,它只是用实际工作负载进行测试或模拟。压力测试是测试系统在极端条件下的行为,一直进行到系统故障为止。
负载测试不会破坏系统压力测试试图通过测试压倒性的数据或资源来破坏系统。

压力测试的类型

以下是压力测试的类型,解释如下:

分布式压力测试

在分布式客户端-服务器系统中,测试是从服务器跨所有客户机完成的。压力服务器的作用是向所有压力客户端分发一组压力测试,并跟踪客户端的状态。客户端与服务器联系后,服务器添加客户端名称,并开始发送数据进行测试。

同时,客户端机器发送与服务器连接的信号或心跳。如果服务器没有从客户端机器接收到任何信号,则需要进一步研究以进行调试。从图中可以看出,一个服务器可以连接2个客户端(Client1和Client2),但它不能从客户端3和4发送或接收信号。

夜间运行是运行这些压力测试场景的最佳选择。大型服务器群需要一种更有效的方法来确定哪些计算机发生了需要调查的压力故障。

应用程序压力测试

此测试集中于发现与应用程序中的数据锁定和阻塞、网络问题和性能瓶颈相关的缺陷。

事务性压力测试

它对两个或多个应用程序之间的一个或多个事务进行压力测试。用于系统的微调和优化。

系统压力测试

这是集成的压力测试,可以跨运行在同一服务器上的多个系统进行测试。它用于发现一个应用程序数据阻塞另一个应用程序的缺陷。

探索性压力测试

这是压力测试的一种类型,用于测试具有不寻常参数或在真实场景中不太可能发生的条件的系统。它用于在意想不到的场景中发现缺陷,例如

  • 大量用户同时登录
  • 如果病毒扫描程序在所有计算机中同时启动
  • 如果从网站访问数据库时,数据库已离线,
  • 当大量数据同时被插入数据库时

如何进行压力测试?

压力测试过程可分为5个主要步骤:

步骤1)计划压力测试:在这里您收集系统数据,分析系统,定义压力测试目标

步骤2)创建自动化脚本:在这个阶段,您创建压力测试自动化脚本,为压力场景生成测试数据。

步骤3)脚本执行:在这个阶段,您运行压力测试自动化脚本并存储压力结果。

步骤4)结果分析:在此阶段,您将分析压力测试结果并识别瓶颈。

步骤5)调整和优化:在这个阶段,你微调系统,改变配置,优化代码以达到预期的基准。

最后,再次运行整个周期,以确定调整是否产生了所需的结果。例如,为了实现性能目标,必须进行3到4个压力测试周期是很正常的

压力测试推荐的工具

LoadRunner

来自HP的LoadRunner是一个广泛使用的负载测试工具。由Loadrunner形成的负载测试结果被视为基准。

Jmeter

Jmeter是一个开源的测试工具。它是一个用于压力和性能测试的纯Java应用程序。Jmeter旨在涵盖负载、功能、压力等类型的测试。它需要JDK 5或更高版本才能运行。

Stress Tester

该工具提供了对web应用程序性能的广泛分析,以图形格式提供结果,并且非常易于使用。不需要高级脚本,并提供良好的投资回报。

Neo load

这是市场上用于测试web和移动应用程序的流行工具。该工具可以模拟数千个用户,以评估负载下的应用程序性能并分析响应时间。它还支持云集成的性能、负载和压力测试。它易于使用,具有成本效益,并提供良好的可伸缩性。

压力测试的度量

度量有助于评估系统的性能,通常在压力测试结束时进行研究。常用的度量标准是-测量可伸缩性和性能

  • 每秒页面数:衡量每秒请求的页面数
  • 吞吐量:基本度量-响应数据大小/秒
  • 轮数:计划测试场景的次数与客户端执行的次数之比

应用程序响应

  • 检索时间:检索图像或页面的平均时间
  • 第一个字节的时间:返回数据或信息的第一个字节所花费的时间
  • Page Time:检索页面中所有信息所花费的时间

失败

  • 失败连接数:客户端拒绝的失败连接数(弱信号)
  • 失败回合数:失败回合数
  • 失败点击:系统失败尝试的次数(断开的链接或看不到的图像)

结论

压力测试的目的是在极端条件下检查系统。它监视系统资源,如内存、处理器、网络等,并检查系统恢复到正常状态的能力。它检查系统在压力下是否显示适当的错误消息。

压力测试的例子

  • 电子商务网站宣布节日促销

  • 新闻网站在一些重大事件的时候

  • 教育委员会的结果网站

  • 社交网站或博客、应用程序等

相关文章:

压力测试详解

压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…...

从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系

目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时,仅是在客户端的视角下连接已经断开,在服务端的眼中,连接依然存在,为什么?——触发EPOLLRDHUP事件:对端关闭连接或停止写…...

Redis复制(replica)

Redis主从复制 [Redis主从复制](replica)是一个多Redis实例进行数据同步的过程,其中一个实例是主实例(Master),其他实例是从实例(Slave)。主实例负责处理命令请求,而从实…...

[云讷科技] 用于软件验证的仿真环境

我们使用Pursuit自动驾驶仪为各种场景设计仿真环境,以便用户可以在模拟环境中直接验证他们的软件,无需现场测试。该环境基于Gazebo引擎。 1. 工作区目录 模拟环境的工作区位于提供的U盘中的~/pursuit_space/sitl_space_pursuit中。用户可以按照用户手册…...

使用 Vite 和 Vue 框架创建组件库

在前端开发中,组件化开发已成为一种高效、可维护的方式。通过创建组件库,不仅可以提高代码复用率,还能方便地在不同项目之间共享组件。本文将详细介绍如何使用 Vite 和 Vue 框架创建一个组件库,并将其导出供其他项目使用。为保持一…...

【数据结构学习笔记】19:跳表(Skip List)

介绍 跳表是一个能在 O ( n l o g n ) O(nlogn) O(nlogn)时间完成查找、插入、删除的数据结构,相比于树形结构优点就是很好写(所以也用于实现Redis ZSet)。其核心思想就是维护一个元素有序的,能随机提升索引层数的链表。最下面一…...

【8】深入理解 Go 语言中的协程-从基础到高级应用

文章目录 一、引言 🌟二、协程基础概念 🧐(一)什么是协程(二)协程与线程、进程的区别三、协程的创建与启动 🚀(一)使用 go 关键字创建协程(二)简单…...

深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法

ECMAScript 2024 引入了一个新的字符串实例方法:String.prototype.isWellFormed。这一新增功能是为了帮助开发者更容易地验证字符串是否为有效的 Unicode 文本。本文将详细介绍这一方法的使用场景、实现原理及其在实际应用中的价值。 String.prototype.isWellFormed…...

算法分析与设计之贪心算法

文章目录 前言一、Greedy Algorithms1.1 贪心选择性质1.2 最优子结构性质1.3 正确性证明 二、典型例题2.1 Interval Scheduling间隔调度2.2 Interval Partitioning最少间教室排课2.3 Selecting Breakpoints选择加油站停靠点2.4 硬币找零2.5 Scheduling to Minimizing Lateness2…...

Centos 宝塔安装

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 安装成功界面 宝塔说明文档 https://www.bt.cn/admin/servers#wcu 或者可以注册宝塔账号 1 快速部署 安装docker 之后 2 需要在usr/bin下下载do…...

蓝桥与力扣刷题(709 转换成小写字母)

题目:给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 示例 1: 输入:s "Hello" 输出:"hello"示例 2: 输入:s "here…...

Redis的过期策略、内存淘汰机制

Redis只能存5G数据,可是你写了10G,那会删5G的数据。怎么删的?还有,你的数据已经设置了过期时间,但是时间到了,为什么内存占用率还是比较高? 一、Redis的过期策略 Redis采用的是定期删除惰性删除策略。 1…...

视觉多模态大模型---MiniMax-vl-01---以闪电般的注意力缩放基础模型

简介 MiniMax-VL-01 是与今年1月15日由上海稀宇科技有限公司(MiniMax)发布并开源的一款视觉多模态大模型,它与基础语言大模型 MiniMax-Text-01 一同构成了 MiniMax-01 系列。这款模型的设计初衷是为了应对日益增长的长上下文处理需求&#x…...

【微服务】面试 3、 服务监控 SkyWalking

微服务监控的原因 问题定位:在微服务架构中,客户端(如 PC 端、APP 端、小程序等)请求后台服务需经过网关再路由到各个微服务,服务间可能存在多链路调用。当某一微服务挂掉时,在复杂的调用链路中难以迅速确定…...

【案例81】NMC调用导致数据库的效率问题

问题现象 客户在使用NC系统时,发现系统特别卡顿。需要紧急排查。 问题分析 排查NMC发现,所有的线程都处于执行SQL层面,说明数据库当前出现了异常。查看数据库资源状态发现,Oracle相关进程CPU利用率达到了100%。 查看现在数据库…...

Linux_信号

信号的概念 && 知识补充 信号是进程之间事件异步通知的一种方式,是一种软中断。 标准信号:编号为1-31之间都是标准信号,这些都是预定义信号,用于通知进程发生的各种事件。实时信号:编号从32开始起均是实时信号…...

LeetCode100之搜索二维矩阵(46)--Java

1.问题描述 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回…...

学员答疑:安卓分屏窗口的TouchableRegion设置流程追踪

背景: vip学员在群里问到了一个分屏触摸区域设置的问题,开始以为就是和普通Activity设置区域没啥差别,都是在InputMonitor中进行的设置,但是仔细研究下来其实并不是哈。本文就带大家来手把手分析一下分屏情况下的触摸区域是怎么设置的。 d…...

[cg] UE5 调试技巧

UE 中 rhi命令的提交是在render 线程,而graphics api 真正的执行是在rhi 线程, 今天想看下rhi的底层调用,但由于是通过task执行的,无法获取到render thread传入的地方,调试起来不太方便。 可通过开启下面的命令来调试 …...

Python Wi-Fi密码测试工具

Python Wi-Fi测试工具 相关资源文件已经打包成EXE文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着开源精神的想法,望大家喜欢,点…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...