【0基础也能学会】JMeter:如何开始简单的WEB压力测试?

news2024/10/7 11:29:41

背景

最近工作上被安排针对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

PutsReq网站截图

3. 在JMeter中配置测试计划

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

创建Thread Group

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

创建Sampler

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

配置Sampler

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

创建Listener

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

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

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

执行测试计划

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

通过Listener查看请求返回结果


这一小节先整理到这里。下一小节我们在这个例子的基础上进行延伸,介绍如何同时发起多个请求,并对请求的输入进行参数化。敬请期待!

END绵薄之力

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

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

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517701.html

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

相关文章

前瞻洞察|借助机器学习,揪出利用DNS隐蔽隧道作恶黑手

黑客会利用DNS协议进行违法犯罪活动,那DNS协议到底是什么?它有何作用?为什么会被选作进行作恶的手段?会造成什么危害?怎么检测及研究现状如何?一连串疑问接踵而至。本篇文章中,我们会为大家一一…

【Java多线程编程】Thread类

Thread类是什么? Thread 类是 Java 提供的一个标准库,我们可以通过 Thread 类进行多线程编程。因此,今天我给大家讲解的是如何使用 Thread 类进行线程编程。 详细讲解 Thread 类中的:lambda 表达式、start 方法(启动线…

WiFi(Wireless Fidelity)基础(七)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

Cloud Kernel SIG月度动态:发布ANCK 5.10、4.19新版本,ABS新增仓库构建功能

Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。 01 SIG 整体进展 发布 ANCK 5.10-014 版本。 发布 ANCK 4.19-027.2 版本。 ABS 平台新增 OOT 仓库临时构建功…

如何远程控制电脑?3个方法轻松搞定!

案例:如何远程控制电脑? 【我不想时时刻刻都带着自己的电脑,听朋友说可以远程电脑。有没有大神分享一下具体的操作方法?感谢!】 随着科技的不断进步,远程控制电脑已经不再是一件难以实现的事情。如今&…

09.python可视化-Seanorn绘制类别关系图boxplot() boxenplot() violinplot()

分类散点图 分类分布图 1). 箱线图 : boxplot() 2).增强箱图boxenplot() 3).小提琴图 :violinplot() 分类统计图 2. 分类分布图 1). 箱线图 应用场景:主要用来显示与类别相关的数据分布。 seaborn.boxplot(xNone, yNone, hueNone, dataNone, orderNone, hue_orde…

GoView 是一个Vue3搭建的低代码数据可视化开发平台

一、总览 开源、精美、便捷的「数据可视化」低代码开发平台 二、整体介绍 框架:基于 Vue3 框架编写,使用 hooks 写法抽离部分逻辑,使代码结构更加清晰; 类型:使用 TypeScript 进行类型约束,减少未知错误…

WiFi(Wireless Fidelity)基础(九)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

MySql -- 事务

目录 1.概念 2.事务的运用场景 3.事务的四大特点 4.执行事务带来的问题 4.1 脏读 4.2 不可重复度 4.3 幻读 5. MySQL中事务的隔离级别 1.概念 事务就是把若干个独立操作打包成一个整体而诞生的一种功能. 2.事务的运用场景 比如:A——>B 转账500 A的余额-500…

【Qt编程之Widgets模块】-007:QStandardPaths类使用方法

1 头文件&#xff1a; #include <QStandardPaths>2 详细说明 QStandardPaths类提供用于访问标准路径的方法&#xff0c;该类包含用于查询本地文件系统上的标准位置的函数&#xff0c;用于常见任务&#xff0c;如特定于用户的目录或系统范围的配置目录。 所谓系统标准路…

[pgrx开发postgresql数据库扩展]6.返回序列的函数编写(1)单值序列

上篇文章是中规中矩的标准计算函数&#xff0c;就算不用pgrx&#xff0c;也是可以正常理解的&#xff0c;所以基本上没有什么对于pgrx框架有关系的东西&#xff08;唯一有关系的东西&#xff0c;应该就是Rust的时间类型与pgrx的时间类型的计算了&#xff09;。 这篇文章会讲一…

Java面试(1)Java概述

文章目录 Java 概述1.什么是Java2. JDK1.5 之后的三大版本3. Jdk和Jre和JVM的区别4. 什么是跨平台性&#xff1f;原理是什么5. Java 语言有哪些特点?6. 什么是字节码&#xff1f;采用字节码的最大好处是什么7. 为什么不全部使用 AOT&#xff08;since JDK9&#xff09; 呢&…

马赛克处理

去取马赛克的网址&#xff1a; Redact • Photo - Free And Private Image Redaction In The Browser https://redact.photo/ REDACT.PHOTO &#xff08;照片马赛克处理在线工具&#xff09;简介 REDACT.PHOTO是一个照片马赛克处理在线工具&#xff0c;能够帮助我们非常方便…

2023自动化测试的10个最佳实践(建议收藏)

虽然大家都知道坚果是非常健康和有营养的&#xff0c;但是&#xff0c;当你尝试吃它的时候&#xff0c;我猜测过程都不会很顺利。现实就是那么相似&#xff0c;我们都知道测试自动化对软件开发有好处&#xff08;就像坚果对我们的身体一样&#xff01;&#xff09;&#xff0c;…

arcgis插件-带属性TXT转SHP数据(支持独立图层、追加到图层)

20230512记录更新 arcgis插件-带属性TXT转SHP数据&#xff08;支持独立图层、追加到图层&#xff09; 这个版本省略掉新建面图层&#xff0c;再在界面进行选择图层的操作。 界面简化到只需要一步操作&#xff0c;选择&#xff08;或者复制&#xff09;TXT文件所在路径&#x…

机器学习(二)决策树原理剖析及python实现

本篇介绍第二个机器学习算法&#xff1a;决策树算法&#xff0c;我们经常使用决策树处理分类问题&#xff0c;近来的调查表明决策树也是最经常使用的数据挖掘算法。 图1所示的流程图就是一个决策树&#xff0c;长方形代表判断模块&#xff08;decision block&#xff09;&…

[Android]AsyncChannel介绍

背景 在WifiManager.java中&#xff0c;随处可见这样的方法调用实现&#xff1a; 代码路径&#xff1a;frameworks/base/wifi/java/android/net/wifi/WifiManager.java public void connect(int networkId, ActionListener listener) {...getChannel().sendMessage(CONNECT_NE…

你真的会跟 ChatGPT 聊天吗?(下)

接《你真的会跟 ChatGPT 聊天吗&#xff1f;&#xff08;上&#xff09;》&#xff0c;本文下半部分没有无毛猫那么搞笑的内容啦&#xff01;即使如此&#xff0c;哪怕你对文中提及的技术不大了解&#xff0c;也可以毫无压力地看完这篇&#xff0c;描述如何更好地获得 ChatGPT …

视频怎么压缩到20M以内

视频怎么压缩到20M以内&#xff1f;我们知道在很多聊天软件中是限制传输的内容大小的&#xff0c;比如说视频大小会限制20M以内。还有就是我们在发一些邮件时&#xff0c;我们在上传附件的时候也是限制视频大小在20M以内。所以说我们有需要把视频压缩到20M以内的情况。那么针对…

记录一次Windows7操作系统渗透测试

#本文档仅用于实验&#xff0c;请勿用来使用恶意攻击&#xff01; 《中华人民共和国网络安全法》中&#xff0c;恶意破坏计算机信息系统罪在第二十七条被明确规定&#xff0c;规定内容为&#xff1a; 第二十七条 任何单位和个人不得为达到破坏计算机信息系统安全的目的&#x…