软件测试之压力测试

article/2025/8/23 3:13:24

压力测试

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

在软件工程中,压力测试也被称为耐力测试。在压力测试中,对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:检索页面中所有信息所花费的时间

失败

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

结论

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

压力测试的例子

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

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

  • 教育委员会的结果网站

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

尾声

我自己收集啦许多软测资料,希望能够帮到学软件测试的朋友们软件资料分享包括但不限于:Python自动化测试、性能测试、web测试、APP测试、测试开发、安全测试

测试开发工具包:appuim安装包、fiddler安装包(也有配套视频教程)、eclipse、git、jmeter、loadrunner、monkey、postman、soapul、Xmind等等

最后感谢每一个阅读我文章的人,一点小心意,虽然不是啥值钱的东西,需要的话点击下方小卡片直接拿走~
 
 


http://chatgpt.dhexx.cn/article/MvvpIcEp.shtml

相关文章

模拟压力测试报告

在Linux环境下测试一下数据库以及缓存在优化前后的负载情况,总结一下过程。 压测工具:JMETE 运行环境 本来想在虚拟机上运行java程序以及数据库,不过压测下虚拟机承载不了太高的并发,硬件有限,只能将java应用运行在W…

JMeter压力测试报告分析

JMeter 一、测试工具:二、JMeter介绍:三、Java环境的安装与使用:3.1.初始化3.1.1.下载并安装,3.1.2.解压,3.1.3.进入bin目录,3.1.4.cmd启动jmeter.bat,3.1.5.出现两个窗口:一个cmd窗…

Redis压力测试报告

Redis配置 Max_total 200 Max_idle 100 Max_wait 10 Time_out 3000 测试机器(本机)参数 CPU 2核 内存 4G 网络 100Mbs 1.不同操作压力测试结果 结论: 1.针对redis的不同操作,在相同线程数下TPS基本保持一致&#x…

自动化测试工程师需要具备什么技能?

如果是初入门的学习者,不建议拿一本书从头学,很可能会被里边一些专业术语和不常用的技术带偏,不论在公司还是在其他岗位上自学测试,都可以用自己搭建好的项目来练手(如果在公司有现成的项目更好)&#xff0…

面了一个测试工程师要求月薪26K,总感觉他背了很多面试题...

最近有朋友去华为面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…

一名优秀的测试工程师,应具备那些能力

前言 作为一个软件测试工程师,你找工作的敲门砖是什么?是学历?是经验?还是年龄?   从事测试工程师的人员日趋增多,自然而然竞争也会变得激烈。如何让我们的工作履历变的更加精彩,除了我们实际…

什么是测试开发工程师?

什么是测试开发工程师? 测试开发工程师 (Software Development Engineer in Test,简称SDET)是指那些既可以称作是开发人员,同时也负责软件开发阶段和测试周期的测试工作的技术人员。一个专业的SDET更关注软件产品的可测性,稳健性和…

测试工程师应具备的素质

郭芙曾提到测试的软实力包括测试人员的基本素质,那么测试人员到底应具备怎样的素质呢?昨天逛书城,看到一本教科书上有对测试人员应具备的素质的描述,所述未必尽如其然,但仍有可借鉴之处,手机拍了下&#xf…

成为一个优秀的测试工程师需要具备哪些知识和经验?

先说下做软件测试所必须掌握的技能范围 我按照薪资的不同大致划分成3个档位: 月薪5-9k:从零基础入门到能够找到工作月薪15-25k:测试在职搞定性能测试和自动化测试年薪30W:搞定测试开发,进入一线大厂 第一个阶段&…

软件测试工程师有哪些要求

软件测试工程师,目前IT行业极端短缺的金贵人才,未来5年IT行业最炙手可热的高薪职位。中国软件业每年新增约20万测试岗位就业机会,而企业、学校培养出的测试人才却不足需求量的1/10,这种测试人才需求与供给间的差距仍在拉大。由于软…

测试工程师到底需要具备哪些能力?

测试工程师到底需要具备哪些能力? 小编最近看了许多测试论坛,上面有许多测试框架或者分享的测试技术,每个分享的内容涉及到的面都很宽,技术的不断革新,有些技术沉淀下来了,有些技术被业界抛弃,…

测试工程师

1 测试理论 1.1 测试理论基础 1.1.1 软件研发流程 软件生命周期: 需求-设计-编码-测试-维护-废弃 **软件测试流程:**需求分析-测试计划-测试方案-测试用例-测试执行-测试报告 需求分析:分析产品功能点;产品核心竞争力&#xf…

一名优秀的测试工程师需要具备哪些技能?

文章目录 js/css 前端技术网络架构网络协议DNS解析负载均衡策略Linux 系统基本操作数据库知识 js/css 前端技术 很多测试工作都由前端发起,所以了解前端技术可以让测试人员使用更灵活的方式执行测试 任务。如何利用前端技术辅助测试人员更好…

性能测试工程师的要求通常有哪些?

作为性能测试工程师,常见的岗位要求包括: 1. 熟悉性能测试理论:了解性能测试的基本概念、性能指标、测试方法和工具,以及性能测试的相关知识和技能。很多人可能觉得理论的东西不需要了解太多,够用就可以了。其实是有误…

测试工程师等级评定细则

一、初级测试工程师(门槛低) 大专以上文化程度即可; 有一定的业务熟悉能力,能快速的熟悉业务并定位出业务中的缺陷; 了解软件生命周期和简单的互联网交互方式; 会使用简单的工具(抓包工具、bug…

计算机网络学习笔记:第二章

计算机网络学习笔记:第二章 学习书籍:《计算机网络:自顶向下方法》 第二章:应用层 其他章节请参阅: 《计算机网络:自顶向下方法》 第一章:计算机网络和因特网 《计算机网络:自顶向…

计算机网络第一遍学习

文章目录 网络、互联网、因特网互联网的组成三种交换方式电路交换、报文交换、分组交换的对比计算机网络的定义和分类计算机网络的性能指标计算机网络的体系结构专用术语 物理层物理层的基本概念物理层下面的传输媒体传输方式编码与调制信道的极限容量 数据链路层数据链路层概述…

关于网络的学习

网络的七层模型 TCP和UDP的区别 TCP:可靠,速度稍慢,点对点通信,通信内容为字节码,多用于传输文件 UDP:不可靠了,速度很快,点对点、一对多、多对多通信,通信内容为数据报…

计算机网络的学习1-2

计算机网络的学习 1-2 网络在我国的发展 第一阶段:国内互联网 1980年,铁道部开始网络实验。 89年11月,第一个公用分组交换网CNPAC建成。 第二阶段:互联网初期 91年6月,第一条互联网专线,中国科学院高…

计算机网络学习笔记(汇总)

计算机网络 根据所学大学课程对计算机网络较为全面的记载,考试复习,由于图片在github上,需要转储可能部分出不来,如有缺失可以去我的github项目下的github pages观看文档 1.概述 1.1 互联网组成 边缘部分 服务器不需要知道用户地…