使用Jemeter对HTTP接口压测

news2025/2/9 6:41:39

我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前所处的情况,基于被测对象、时间及成本考虑,采用最合适的工具。闲话少谈,今天笔者要给大家分享的是用Jemeter来进行HTTP接口的压力测试。实际接口测试还可以使用Tsung、SoapUI等工具,但基于各方面考虑,最终采用了Jemeter。

Jemeter相对于Loadrunner来说,更轻,易于安装,如果对过程数据收集不多、测试场景不复杂的情况下,可以优先考虑。笔者的使用的工具版本为Apache JMeter3.0,如果你们使用的是其它版本,可以与该版本界面有一定出入。

下面就说说使用Jemeter进行HTTP接口压力测试的具体使用步骤:

1、首先添加一线程组(即用户组:一个线程模拟一个用户行为,如果要模拟多个用户,则通过设置多线程来实现)

如果你想学习jmeter性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的jmeter接口测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386

15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!_哔哩哔哩_bilibili15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!共计27条视频,包括:1.【性能测试】什么是性能测试以及性能测试的价值和目的、2.【性能测试】真实企业性能测试指标详解以及指标测算、3.【性能测试】真实企业中性能测试流程以及细节剖析等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from=333.337.search-card.all.click

2、因为是对HTTP接口进行压力测试,所以需要在线程组下添加一HTTP请求(通过鼠标右键->添加->Sampler->HTTP请求 完成)

3、紧接着就是对HTTP请求进行设置了,主要设置服务器名称或IP,端口号,连接、响应时间,所采用的协议,请求类型,内容编码,路径,最后设置请求内容。

注意,路径为URL除去如http://XXX.XX.X后的内容,如URL为http://www.51ste.com/share/index.php,则服务器名称或IP应该填写www.51ste.com,端口默认80,路径应该填写“/share/index.php”

4、因为这里的请求内容使用的是json字符串,所以需要在头部进行声明,否则请求就要报错。所以需要给HTTP请求添加一信息头(通过鼠标右键->添加->配置元件->HTTP信息头管理器 完成)

5、配置HTTP头信息,添加对应名称和值,这里添加“Content-Type”,值为“application/json;charset=utf-8”;如果头还需要添加其它信息,如id、token等,也应如此进行配置

6、到这一步看起来就可以了,但是我们执行时并不能看到执行结果。所以还应该为该请求添加一结果监听器“查看结果树”(通过鼠标右键->添加->监听器->查看结果树 完成)

按照上面步骤,可以依次添加“聚合报告”(总体线程执行结果统计),图形结果(总体线程执行结果统计图),“用表格察看结果”(每个线程执行的表格统计情况)等。

PS(如果在进行非接口测试,如页面测试过程中发现错误,可能是少了COOKIE信息,所以可以为线程组添加一个Cookie头,可以通过鼠标右键->配置元件->HTTP Cookie管理器 完成)

7、如果HTTP请求没有问题,那么我们要进行性能测试,那就需要设置一个断言(即Loadrunner中的检查点),即只要检查到指定的返回值(如返回结果包含字符“success”)则说明执行成功。添加断言通过右键请求->添加->断言->响应断言 完成。

设置响应断言:

OK,到了这里,我们的脚本工作完成的八九不离十了,但是我们做性能测试,为了使测试结果更加准确,同时避免单点限制等原因,还应该对请求的值进行参数化。

8、参数化,这里主要将通过CSV文件进行的参数化。

1)首先我们新建一个CSV文件,然后录入我们要参数化的信息。

我们也可以新建一个记事本,然后输入参数化的内容信息,多个参数值间以英文逗号隔开,回车换行如:

Username1,password1

Username2,password2

点击保存,然后把记事本的文件名改为test.csv,注意这里的csv是文件扩展名。

2)在HTTP请求新建一个CSV Data Set Config元件(通过鼠标右键->添加->配置元件->CSV Data Set Config 完成)

3)配置CSV Data Set Config元件,这里主要需要指明参数化取值文件路径(即前面我们新建的CSV文件),参数名(如上面CSV文件中主要有两个参数值,我们可以分别用username和passwd作为参数名,参数名类似程序中定义的变量名)

4)对要参数化的值进行参数化。即用 ${参数名} 来替换要参数化的值。

9、通过上面步骤,就完成了参数化脚本的设置。现在要执行,那么首先来配置线程组,主要包括线程数,启用时间,循环次数。我们可以尝试设置不同的线程数,重复次数,来进行接口的压力测试了。

10、最后我们就可以点击上面的绿色执行按钮来执行测试了。当然在执行过程中,为了后面更好的分析测试,可以借助其它工具(linux如nmon)对服务器的资源使用情况、网络情况,以及程序运行情况进行结果收集,最后对压力瓶颈进行准确的定位。

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

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

相关文章

MySQL表CRUD

目录 一、Create 1.1 单行数据全列插入 1.2 多行数据指定列插入 1.3 插入否则更新 1.4 替换数据 二、Retrieve 2.1 SELECT列 2.2 WHERE条件 2.3 结果排序 2.4 筛选分页结果 三、Update 四、Delete 4.1 删除数据 4.2 截断表 五、插入查询结果 六、聚合函数 七…

IM相关技术

messages表 保存的消息记录(Saved Messages) bff,session TON以及tdlib 官方版设置中文 tg://setlanguage?langclassic-zh-cn https://web.telegram.org/k/ https://web.telegram.org/a/ https://github.com/TGX-Android https://github.com/NekoX-Dev/NekoX, 内置公共代理不…

C++类与对象(上)

类与对象(上) 1.面向过程与面向对象初步认识2.类的引入3.类的定义4.类的访问限定符以及封装4.1访问限定符4.2 封装 5.类的作用域6.类的实例化7.类对象模型7.1计算类对象的大小7.2类对象的存储方式的猜想 8.this指针8.2this指针的特性 1.面向过程与面向对…

JavaWeb之JSP

文章目录 JSP的基本介绍JSP的本质JSP的三种语法JSP头部的page指令language属性contentType属性image.pngpageEncoding属性import属性autoFlush属性 - 给out输出流使用buffer属性 - 给out输出流使用errorPage属性isErrorPage属性session属性extends属性 JSP中的常用脚本声明脚本…

贸易企业缺进项严重,如何减轻13%的增值税税负?

贸易企业缺进项严重,如何减轻13%的增值税税负? 《税筹顾问》专注于园区招商,您的贴身节税小能手,合理合规节税! 贸易企业的增值税税负很重,这不仅是因为13%的高额增值税税率,也因为贸易企业缺进…

K8s 部署 Apache Kudu 集群

一、K8s 部署 Apache Kudu 集群 安装规划 组件replicaskudu-master3kudu-tserver3 1. 创建命名空间 vi kudu-ns.yamlapiVersion: v1 kind: Namespace metadata:name: apache-kudulabels:name: apache-kudukubectl apply -f kudu-ns.yaml查看命名空间: kubectl …

傻白入门芯片设计,形式化验证方法学——AveMC工具学习(二十)

一、形式验证方法学 (一)什么是形式化验证? 形式化验证方法学是使用数学证明的方法,分析设计中所有可能的状态空间来验证设计是否符合预期。形式化验证方法主要有三个方面的应用:定理证明、模型检验和等价性检查。 …

让你不再疑惑语音翻译怎么弄

语音是人类交流的一种最基本的方式,但是当我们需要和来自不同国家或地区的人交流时,语言的限制往往让我们感到无力。然而,如今的语音翻译技术正在以惊人的速度发展,使得我们的声音可以轻松地跨越语言的界限。那么,你知…

强化学习:蒙特卡洛方法(MC)

引入蒙特卡洛方法例子 以抛硬币为例,将结果(正面朝上或反面朝上)表示为作为随机变量 X X X ,如果正面朝上则 X 1 X1 X1 ,如果反面朝上,则 X − 1 X-1 X−1,现在要计算 E [ X ] E[X] E[X]。    我们通常很容易…

JDK常用的数据类型【1】 ——HashMap(分享篇)

x mod 2^n x & (2^n - 1) 1. 拿到 key 的 hashCode 值 2. 将 hashCode 的高位参与运算,重新计算 hash 值 3. 将计算出来的 hash 值与 (table.length - 1) 进行 & 运算数据结构 1.B树 和 B树 B树叶子节点可以存放多个元素B树的叶子节点之间是有指针的 红…

网络安全|渗透测试入门学习,从零基础入门到精通—收集信息篇

目录 前面的话 1、收集域名信息 1.1、Whois查询 ​编辑1.2、备案信息查询 2、收集敏感信息 3、收集子域名信息 3.1、子域名检测工具 3.2、搜索引擎枚举 3.3、第三方聚合应用枚举 3.4、证书透明度公开日志枚举 本章小结 前面的话 本人喜欢网络完全的一些知识&#xff…

老油条辞职信写好了,00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff0…

出现报错Invalid bound statement (not found): xxx.xxxMapper.方法名 时的几种异常排除方法

报错信息:Invalid bound statement (not found): com.ruoyi.enterpriseman.trade.mapper.TradeEnterpriseMapper.selectTradeEnterpriseList 1.mapper.xml中的namespace和实际的mapper文件不一致 这个问题其实很好解决,瞪大眼睛,仔仔细细看看…

[SSM]Maven详解

目录 Maven 自动化构建工具 Maven简介 Maven的核心概念 maven约定的目录结构 仓库 POM文件 生命周期、命令、插件 Maven在IDEA中的应用 IDEA集成maven IDEA创建Maven版java工程 IDEA创建Maven版web工程 IDEA中导入Maven工程(module) 依赖管理…

Windows 离线安装mysql5.7

一、下载MySQL5.7最新版 1、官网地址 https://downloads.mysql.com/archives/community/ 2、下载MySQL5.7最新版 下载下图所示的安装包: 二、安装MySQL5.7 1、解压 将刚才下载压缩包解压搭配目录C:\software\mysql-5.7.41,(路径大家可…

背完这195道软件测试面试题,帮你轻松拿下提前批offer

前言: 最近在整理字节,阿里,腾讯,京东的面试题,挑了一部分在四个大厂面试题中出现频率比较高的,发现还是基础知识比较多,废话不多说,你们自己看看,这里小编只放了面试题&…

电动超声波硅胶洁面仪单片机开发方案

近来,网红超声波洁面仪受到人们喜爱,特别是爱化妆的女性朋友,常用来清洁脸部肌肤。在本方案中,洁面仪IC采用宇凡微YF单片机,我们提供多种洁面仪方案,根据不同功能需求有多个洁面仪芯片可供选择。 一、超声波…

价值5k的软件测试企业级实战项目,只为了回答你软件测试如何学!

学习软件测试如何学,在回答这个问题之前,我先分析下,在企业中做项目整个测试流程是什么样的,你清楚了整个企业的测试流程,就会清楚企业做测试需要什么?从而也就会明白如何去学测试。 1、需求: …

JDBC --- Java的数据库编程

目录 🍈一、数据库编程的必备条件 🍉二、什么是 JDBC JDBC 的优势 🍊三、JDBC 使用流程 以及 常用接口和类的讲解 🍡0. 前置工作 🍭1. 引入依赖 🍬2. 数据库连接Connection 🍬3. 创建操…

11-基于51单片机电子密码锁门禁(实物图+原理图+源程序+仿真+论文)全套资料

编号: 011 本系统采用 51单片机 24C02芯片矩阵键盘 继电器 开锁指示灯 LCD1602液晶 蜂鸣器 而成 1.单片机型号:STC89C52/51、AT89C52/51、AT89S52/51可以任选。程序通用 2.采用矩阵按键输入、1602液晶显示、继电器模拟开锁、发光二极管为开锁指示灯,继电器是可以外…