软件测试之压力测试知识总结

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

压力测试

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

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

失败

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

结论

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

压力测试的例子

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

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

  • 教育委员会的结果网站

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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。


http://www.ppmy.cn/embedded/105638.html

相关文章

AWS api数据信息获取(boto3)

GitHub - starsliao/TenSunS: 🦄后羿 - TenSunS(原ConsulManager):基于Consul的运维平台:更优雅的Consul管理UI&多云与自建ECS/MySQL/Redis同步Prometheus/JumpServer&ECS/MySQL/Redis云监控指标采集&Blackbox站点监控维护&漏…

Linux学习(17)-I/O复用(1)select、poll

本节学习内容 1.I/O复用的作用 2.select接口(1.select接口的作用2.select相关接口3.select编程流程4.代码实现select) 3.poll接口 4.select与poll对比 一、I/O复用的作用 I/O复用使得程序同时监听多个文件描述符。(简单说:I…

Sqoop部署和基本操作

目录 一、说明二、部署三、常用命令 一、说明 数据导入(Import): Sqoop可以从关系型数据库(如MySQL、PostgreSQL、Oracle等)中抽取数据,并将其导入到Hadoop的HDFS中,存储为各种格式&#xff08…

事务代码中加synchronized锁引发的bug

背景 最近解决了个BUG,由于历史背景,在某一个产品里的用户中心有两套系统,两套系统还使用了两个不同的数据库,所以创建用户的时候会有一个新数据库到旧数据库同步的操作。 具体的流程是用户在页面注册了新用户,请求被…

互联网职场说 | “北京大龄码农加班回家与妻子争吵:加班挣钱没意思”

在繁忙的都市生活中,大龄码农夫妇的争吵,不仅是对个人情绪的宣泄,更是对现代职场生活压力的一种反思。 近期在社交平台刷到一位北京码农发文称:“加班挣钱没意思”,这句话背后,隐藏着多少职场人的无奈和迷…

期权虚值和实值的投资风险有什么不同?

今天带你了解期权虚值和实值的投资风险有什么不同?首先虚值期权与实值期权在本质上有一定的区别,两者并不是一个概念。 期权虚值合约 虚值期权又称价外期权,是指不具有内在价值的期权,即行权价高于标的现价的认购期权或行权价低…

高级组件封装技巧--tree的封装

el-tree是一个经常用到的组件,但是它不支持v-model,使用起来很麻烦,这篇教程封装了el-tree,使得它使用起来很简单,并且支持搜索,支持叶子节点横向排列,这样就算数据多了,也会显的很紧凑,同时它支持提交half…

专栏前言-WooYun漏洞库环境搭建

本专栏的漏洞实验项目均使用WooYun漏洞库 WooYun漏洞库下载链接为GitHub - hanc00l/wooyun_public: This repo is archived. Thanks for wooyun! 乌云公开漏洞、知识库爬虫和搜索 crawl and search for wooyun.org public bug(vulnerability) and drops 漏洞信息和代码来自于…

javaEE

JavaEE 概述 Java EE 是在 Java SE 的基础上构建的,它提供Web 服务等,是企业级应用程序版本 能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序 web开发 概述 web开发是指从网页向后端程序发送请求,与后端进行交…

【深入理解SpringCloud微服务】深入理解微服务配置中心原理,并手写一个微服务配置中心

【深入理解SpringCloud微服务】深入理解微服务配置中心原理,并手写一个微服务配置中心 为什么要使用配置中心配置中心原理如何手写一个配置中心使用PropertySourceLocator监听配置变更,刷新配置 实现一个微服务配置中心服务端库表ConfigCenterController…

12、Django Admin在列表视图页面上显示计算字段

两种方法: 注册模型有两种方式,需要首先添加或者修改admin中的注册模型如下方式 admin.register(Origin) class OriginAdmin(admin.ModelAdmin):list_display ("name",) 1、在models的模型类中添加函数 def hero_count(self,):return sel…

基于大模型 + 知识库的 Code Review 实践

背景 💡 想法源于在一次 Code Review 时,向 Claude 询问哪种写法代码更优雅得来。当时就想能不能让 AI 帮我们辅助做 Code Review? 痛点 信息安全合规问题:公司内代码直接调 ChatGPT / Claude 会有安全/合规问题,为了…

html+css+js网页设计 故宫7个页面 ui还原度100%

htmlcssjs网页设计 故宫7个页面 ui还原度100% 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1…

微信小程序跳转到另一个微信小程序

引用:http://www.xmdeal.com/mobanjiaocheng/254.html 第一种方法: wx.navigateToMiniProgram 官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html wx.navigateToMiniProgram({appId…

单体到微服务:架构变迁

单体架构与微服务架构:从单体到微服务的演变 引言单体架构概述微服务架构的优势一、功能定位二、使用场景三、配置方式四、性能特点Eureka - 服务注册与发现框架核心功能工作原理优势应用场景 结论 引言 在软件开发的世界中,随着业务的增长和技术的发展…

获取navicat已保存数据库连接的密码

打开connections.ncx&#xff0c;可以看到Passwordxxx,这是加密后的密码 解密 在线的运行工具https://tool.lu/coderunner 运行如下代码&#xff0c;代码中的密码改成你的密码&#xff0c;在倒数第二行位置 <?phpnamespace FatSmallTools;class NavicatPassword{protected…

pip install 包 安装

1. 打开 命令提示符 命令提示符 打开的方式之一 2. 去指定的环境路径 2.1 去指定的盘(D盘) d: 2.2 去D盘中指定的文件夹 cd Anaconda3\install\envs\pytorchGPU 3. 激活环境 conda activate pytorchGPU 4. 安装库 pip install 包名 5. 查看所有包 pip list

“微服务革命”之后...

曾几何时&#xff0c;我记得我的手指疯狂地敲打键盘&#xff0c;与庞大而杂乱的代码库搏斗。那是巨石的时代&#xff0c;代码就像古老的城堡一样&#xff0c;由一块块石头砌成一个令人印象深刻的庞然大物。 几年过去了&#xff0c;时代变了。开发人员口中的流行语变成了“微服…

jdbc-day01

_01Simple_JDBCDemo01 package com.jdbc._01Simple;import java.sql.*;/*** JDBC的第一个程序编写&#xff1a; 修改mydb库中的emp表中的7369这个员工的部门编号为30* 准备工作&#xff1a; 准备好项目&#xff0c;然后加载第三方jar包&#xff0c;即MYSQL的驱动程序。注意…

Python高效并发编程:实现一个线程安全的队列

Python高效并发编程:实现一个线程安全的队列 在现代软件开发中,处理并发任务是提高程序性能和响应速度的关键技术之一。线程安全的队列(Thread-Safe Queue)是并发编程中常用的数据结构,广泛应用于生产者-消费者模型、任务调度等场景。本文将详细介绍如何在Python中实现一…