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

0基础学JMeter:如何开始简单的WEB压力测试(一)

背景

最近工作上被安排针对Web网站进行性能压测,以评估特定的硬件配置下Web网站可支持的并发用户数。考虑到JMeter是流行的Web性能压测工具,因此趁着这次机会上网查阅了很多关于JMeter的资料,也自己动手进行软件的配置和调测,从最基本的发送HTTP请求,到参数化输入,分布式测试和最后的实时结果展示都折腾了一把。现将折腾过程进行整理,既作为自己日后参考,也可分享给有需要的人,少踩一些坑。

在折腾的过程中,主要参考JMeter官网,上面有详细的手册和教程,同时也参考了其他一些博客和StackOverflow。重新整理的过程也是一个学习提高的过程,复习了相关的概念并找到了一些更易于理解的方法。

接下来按照我做为初学者对性能压测的疑问,对整个过程进行梳理:

  • 如何开始简单的WEB压力测试(一):发起第一个HTTP请求
  • 如何开始简单的WEB压力测试(二):并发测试与参数化
  • 如何录制测试计划
  • 如何进行分布式压力测试
  • 如何实时展现测试结果

每个问题都会辅以实际的例子进行解答,并将具体操作的步骤和结果截图记录下来。


如何开始简单的WEB压力测试

俗话说万事开头难,接下来我们以一个最简单的例子介绍如何从JMeter发起第一个HTTP请求。后续在这个例子上进行延伸,了解如何进行并发测试和参数化。

发起第一个HTTP请求

1. 安装JMeter

建议从官网上下载最新版本,以便获得更多新功能。目前最新的版本是3.3,支持Java8。同时,官网上也有丰富的文档资源,包括用户手册,最佳实践,组件参考和教程等,值得花时间仔细阅读。

2. 准备被测网站

被测网站建议使用 PutsReq 。这个网站可以接受HTTP请求并且可以自定义返回结果,过程非常清晰,适合做为HTTP测试使用。 在网站首页上点击 “Create a PutsReq" 蓝色按钮,网站会自动帮你创建一个URL,接下来就可以往这个路径发送HTTP请求。可以看到是如果普通的GET请求,则会返回"Hello World";如果是POST请求并带了name参数(假设name参数值为XYZ),则会返回 Hello XYZ

3. 在JMeter中配置测试计划

首先在Test Plan中增加一个Thread Group。在JMeter中每个Thread相当于一个模拟用户,在Thread Group中进行进一步的配置可以定义模拟用户的行为,如发起各种请求等。

在本例中Thread Group创建后可以先不改参数,接着创建一个Sampler/HTTP Request

并按下图所示填写相关的参数,包括协议,服务器名,请求类型和路径,让模拟用户发送HTTP GET Reqeust到被测网站。

最后增加一个Listener/View Results Tree,查看请求的结果。

如果一切正常,那这个请求应该返回一串字符”Hello World"

4. 通过JMeter执行测试计划并查看结果

配置完成后我们就可以通过JMeter执行刚刚配置好的测试计划,即发送一个HTTP GET Request到被测网站 PutsReq

在JMeter上查看请求结果,返回是一串字符 "Hello World"


这一小节先整理到这里。下一小节我们在这个例子的基础上进行延伸,介绍如何同时发起多个请求,并对请求的输入进行参数化。敬请期待!如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

0基础学JMeter:如何开始简单的WEB压力测试(一)

背景 最近工作上被安排针对Web网站进行性能压测,以评估特定的硬件配置下Web网站可支持的并发用户数。考虑到JMeter是流行的Web性能压测工具,因此趁着这次机会上网查阅了很多关于JMeter的资料,也自己动手进行软件的配置和调测,从最…...

ArcGIS数据处理与制图

在数字化和智能化的浪潮中,GIS(地理信息系统)和GPT(生成式预训练模型)的结合正日益成为推动科研、城市规划、环境监测等领域发展的关键技术。GIS以其强大的空间数据处理、先进的空间分析工具、灵活的地图制作与可视化能…...

基于Java微信小程序校园订餐系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…...

基于文件的本地数据库组件 DuckDB, ChDB, SQLite, LevelDB, RocksDB

OLTP 与 OLAP 的区别: OLTP(on-line transaction processing) 联机事务处理,主要就是一些传统的数据库,比如 Mysql。OLAP(On-Line Analytical Processing) 联机分析处理,主要应用在大数据分析处理领域,比如 Clickhous…...

日志记录功能

需求描述: 1,可记录页面操作模块、按钮的日志记录 2,记录详细的指定操作数据日志 3,记录的数据可能需要查询表 4,需要考虑到扩展性及个性化定制 表结构设计: CREATE TABLE YES_DEV.T_COMM_OPERATION_LOG (ID BINARY_BIGINT NOT NULL,OPERATOR VARCHAR(128),OPERATION_MO…...

Android中的多线程与线程池详解

Android中的多线程与线程池详解 一、技术难点 在Android开发中,多线程和线程池是处理复杂任务、提高应用性能和响应性的关键技术。然而,这些技术也带来了一些技术难点。 1. 多线程技术难点 线程同步:多线程环境下,数据访问的同…...

使用LangChain+Ollama自己做的一个和大语言模型聊天的网站支持上下文对话,学习记录。

0.引言 在自己学习的过程中可以自己做一个和聊天大模型对话的一个小网站,成就感不亚于人生第一次跑完10km。 1.项目介绍 前端代码:Vue3, MarkDownIT. 后端代码:Python3, Fernet库, OpenAPI, LangChain, Ollama. Ollama 本地模型的部署和管理…...

excel数据透视

Excel中,数据透视图(PivotChart)和数据透视表(PivotTable)是两个紧密相关的工具,用于分析数据。数据透视表是数据透视图的数据源,也就是说,数据透视图是基于数据透视表中的数据创建的…...

七、(正点原子)Linux并发与竞争

Linux是多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。 一、并发与竞争 1、简介 并发就是多个…...

vue2+TS,el-table表格单选的写法

1.打开表格 //父组件引入 <customerChoose ref"customerChooseRef" onSure"setOrderInfoFn"></customerChoose>//子传父&#xff0c;接收值&#xff0c;操作private async setOrderInfoFn(data) {this.form.customerId data.idthis.form.cu…...

北邮《计算机网络》蒋老师思考题及答案-传输层

蒋yj老师yyds&#xff01; 答案自制&#xff0c;仅供参考&#xff0c;欢迎质疑讨论 问题一览 传输层思考题P2P和E2E的区别使用socket的c/s模式通信&#xff0c;流控如何反映到编程模型三次握手解决什么问题举一个两次握手失败的例子为什么链路层是两次握手而非三次&#xff1f;…...

学懂C#编程:常用高级技术【元组的详细使用】——利用元组获取多个返回值

C#常用高级技术——利用元组获取多个返回值 在C# 7.0及更高版本中&#xff0c;您可以使用元组&#xff08;Tuples&#xff09;来实现这种返回多个值的方法。您提供的代码片段是正确的&#xff0c;它定义了一个名为Calculate的方法&#xff0c;该方法接受两个整数参数a和b&#…...

解决IDEA使用卡顿的问题,设置JVM内存大小和清理缓存

解决IntelliJ IDEA中卡顿问题&#xff0c;可以尝试以下几个常见且有效的步骤&#xff1a; 1 增加IDEA的JVM内存分配&#xff1a; 位于IDEA安装目录的bin文件夹下&#xff0c;找到对应的操作系统配置文件&#xff08;idea64.exe.vmoptions&#xff08;Windows&#xff09;或id…...

Python爬虫从入门到入狱之爬取知乎用户信息

items中的代码主要是我们要爬取的字段的定义 class UserItem(scrapy.Item):id \ Field()name \ Field()account\_status \ Field()allow\_message\ Field()answer\_count \ Field()articles\_count \ Field()avatar\_hue \ Field()avatar\_url \ Field()avatar\_url\_template…...

apk反编译修改教程系列-----去除apk软件更新方法步骤列举 记录八种最常见的去除方法

在前面几期博文中 有说明去除apk软件更新的步骤方法。我们在对应软件反编译去除更新中要灵活运用。区别对待。同一个软件可以有不同的去除更新方法可以适用。今天的教程对于软件更新去除列举几种经常使用的修改步骤。 通过基础课程可以了解 1-----软件反编译更新去除的几种常…...

SpringMVC系列六: 视图和视图解析器

视图和视图解析器 &#x1f49e;基本介绍&#x1f49e; 自定义视图为什么需要自定义视图自定义试图实例-代码实现自定义视图工作流程小结Debug源码默认视图解析器执行流程多个视图解析器执行流程 &#x1f49e;目标方法直接指定转发或重定向使用实例指定请求转发流程-Debug源码…...

MySQL数据备份的分类

MySQL数据库的备份 在我们使用MySQL数据库的过程中&#xff0c;一些意外情况的发生&#xff0c;有可能造成数据的损失。例如&#xff0c;意外的停电&#xff0c;不小心的操作失误等都可能造成数据的丢失。 所以为了保证数据的安全与一致性&#xff0c;需要定期对数据进行备份。…...

node+nginx实现对react进行一键打包部署--windows版

文章目录 nodenginx实现对react进行一键打包部署--windows版1.功能展示及项目准备1.1功能展示 1.2 项目准备1.2.1技术点1.2.2安装相关配置(windows) 2.实现2.1 实现思路2.2 实现步骤2.1 项目准备2.1.1 创建env文件2.1.2 创建api/index.js文件2.1.3 添加解决跨域代码 2.2 项目实…...

【机器学习】基于Gumbel-Sinkhorn网络的“潜在排列问题”求解

1. 引言 1.1.“潜在排列”问题 本文将深入探索一种特殊的神经网络方法,该方法在处理离散对象时展现出卓越的能力,尤其是针对潜在排列问题的解决方案。在现代机器学习和深度学习的领域中,处理离散数据一直是一个挑战,因为传统的神经网络架构通常是为连续数据设计的。然而,…...

create-react-app创建的项目中设置webpack配置

create-react-app 创建的项目默认使用的是 react-scripts&#xff08;存在于node_modules文件夹中&#xff09;来处理开发服务器和构建&#xff0c;它内置了一些webpack相关配置。一般不会暴露出来给开发者&#xff0c;但是在有些情况下我们需要修改下webpack默认配置&#xff…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...