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

JMeter的使用,傻瓜式学习【上】

目录

前言

1、JMeter元件及基本使用作用域(简述)

1.1、基本元件

1.2、作用域的原则

1.3、元件执行顺序

3、JMeter三个重要组件

3.1、线程组

案例:

3.2、HTTP请求

3.3、查看结果树

响应体中,中文乱码解决方案: 


前言

        没有安装的伙伴,可以先看看,这篇博客:http://t.csdnimg.cn/eYMDr


1、JMeter元件及基本使用作用域(简述)

1.1、基本元件

基本元件有哪些?

        我们进入后JMeter后,可以看到如下页面:

        我们选中测试计划这个这一栏,可以进行重命名,不过重点不在这里,是我们要知道哪些是JMeter的原件,我们选中测试计划这一栏,右键选择添加一个线程组:

右键选择添加一个线程组:

下面的红框中,也是JMeter的元件~ 

       

各个元件的简单理解:

  1. Sampler:取样器。就是发送什么请求,例如http请求等,调用get、post方法发送请求
  2. 逻辑控制器:例如包含一些逻辑运算等
  3. 前置处理器:对请求参数化进行复制
  4. 后置处理器:提取响应中特定字段的值
  5. 断言:对提取出来的值与预期结果进行对比
  6. 定时器:例如控制循环发送请求的时间
  7. 配置元件:进行初始化测试数据
  8. 监听器:在控制台查看脚本运行的结果

        看完上述的说明,可能还是有些懵,没关系,下面我们来一起继续学习,带着大家做一些案例,就会明白啦~ 

元件与组件有什么关系?

  • 元件:多个类似功能组件的容器,可以当做是一个类
  • 组件:容器中实现独立的某个功能,可以看做是一个方法
  • 类中可以有多个方法

所以我们可以看到:

1.2、作用域的原则

  1. 取样器:核心,没有作用域
  2. 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
  3. 其他元件:如果是某个取样器的子节点,则该元件只对其父节点起作用;如果其父节点不是取样器,则其作用域是该元件父节点下的其他节点所有后代节点(包括子节点、子节点的子节点等)

        这里的第三点,我们就可以理解为,如果你是一个其他元件,而你的爸爸是取样器,那么你就可以管着你爸;如果说你爸爸不是取样器,那么你就可以管着你的新兄弟姐妹,以及你的兄弟姐妹的后代

1.3、元件执行顺序

        在同一个作用域下(怎么看他们在在不在同一个作用域:同目录/级别/缩进)的不同元件的执行顺序:配置元件-前置处理程序-定时器-取样器-后置处理程序-断言-监听器

        在同一个作用域的相同元件的执行顺序:从上到下一次执行

案例:

上述的执行顺序?

正解:定时器1- 请求 - 定时器1 - 定时器2 - 请求2


3、JMeter三个重要组件

3.1、线程组

什么是线程组?

JMeter中的线程组就是用于执行测试的一组用户

而这里的线程数,也就是我们所模拟的用户个数~

线程组的分类:

  1. Setup线程组:预测试操作,所有脚本之前执行
  2. Teardown线程组:测试后 操作,所有脚本之后执行
  3. 普通线程组:执行测试用例,可以有1个或者多个(并行 / 串行)

线程组的属性说明:

思考,以下场景:

  • 模拟10个用户并行执行
  • 模拟10个用户5s内启动完成
  • 模拟2个用户各循环3次
  • 模拟2个用户运行30s
  • 模拟2个用户等待10s后开始执行

这些,场景都可以设置出来,就算是理解了这一块~ 

案例:

以下有两个场景:

  • 配置200个线程数,循环次数为300
  • 配置300个线程数,循环次数为200

实操:

 访问百度为例:

添加以下组件:

添加位置:

  •  线程组:选中测试计划 - 
  • http请求:选中线程组 - 
  • 察看结果树:选中测试计划 -  

线程组1的设置:

就不用200、300了,运行时间有点长,我们使用20、30:

 

请求1的设置:

线程组2的设置:

请求2的设置:

运行所有:

 

运行指定的线程组:

 

 运行线程组,运行时间:

 点击察看结果树,可看到结果:

点击这里,可清空查看结果树中的数据:

分析这两个的区别:

  •  线程数代表虚拟用户数,用户数越多,负载越大【例如,多个用户给服务器的压力比一个用户给的压力要大吧】
  •  循环次数代表总的运行时间,次数越多,运行时间越长【运行多次的时间要比运行一次的时间长吧】

3.2、HTTP请求

该组件的作用:

        向服务器发送http及https请求

位置:

上述的案例中已经说了:选中线程组-右键-添加-取样器-http请求

参数说明:

3.3、查看结果树

        上述,翻译成中文,想必大家都能理解,就不解释了,下面我们主要来说一下,如何处理,响应体中,中文乱码的问题:

响应体中,中文乱码解决方案: 

JMeter的安装路径下,找到bin目录---打开jmeter.properties文件,修改配置:

修改前:

修改后:

重启JMeter就可以啦~~~

相关文章:

JMeter的使用,傻瓜式学习【上】

目录 前言 1、JMeter元件及基本使用作用域(简述) 1.1、基本元件 1.2、作用域的原则 1.3、元件执行顺序 3、JMeter三个重要组件 3.1、线程组 案例: 3.2、HTTP请求 3.3、查看结果树 响应体中,中文乱码解决方案&#xff1…...

主定理(一般式)

主定理(Master Theorem)是用于分析递归算法时间复杂度的一个重要工具。它适用于形式化定义的一类递归关系,通常采用分治策略解决问题的情况。 目录 主定理简化版的局限主定理一般形式情况1: n l o g b a n^{log_{b}{a}} nlogb​a …...

WLAN的组网架构和工作原理

目录 WLAN的组网架构 FAT AP架构 AC FIT AP架构 敏捷分布式AP 下一代园区网络:智简园区(大中型园区网络) WLAN工作原理 WLAN工作流程 1.AP上线 (1)AP获取IP地址; (2)AP发…...

使用OBS Browser+访问华为云OBS存储【Windows】

背景 项目中使用华为云 S3 存储,java 代码中通过华为云 OBS 提供的esdk-obs-java 来访问文件。 但是,通过 JAVA SDK 方式不太方便运维,所以我们需要一款可视化的客户端软件。 华为云 OBS 自身也提供了一款客户端软件,名为 OBS Browser+。 OBS Browser+简介 OBS Browse…...

C++总结(3):类的动态内存分配、异常、类型转换运算符

文章目录 1 类的动态内存分配1.1 C动态内存分配1.2 拷贝构造函数1.3 赋值运算符(operator)重载 2 异常3 类型转换运算符 1 类的动态内存分配 1.1 C动态内存分配 在C/C中都可以使用malloc/free来分配内存,但C还有一种更好的方法:new和delete。下面以动态…...

折半搜索(meet in the middle)

介绍 折半搜索,又称 meet in the middle \text{meet in the middle} meet in the middle,指将整个搜索过程分为两部分,并对两部分分别进行搜索,最后得到两个答案序列,将这两个答案序列进行合并,即可得到最…...

【机器学习】loss损失讨论

大纲 验证集loss上升,准确率也上升(即将overfitting?)训练集loss一定为要为0吗 Q1. 验证集loss上升,准确率也上升 随着置信度的增加,一小部分点的预测结果是错误的(log lik 给出了指数级的惩…...

LeetCode 779. 第K个语法符号【递归,找规律,位运算】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

java try throw exception finally 遇上 return break continue造成异常丢失

如下所示,是一个java笔试题,考察的是抛出异常之后,程序运行结果,但是这里抛出异常,并没有捕获异常,而是通过finally来进行了流程控制处理。 package com.xxx.test;public class ExceptionFlow {public sta…...

设计模式——装饰器模式(Decorator Pattern)+ Spring相关源码

文章目录 一、装饰器模式的定义二、个人理解举个抽象的例(可能并不是很贴切) 三、例子1、菜鸟教程例子1.1、定义对象1.2、定义装饰器 3、JDK源码 ——包装类4、JDK源码 —— IO、OutputStreamWriter5、Spring源码 —— BeanWrapperImpl5、SpringMVC源码 …...

MATLAB R2018b详细安装教程(附资源)

云盘链接: pan.baidu.com/s/1SsfNtlG96umfXdhaEOPT1g 提取码:1024 大小:11.77GB 安装环境:Win10/Win8/Win7 安装步骤: 1.鼠标右击【R2018b(64bit)】压缩包选择【解压到 R2018b(64bit)】 2.打开解压后的文件夹中的…...

GEE错误——影像加载过程中出现的图层无法展示的解决方案

问题: // I dont know if some standard value exists for the radius, in the same, I will assume that some software would prefer to use square shape, but circle makes more sense to me. // pixels is noice if you want to zoom in and out to visualize…...

读图数据库实战笔记03_遍历

1. Gremlin Server只将数据存储在内存中 1.1. 如果停止Gremlin Server,将丢失数据库里的所有数据 2. 概念 2.1. 遍历(动词) 2.1.1. 当在图数据库中导航时,从顶点到边或从边到顶点的移动过程 2.1.2. 类似于在关系数据库中的查…...

QT如何检测当前系统是是Windows还是Uninx或Mac?以及是哪个版本?

简介 通过Qt获取当前系统及版本号,需要用到QSysInfo。 QSysInfo类提供有关系统的信息。 WordSize指定了应用程序编译所在的平台的指针大小。 ByteOrder指定了平台是大端序还是小端序。 某些常量仅在特定的平台上定义。您可以使用预处理器符号Q_OS_WIN和Q_OS_MACOS来…...

Maven配置阿里云中央仓库settings.xml

Maven配置阿里云settings.xml 前言一、阿里云settings.xml二、使用步骤1.任意目录创建settings.xml2.使用阿里云仓库 总结 前言 国内网络从maven中央仓库下载文件通常是比较慢的,所以建议配置阿里云代理镜像以提高jar包下载速度,IDEA中我们需要配置自己…...

由浅入深C系列八:如何高效使用和处理Json格式的数据

如何高效使用和处理JSON格式的数据 问题引入关于CJSON示例代码头文件引用处理数据 问题引入 最近的项目在用c处理后台的数据时,因为好多外部接口都在使用Json格式作为返回的数据结构和数据描述,如何在c中高效使用和处理Json格式的数据就成为了必须要解决…...

多媒体应用设计师 第16章 多媒体应用系统的设计和实现示例

口诀 思维导图 2020...

golang平滑重启库overseer实现原理

overseer主要完成了三部分功能: 1、连接的无损关闭,2、连接的平滑重启,3、文件变更的自动重启。 下面依次讲一下: 一、连接的无损关闭 golang官方的net包是不支持连接的无损关闭的,当主监听协程退出时,…...

用Python定义一个函数,用递归的方式模拟汉诺塔问题

【任务需求】 定义一个函数,用递归的方式模拟汉诺塔问题,三个柱子,分别为A、B、C,其中A柱子上有N个盘子,从小到大编号为1到N,盘子大小不同。现在要将这N个盘子从A柱子移动到C柱子上,但移动的过…...

二手的需求

案例1030 某天项目经理小王,从用户现场带回了需求,以图形的方式,交给了产品经理。告诉他就照这样设计,结果是项目经理放弃让产品经理出效果图。 原因是产品经理觉得项目经理带回来的需求有问题。项目经理解释产品经理不接受&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...