如何使用Jmeter对HTTP接口进行压力测试?

article/2025/11/7 10:54:08

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

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

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

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

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

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

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

 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作为参数名,参数名类似程序中定义的变量名)

 

 

 

 


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

相关文章

全网最新最全的jmeter接口测试,压力测试

目录 一.前言 二.接口测试 2.1Jmeter-http接口脚本 2.2Jmeter-webservice接口脚本 三.压力测试 3.1压测任务需求的确认 3.2压测设置 3.3压测结果查看 3.4压测结果的分析 3.5jmeter在linux下进行压力测试 ​ 一.前言 jmeter是apache公司基于java开发的一款开源压力测…

【Jmeter基础篇】03:如何进行post接口压力测试

目前网络上有很多很多Jmeter的压力测试使用指南,但是在实际使用过程中,很多朋友会遇到许多并不处于理想状态的情况,比如某些参数不知道应该往哪里放,具体怎么分析测试结果等等。 所谓压力测试,实质就是让n多个用户在同…

Jmeter怎么做接口测试/性能测试/压力测试(步骤)

目录 JMeter接⼝测试流程详解 1、Jmeter简介 2、Jmeter安装 3、设置Jmeter语⾔为中⽂环境 4、Jmeter主要元件 5、Jmeter元件的作⽤域和执⾏顺序 6、Jmeter进⾏接⼝测试流程 7、Jmeter进⾏接⼝测试流程步骤详解 8、总结 JMeter性能测试的步骤? 第一步&…

性能测试-项目实战-接口全流程压测

目录 1、前言 1.1、项目背景 1.2、场景执行步骤 2、司机长链接 2.1、司机出车环境 2.2、主要用到的包 2.3、脚本解析 3、全流程压测脚本 3.1、司乘数据准备 3.2、全链路压测脚本 4、资源监控与收集 4.1、聚合报告 4.2、自研脚本 1、前言 1.1、项目背景 在车辆与…

浅谈接口压测

一.背景 saas版在经过项目组全体成员的不断努力,最终实现了第一版的上线,为了验证sass系统可以支持多少用户同时在线访问,产生了sass版的接口压测。 二.压测是什么为什么要做压测 压测一般指性能压力测试,通过压测可以了解系统…

数据库select语句详解

SELECT 1.基本语法 select * from 表名 查询这张表所有内容。select 列名 from 表名 查询这张表某一列所有内容。select 列名1,列名2…from 表名 查询这张表的列1,列2,等多列。select distinct 列名 from 表名 查询这一列去掉重复内容后的内…

SQLite基本语句

SQLite基本语句 一: 1.SQLite数据库是一种嵌入式数据库,它的数据就是一个scores.db 2.经常被集成到各种应用程序中,甚至ios、Android、Mac OS、Linux 3.Python中内置了SQLite数据库,直接使用 4.数据库:关系型数据库&a…

Mysql数据库基本sql语句

文章目录 1 常用的数据类型2 查看数据库2.1 查看当前服务器中的数据库2.2 查看数据库中的表2.3 查看表的结构(字段) 3 SQL语句3.1 SQL语句分类3.2 创建及删除数据库和表3.2.1 创建新的数据库3.2.2 创建新的表3.2.3 删除指定的数据表3.2.4 删除指定的数据…

数据库的基本语句

这里写目录标题 mysql基本语句表的定义SQL语句分类 mysql基本语句 1.进入数据库 mysql -uroot -p 2.退出数据库 exit; 3.查看有哪些数据库 show databases; 4.创建新的数据库 create database 英文名字; 5.使用数据库 use 名字 6.查看表 show tables; 7.查看数据库版本 select…

Mysql基本语句

1、数据库的基本类型 1.关系数据库 特点:以表和表的关联构成的数据结构 优点:能表达复杂的数据关系。强大的查询语言,能精确查找想要的数据 缺点:读写性能比较差,尤其是海量数据的读写。数据结构比较死板 用途&am…

数据库常用语句汇总

数据库常用语句 一、对数据库的操作1. 用SQL语句创建数据库2.用SQL语句修改数据库3.用SQL语句删除数据库 二、对数据表的操作1.创建数据表定义数据表的约束NULL/NOT NULLUNIQUE约束(唯一约束)PRIMARY KET 主键约束外键约束CHECK 约束 2.修改数据表3.删除…

Mysql数据库基础语句

目录 一,常用的数据类型 二,数据库管理 1,Mysql基础语句操作 1.1,更改密码,登录数据库 1,2查看数据库结构 1.3:查看表结构 2, DDL语句:定义数据中的操作 2.1 创建数据库和表—create 2.2删…

MySql数据库基本语句

绝大多数都是记忆练习的东西 理解的偏少 一,DML语句之Delete(删除) 格式:delete from 表单名; 其后可以增加where条件限制,order by排序,limit限制 例如:delete from employee where name=‘ls’; 删除表中名字为李四的记录。 还有一个删除是truncate 格式:Truncate …

数据库基本语句

用DOS命令窗口操作数据库 启动数据库:mysql -u用户名 -p密码 当出现这个窗口意味着启动成功! DDL语句 数据库操作语句 查询当前所有数据库名称:show databases;创建数据库:create database 数据库名;如…

数据库常用操作语句总结

数据库常用操作语句总结 一、基础1.select 语句2.select distinct 语句3.where 子句4.and 和 or 运算符5.order by 语句6.insert into 语句7.update 语句8.delete 语句 二、高级1.top 子句2.like 操作符3.SQL 通配符4.in 操作符5.between 操作符6.as 别名7.join 表关联8.sql un…

java 数据结构--堆

1.堆的基本定义 二叉树的两种结构,一种是链式结构,一种就是顺序结构,普通二叉树其实是不适合用数组来存储数据,因为会造成大量空间的浪费,但完全二叉树似乎更合适于顺序结构存储,我们通常把堆(完全二叉树) 使用顺序数组来存储。 堆: (1&…

Java实现堆(最大堆)

1、什么是堆 现在有这么一个需求,设计一个结构,满足两个操作要求: 删除时,返回该结构的最大值或者最小值的元素往结构中新增元素 问题:如何组织优先这种结构? 一般数组、链表?有序数组或者链…

五、Java堆

Java堆 对于Java应用程序来说,Java堆 是虚拟机所管理的内存中最大的一块。堆,是被所有线程共享的一块内存区域,在虚拟机启动时创建。堆,唯一的目的就是存放对象实例,Java世界中“几乎”所有的对象实例都是在这里分配内…

java中的堆实现

java中的堆实现 完全二叉树:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。即除了最后一层,其他层的节点个数都是满的,而且最后一层的叶子节点必须靠左。 如图: 二叉堆:必须是完…

[JAVA数据结构]堆

目录 1.堆的概念 2.堆的创建 3.堆的插入与删除 3.1堆的插入 3.2堆的删除 1.堆的概念 如果有一个关键码的集合K {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,…