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

Jmeter 入门指南:从零开始学习

JMeter 是一个非常流行的开源工具,用于进行负载测试。它支持多种网络协议,包括 HTTP、FTP、SMTP、JMS、SOAP、JDBC 等,使其成为在多种应用环境中检测性能瓶颈的理想选择。本文将详细介绍如何利用 JMeter 进行高效的接口自动化测试。

创建和执行测试计划

初始化测试计划

开始使用 JMeter 的第一步是设置一个测试计划,这是组织各测试元素如线程组、断言、监听器的核心。首先,打开 JMeter,依次点击 文件 > 新建,并命名您的测试计划。

测试计划

配置线程组

线程组是在 JMeter 中定义模拟用户行为的基本单元。一个线程代表一个用户,因此线程组设置决定了测试的并发量和持续时间。

要添加线程组:

1、在测试计划上右键点击,选择 添加 > 线程(用户) > 线程组。

线程组

2、设置线程数量、启动时间和循环次数。例如,配置 10 个并发用户,每用户发出 10 次请求。

af07ce47f3a24337b5cca6b123a8e984~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

设定请求和断言

添加请求取样器

取样器在 JMeter 中扮演着模拟用户操作的角色。例如,要添加一个 HTTP 请求

1、右键点击线程组,选择 添加 > 取样器 > HTTP 请求。

HTTP 请求

2、写入目标 URL 和其他 HTTP 请求详终信息。

HTTP 请求信息

配置请求头

为确保数据格式正确,可添加 HTTP 信息头:

1、右键点击 HTTP 请求,选择 添加 > 配置元件 > HTTP 信息头管理器。

adf24d9d65a549c0bb9ff25a6ce1db53~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

2、添加 Content-Type: application/json 等必要的信息头。

06326d437e6c4504af55ca0c4e1a0c72~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

断言设置

断言是用来验证请求响应的条件。常用断言配置包括:

1、响应断言和 JSON 断言:验证返回的内容或结构。

2、右键点击请求或控制器,选择添加断言,并配置具体的验证规则,如期望的状态码或相应字段的值。

16bb6945a1154e96a6e5a30d3a6dc241~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

监听器与结果分析

监听器负责收集数据并展示测试结果。常用的监听器包括聚合报告器、结果树和图形结果监听器。

  1. 在任意组件上右键,选择添加 > 监听器,然后选定需要的监听器类型。
  2. 查看结果,通过图形或数值了解测试性能,如响应时间、吞吐量等。

db65f359a0904eb2acc8cd74c296487a~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

执行测试

一切配置就绪后,运行测试计划并通过配置的监听器观察结果。调整参数并重复测试以达到最优性能配置。

36f32d81b5774c49adf03160f1b6cee1~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

提高测试效率的技巧

利用数据驱动测试

通过 CSV 数据文件导入不同测试场景的参数,可大幅提高测试场景的覆盖率和效率。

扩展 JMeter 功能

安装 JMeter 插件以支持更复杂的测试需求,如使用 JSON Path Extractor 或 Response Assertion 等进行更精细的结果校验。

  1. 下载并安装 JMeter 插件 管理器。
  2. 通过插件管理器搜索和安装所需插件。
  3. 重启 JMeter 以激活安装的插件。

运用分布式测试

在多机环境下进行分布式测试,以模拟更高级别的用户并发,从而揭露潜在的性能瓮颈。

总结而言,JMeter 是一个功能强大的工具,可以帮助开发和测试团队在软件开发周期中识别和解农重的性能问题。正确的设置和策略可以极大提高测试的效率和效果。

相关文章:

  • 【分享】Word“打开密码”的常见问题及解决方法
  • electron教程(一)创建项目
  • uniapp + vue3 + Script Setup 写法变动 (持续更新)
  • IP白名单及其作用解析
  • 获取HTML元素的offsetParent属性
  • 传输线在阻抗匹配时串联端接电阻为什么要靠近发送端
  • Java_多线程:线程池
  • Spring Boot与Apache Kafka的深度集成
  • 如何利用React和Python构建强大的网络爬虫应用
  • leetcode-20-回溯-切割、子集
  • 5G赋能安防视频监控:EasyCVR视频汇聚融合创新技术,共筑多场景安全防线
  • 学习springAOP
  • 重写父类方法、创建单例对象 题目
  • 发布一个Yii2扩展把debug信息存储到MongoDB中
  • el-scrollbar组件使用踩坑记录
  • 《Java编程思想》读书笔记-对象导论
  • Bootstrap JS插件Alert源码分析
  • CentOS 7 防火墙操作
  • css属性的继承、初识值、计算值、当前值、应用值
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • es6--symbol
  • Golang-长连接-状态推送
  • gops —— Go 程序诊断分析工具
  • Java IO学习笔记一
  • Java 多线程编程之:notify 和 wait 用法
  • Javascript 原型链
  • Java超时控制的实现
  • Netty 4.1 源代码学习:线程模型
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 思维导图—你不知道的JavaScript中卷
  • 在electron中实现跨域请求,无需更改服务器端设置
  • (2)STM32单片机上位机
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Java)【深基9.例1】选举学生会
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (八十八)VFL语言初步 - 实现布局
  • (二)学习JVM —— 垃圾回收机制
  • (转)Unity3DUnity3D在android下调试
  • *** 2003
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET : 在VS2008中计算代码度量值
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .Net 知识杂记
  • .NET导入Excel数据
  • .NET学习全景图
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @JSONField或@JsonProperty注解使用
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [Avalon] Avalon中的Conditional Formatting.
  • [BZOJ 1040] 骑士
  • [flask]http请求//获取请求体数据