上一篇文章关于Jmeter介绍了Jmeter入门相关的知识。本文是实战篇,讲讲如何使用Jmeter对Http(s)进行压力测试。

Http测试

测试一

  首先,添加 “线程组”,选择 “添加” -> "Sampler" -> "HTTP请求"。其次,分别添加 “查看结果树”,“聚合报告”,“图形结果”等,用于查看测试结果。

Jmeter测试1

  配置 "HTTP请求",对应上图中的 “jmeter测试1”。这里配置Get请求,测试本地8080端口下的jmeter/test1接口地址,具体的Http配置及测试代码请参考如下。

Http配置1

@RequestMapping("jmeter")
@RestController
public class HttpController {private AtomicInteger atomicInteger = new AtomicInteger(0);@GetMapping("test1")public Map<String, Object> test1() {Map<String, Object> map = new HashMap<>(1);int decrementAndGet = atomicInteger.incrementAndGet();System.out.println("decrementAndGet = " + decrementAndGet);map.put("atomicInteger", decrementAndGet);return map;}}

  配置好后,点击绿色三角图标即可启动线程组,线程组的配置如下。

线程组配置

  启动测试请求后,响应结果如下,这是模拟1s内发起200次的请求。

察看结果树响应

聚合报告响应

图形结果响应

测试二

  一般而言,测试都需要尽可能的模拟真实用户。因此,通过传递不同的请求参数,来模拟不同的用户进行请求是必不可少的。接下来使用 “函数助手的” 方式,告诉大家如何模拟不同的用户进行压力测试。

  案例场景:模拟10个用户发起POST请求,请求地址jmeter/test2,要求在Http请求头中自定义请求头 Authorization ,不同用户对应的自定义请求头参数值不同。

1. 使用函数助手添加请求头参数

CSV,即Comma Separate Values,这种文件格式经常用来作为不同程序之间的数据交互格式。具体文件格式:每条记录占一行,以逗号为分隔符,逗号前后的空格会被忽略。字段中包含有逗号,该字段必须用双引号括起来;字段中包含有换行符,该字段必须用双引号括起来;字段前后包含有空格,该字段必须用双引号括起来;字段中的双引号用两个双引号表示;字段中如果有双引号,该字段必须用双引号括起来。

  在本地创建test2.cvs(如:G:\TEST\test2.cvs),添加10个用户对应的Authorization值(假设是:1 ~ 10),使用函数助手进行添加。

函数助手配置

2. 配置 “HTTP信息头管理器”

配置HTTP信息头管理器

  如上图所示,分别设置 Content-Type:application/jsonAuthorization:${__CSVRead(G:\TEST\test2.cvs,0)}

3. 模拟用户请求进行测试
@RequestMapping("jmeter")
@RestController
public class HttpController {@PostMapping("test2")public Map<String, Object> test2(HttpServletRequest request) {Map<String, Object> map = new HashMap<>(1);String authorization = request.getHeader("Authorization");map.put("authorization", authorization);return map;}}

  启动测试后,响应结果如下。

察看结果树响应

聚合报告响应

测试三

  案例场景:使用配置元件 “CSV数据文件” 的方式,模拟10个用户发起PUT请求,请求地址jmeter/test3,要求不同用户对应请求参数reqId的值不同。

1. 使用“CSV数据文件”添加请求参数

  在本地创建test2.cvs(如:G:\TEST\test2.cvs),添加10个用户对应的reqId值(假设是:1 ~ 10)。

CSV数据文件配置

2. 配置 “HTTP信息头管理器”

配置HTTP信息头管理器

  如上图所示,通过在请求路径使用占位符${}来读取“CSV数据文件”中对应的配置参数和值。注意,占位符内的参数名称要保持与配置一致。

3. 模拟用户请求进行测试
@RequestMapping("jmeter")
@RestController
public class HttpController {@PutMapping("test3")public Map<String, Object> test3(@RequestParam int reqId) {Map<String, Object> map = new HashMap<>(1);System.out.println("id = [" + reqId + "]");map.put("id", reqId);return map;}}

  启动测试后,响应结果如下。

察看结果树响应

Https测试

  为了方便,关于https的测试将选取网上站点进行,如我的简书主页,参考如下。

Https测试配置

写在最后

  关于http(s)这块的测试到这就介绍完了,本文重点部分就是学习两种实现参数化的方式。JMeter作为一款压测工具,我们只需要熟悉之后再多加练习,便可以基本掌握。下来我将继续梳理如何使用JMeter进行ws(s)测试,欢迎关注。


Jmeter系列

关于Jmeter
Jmeter 压测 http(s)
Jmeter压测 ws(s)

Jmeter 压测 http(s)相关推荐

  1. jmeter压测_简单七步,快速入门 JMeter原生压测

    导入本地的 JMeter 原生脚本,即可快速发起一次压测. 前提条件 JMeter 脚本需要在本地调试成功. 请同时上传依赖的 CSV 或者 JAR 文件.CSV 文件的 File Name 只需要文 ...

  2. JMeter压测入门简单使用

    JMeter压测入门简单使用. 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.2. ...

  3. jmeter 压测duobbo接口,施压客户端自己把自己压死了

    jmeter 压测duobbo接口,jmeter代码不合理,导致每执行一次请求,会调用一次消耗内存的实例化.导致越压越慢,请求发不出去.这个时候需要考虑修改代码了. 截图中,tps越来越少. 原来初始 ...

  4. java 多线程压测_java多线程Jmeter压测实现

    笔者最近在看jmeter源码,对多线程处理部分的了解记录如下. Part1 线程与多线程概念 提到线程先来看一下进程(线程的容器)的概念,进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.它 ...

  5. jmeter压测、操作数据库、分布式、 linux下运行的简单介绍

    一.jmeter压测 1.如何压测 常规性能压测:10-15分钟 稳定性测试:一周.2天等 如果想要压测10分钟,勾选永远,勾选调度器,填写600秒.也可以使用固定启动时间. 2.tps.响应时间 ( ...

  6. 手把手教你jmeter压测--适合入门

    [后台测试]手把手教你jmeter压测 我知道我迟早是要踏上了后台测试之路的,只是没想到来的这么突然.新接手了一个项目,在第一版发出后,产品需要做运营活动拉量,因为我担心突然的流量涌入是否会对后台造成 ...

  7. Jmeter+Prometheus+Grafana性能监控平台:将JMeter压测数据输出到Prometheus

    前言 1.小编之前写过一篇文章详细讲解了如何搭建一个HTTP接口性能实时监控测试平台,是用Grafana+Influxdb+Jmeter组合实现的,可以参考我写的这篇博客https://editor. ...

  8. jmeter压测学习11-模拟浏览器访问web页面

    前言 在做性能测试的时候,有时候我们希望测试用户访问一个web页面的加载时间,使用 jmeter 压测的话,需模拟浏览器的行为,加载整个页面的内容. 包含一些js,css,png图片资源等文件的加载. ...

  9. Jmeter压测运行原理,这些你知道么?

    前言:想知道jmeter压测的原理是什么,得先知道性能测试的核心三原则: 基于协议,多线程,场景模拟! 基于协议:基于应用层和传输层的各种协议.比如http,udp,ftp,tcp等 多线程:通过进程 ...

最新文章

  1. DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  2. WCF中安全的那些事!!!
  3. K/3 MRP运算数据不准的原因及解决方案
  4. superhot预告片下载_预告片:裸指关节SOA
  5. JAX-RS 2.0中的透明PATCH支持
  6. 洞察设计模式的底层逻辑
  7. endnote如何导入txt文件_python如何处理txt及excel文件
  8. 12月3号 命名规范和运算符的使用
  9. linux下的C语言编程(总结篇)
  10. 2021 年中国开源优秀人物揭晓
  11. android 注解创建对象,Android ORM 框架:GreenDao 使用详解
  12. echarts柱状图渐变色
  13. 邮编查询经纬度_行政区划省市区邮编区号拼音经纬度全面标准数据库 每月更新...
  14. 计算机网络——数据从网卡到应用的过程
  15. 【SEO案例】百度快照劫持怎么处理
  16. 20220119思维导图
  17. 机器人视觉系统分为哪几种,主要包括哪些关键技术?
  18. instagram分享_存档instagram帐户正在教被忘记的历史
  19. 微信公众号主体已注销 如何办理账号迁移和公证书?
  20. 固体物理题库之名词解释

热门文章

  1. 架构组件专栏 | ViewModel深入浅出
  2. 第五周项目一-三角形类雏形(3)
  3. 第五周项目一-三角形类雏形(1)
  4. 老榕智能建站软件_2020年,10大最佳免费建站软件
  5. Arduino(新手之路2)
  6. Android性能优化典范第二季
  7. Android性能优化之电量篇(四)
  8. Android判断应用是否拥有某种权限
  9. webpack预览页面配置
  10. solr多core的处理