Jmeter 接口测试常见场景

server/2024/12/3 7:31:37/

csv 中读取账号密码登录

压测登录接口,通常需要循环读取账号密码,使用 jmeter 处理该需求一般会采用 csv 文件设置来读取账号密码,信息文件(user_info.txt)示例如下:

信息文件中使用英文逗号分割账号、密码,并回车换行

接下来在 jmeter 的 http 请求下,添加配置元件 CSV 数据文件设置,添加完毕后,进行以下配置:

文件名:添加信息文件的路径

文件编码:UTF-8

变量名称:对配置信息文件中数据进行设置变量名,以英文逗号分隔

其他字段可以保持默认值,不进行修复,CSV 数据文件设置示例如下:

http 请求中调用:

使用 ${参数名称},调用配置的值

http 请求从上到下依次读取配置文件的账号信息,读取到最后一个账号后,下一个请求又从头开始读取,依此循环,从而实现登录账号循环调用,模拟多个账号并发登录

响应字段提取与使用

对于一些组合接口,上一个接口的响应数据,会成为下个接口的参数,对于这样的接口场景,需要对响应数据进行提取

响应数据

{"server_time": 1633746337,"data": {"total": 100,"list": [{"id": 1,"name": "xiaohua"},{"id": 2,"name": "xiaoming"}]},"success": true
}

提取第一层 server_name:$. server_time

提取第二层 total 值:$. data.total

提取第三层第一个 name 的值,list 是一个数组,第一个 name 在 list[0] 下,所以:$. data.list[0].name

提取 list 数组下所有 name 的值:$. data.list[*].name

详见:Jmeter参数提取——JSON提取器 - 水中雨 - 博客园

JSON 提取器示例:

下一个接口使用该参数:

文件上传

文件上传的接口,比普通的参数请求接口复杂些,需要进行以下配置

HTTP 信息头部管理器中需要对 Content-Type 配置,配置为 multipart/from-data,如图

根据接口实际情况分别添加请求参数和文件内容,请求参数:

文件内容:

文件名称传入本地文件地址,参数名称传入服务端接口规定的参数,MIME 类型根据服务端规定,设置对应的值,这里是 multipart/from-data

linux 命令行压测

在 linux 中使用 jmeter 进行压测,需要先后部署 JDK、Jmeter,并配置环境变量,此处不展开说明。配置完毕后,调用以下命令进行压测:

jmeter -n -t /tmp/perftest/scirpt/test.jmx -l /tmp/perftest/result.jtl -e -o /tmp/perftest/report/client

-n 代表使用非 GUI 方式,执行脚本

-t 代表要执行的脚本路径,需要提前上传到指定目录

-l 代表执行过程中生成的 jtl 文件路径

-e 在测试结束后生成 HTML 报告

-o 生成报告的目录

同样的道理,如果测试脚本中需要传递文件,例如 csv 数据文件、文件上传接口中的文件,都需要提前上传到 linux 服务器中,在 windows 或 macOS 电脑中, GUI 打开 Jmeter,编辑测试脚本,文件路径修改为 linux 服务器对应文件地址,然后保存 jmx 文件,并上传到 linux 服务器中,通过以上命令执行压测脚本

命令行执行压测脚本过程中,控制台中会定时刷新执行情况,如下所示:

默认情况下,每隔 30 秒刷新一次,如果希望刷新频率增高,修改文件

jmeter 目录/bin/jmeter.properties, 查找到字段 summariser.interval,去掉注释,并填写你期望的值,最小值为 6,即每隔 6 秒刷新一次控制台

分布式压测

采用单台机器对目标服务器产生的压力,因为受限于CPU、内存、网络、IO等因素的影响,通常只能模拟几十到几百用户的并发访问。分布式压测是利用多台机器同时向目标服务器产生压力,可以模拟几万到上亿级别用户的并发访问。

分布式压测,是通过一台控制主机,控制多台执行机,同时运行压测脚本,从而达到高并发压测的效果,见下图:

进行分布式测试,需要满足以下条件:

  • 控制机和各执行机上使用相同版本的 JMeter 和 JDK

  • 控制机和各执行机在同一局域网下,防火墙已关闭或已打开正确端口且端口未被占用,杀毒软件关闭

  • 如果测试数据有用到 CSV 或者文件数据,需要将 data 在每台执行机上复制一份,且读取路径必须保持一致

控制机及执行机环境和压测脚本部署完毕后,接下来需要修改控制机及执行机配置文件,

执行机进入 Jmeter 安装目录/bin,修改配置文件 jmeter-properties,修改以下字段:

remote_hosts= 本机 IP

server_port=1099 #或其他自定义端口,确保正常可用不重复

server.rmi.ssl.disable=true

修改并保存完成后,windows 启动 jmeter-server.bat,macOS 或 linux 启动 jmeter-server

正确配置的话,控制台出现以下提示:

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.2.246:19120](local),objID:[-34b17e9d:193717edda9:-7fff, 3788978414250560367]]]

控制机进入 Jmeter 安装目录/bin,修改配置文件 jmeter-properties,修改以下字段:

remote_hosts= 执行机 1 ip:1099,执行机 2 ip:1099,本机 ip:1099

server_port=1099 #或其他自定义端口,确保正常可用不重复

server.rmi.ssl.disable=true

修改后进行保存

以上配置中将控制机也作为其中一部压测机,如果不需要的话,可以不配置控制机 ip 和端口,有多个压测机逐个添加并以英文逗号分隔

接下来以 GUI 的方式启动控制机的 Jmeter,如果配置正确,能看到以下远程压测机器:

分别选择远程压测机器,执行脚本,查看结果树,取样器结果中提示该线程的执行机器信息:

远程机器控制台输出:

命令行压测执行脚本

全部压测机器都执行脚本

jmeter -n -t /tmp/perftest/scirpt/test.jmx -l /tmp/perftest/result.jtl -e -o /tmp/perftest/report/client -r

指定机器执行脚本

jmeter -n -t /tmp/perftest/scirpt/test.jmx -l /tmp/perftest/result.jtl -e -o /tmp/perftest/report/client

-r 192.168.2.246


http://www.ppmy.cn/server/146958.html

相关文章

【LC】35. 搜索插入位置

题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target …

Flink常见面试题

1、Flink 的四大特征(基石) 2、Flink 中都有哪些 Source,哪些 Sink,哪些算子(方法) 预定义Source 基于本地集合的source(Collection-based-source) 基于文件的source(…

【Leetcode 每日一题】LCR 190. 加密运算

LCR 190. 加密运算 计算机安全专家正在开发一款高度安全的加密通信软件,需要在进行数据传输时对数据进行加密和解密操作。假定 dataA 和 dataB 分别为随机抽样的两次通信的数据量: 正数为发送量负数为接受量0 为数据遗失 请不使用四则运算符的情况下实…

分布式资源调度——yarn 概述(资源调度基本架构和高可用的实现)

此文章是学习笔记,图片均来源于B站:哈喽鹏程 yarn详细介绍 1、yarn 简介1.1 yarn的简介1.2 yarn 的基本架构1.3. yarn 的高可用 2、yarn 调度策略、运维、监控2.1 yarn 的调度策略2.1.1 FIFO scheduler(先进先出)2.1.2 容量调度2.1.3 公平调度 2.2 yarn…

计算机网络——数据链路层Mac帧详解

目录 前言 一、以太网 二、Mac帧 三、MTU——最大传输单元 四、Mac帧的传输过程 1.ARP协议 2.RARP协议 前言 在之前,我们学习过网络层的IP协议,了解到IP协议解决了从哪里来,到哪里去的问题,也就是提供了将数据从A到B的能力…

本地Docker部署个人在线音乐平台Melody结合内网穿透远程访问听音乐

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

高职本科大数据实训平台及使用场景

大数据实验实训平台是在云计算、大数据、人工智能等基础上,以智能化容器集群技术搭建的“一站式”大数据、人工智能等相关专业的实验、实训、实战平台,支撑“教—学—练—赛—研”等全闭环的专业建设、人才培养、实验室建设等整体解决方案。 大数据…

深入学习MapReduce:原理解析与基础实战

标题:深入学习MapReduce:原理解析与基础实战 MapReduce是一种分布式计算框架,用于大规模数据的处理和分析。作为Hadoop生态系统的核心组件,MapReduce凭借其简单的编程模型和强大的并行计算能力,广泛应用于大数据领域。…