性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化

news2025/2/4 8:56:00

目录

一、JMeter元件作用域和执行顺序

1. 元件的基本介绍

2. 元件作用域

3. 元件执行顺序

二、JMeter使用示例

1. JMeter第一个案例

2. 重点组件

2.1 线程组

2.2 HTTP请求

2.3 查看结果树

三、JMeter参数化

1. JMeter参数化常用方式

2. 用户定义的变量

2.1 场景

2.2 操作步骤

3. 用户参数

3.1 场景

3.2 操作步骤

4. CSV 数据文件设置

4.1 场景

4.2 参数详解(CSV 数据文件设置)

5. 函数(counter)

5.1 函数助手

5.2 参数化调用

5.3 运行结果

6. CSV和用户定义的变量作用域问题


一、JMeter元件作用域和执行顺序

1. 元件的基本介绍

元件: 多个类似功能组件的容器(类似于类) 。
常见的元件类型有:
1. 取样器
2. 逻辑控制器
3. 前置处理器
4. 后置处理器
5. 断言
6. 定时器
7. 测试片段
8. 配置元件
9. 监听器
组件: 实现独立的某个功能(类似于方法)

2. 元件作用域

在JMeter中, 元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。
提示: 核心是取样器, 其他组件都是以取样器为核心运行的, 组件添加的位置不同, 生效的取样器也不同。


作用域的原则

1. 取样器: 元件不和其他元件相互作用, 因此不存在作用域的问题;
2. 逻辑控制器: 元件只对其子节点中的取样器和逻辑控制器作用;
3. 其他六大元件: 除取样器和逻辑控制器元件外, 如果是某个取样器的子节点, 则该元件对其父子节点起作用;
4. 如果其父节点不是取样器, 则其作用域是该元件父节点下的其他所有后代节点(包括子节点, 子节点的子节点等) ;

3. 元件执行顺序

1. 配置元件(config elements)
2. 前置处理程序(Per-processors)
3. 定时器(timers)
4. 取样器(Sampler)
5. 后置处理程序(Post-processors)
6. 断言(Assertions)
7. 监听器(Listeners)


提示:
        1. 前置处理器、 后置处理器、 断言等元件功能对取样器起作用(如果在它们的作用域内没有任何取样器, 则不会被执行)
        2. 如果在同一作用域范围内有多个同一类型的元件, 则这些元件按照它们在测试计划中的上下顺序依次执行

二、JMeter使用示例

1. JMeter第一个案例

需求: 使用JMeter访问百度首页接口, 并查看请求和响应信息


操作步骤
1. 启动JMeter
2. 在‘测试计划’下添加‘线程组’
3. 在‘线程组’下添加‘HTTP请求’取样器
4. 填写‘HTTP请求’的相关请求数据
5. 在‘线程组’下添加‘察看结果树’监听器
6. 点击‘启动’按钮运行, 并查看结果   

2. 重点组件

  • 线程组
  • HTTP取样器
  • 察看结果树

提示: 无论哪个案例基本都需要以上三个组件

2.1 线程组

说明: 线程组是控制JMeter将用于执行测试的线程数, 也可以把一个线程理解为一个测试用户。 

位置: 右键点击‘测试计划’ --> 添加 --> 线程(用户) --> 线程组 

特点

  • 模拟多人操作
  • 线程组可以添加多个, 多个线程组可以并行或串行
  • 取样器(请求) 和逻辑控制器必须依赖线程组才能使用
  • 线程组下可以添加其他元件下组件 

分类

  • 线程组
    • 普通的、 常用的线程组, 可以看做一个虚拟用户组, 线程组中的每一个线程都可以理解为一个虚拟用户
  • setUp线程组
    • 一种特殊类型的线程组, 可用于执行预测试操作
  • tearDown线程组
    • 一种特殊类型的线程组, 可用于执行测试后工作

参数

取样器错误后要执行的动作

  • 继续: 如果取样器里的执行出现错误失败的时候, 请求不会停止, 继续执行。
  • 启动下一进程循环: 忽略错误, 线程当前循环错误, 执行下一个循环。
  • 停止线程: 只限当前线程停止, 不影响其他线程执行
  • 停止测试: 当前执行的线程全部执行完毕后结束
  • 立即停止测试: 立刻停止 

线程属性:
线程数: 虚拟用户数
Ramp-Up时间(秒): 启动全部虚拟用户数所需要的时间
循环次数: 指定次数或勾选永远
延迟创建线程直到需要: 测试开始的时候, 所有线程就被创建完。 勾选了此选项, 那么线程只会在合适的需要用到的时候创建.
调度器: 勾选后, 调度器配置才能使用;

2.2 HTTP请求

位置: 选中线程组->右键->添加->取样器->HTTP请求

 

作用: 向服务器发送http及https请求

参数详解:

  • 协议: 向目标服务器发送HTTP请求时的协议, 可以是http或者是https , 默认值为http 。
  • 服务器名称或IP : HTTP请求发送的目标服务器名称或IP地址。
  • 端口号: 目标服务器的端口号, 默认值为80 。
  • 方法: 发送HTTP请求的方法, 可用方法包括GET、 POST、 HEAD、 PUT、 OPTIONS、 TRACE、 DELETE等。
  • 路径: 目标URL路径(不包括服务器地址和端口)
  • Content encoding : 内容的编码方式, 默认值为iso8859
  • 同请求一起发送参数: GET请求时url中附带参数可以通过此方式添加
  • 消息体数据: POST/PUT请求JSON数据存放地

2.3 查看结果树

位置: 选中测试计划/线程组->右键->添加->监听器->察看结果树

作用: 查看请求请求和响应结果
参数详解:

  • 取样结果: 查看响应信息头信息、 响应状态码
  • 请求: 查看请求相关信息(url、 方法、 参数)
  • 响应: 查看响应信息 

三、JMeter参数化

思考: 如果循环访问某一请求10次, 要求每次请求发送不同的参数值, 该怎么做? 

使用参数的方式来替代脚本中的固定的测试数据

1. JMeter参数化常用方式

  • 用户定义的变量(最基础)
  • 用户参数 (所有测试数据都是固定的情况下)
  • CSV Data Set Config (灵活,业务测试常用)
  • 函数 (灵活,业务测试常用)

2. 用户定义的变量

添加方式: 测试计划 --> 线程组--> 配置元件 --> 用户定义的变量

什么时候使用?

定义全局变量

2.1 场景

  • 请求: https://www.baidu.com:443
  • 要求: 使用用户定义的变量配置被测系统的协议、 域名和端口 

2.2 操作步骤

1.添加线程组
2.添加用户定义的变量
3.添加HTTP请求
4.添加查看结果树 

用户定义的变量

 HTTP请求设置

3. 用户参数

添加方式: 测试计划 --> 线程组--> 前置处理器 --> 用户参数 

什么时候使用?

针对同一组参数,当不同的用户来访问时,可以获取到不同的值

3.1 场景

  • 请求: https://www.baidu.com
  • 要求: 第一次请求附带参数: name="张三"&age=28;第二次请求附带参数: name="李四"&age=30 

3.2 操作步骤

1.添加线程组
2.添加用户参数
3.添加HTTP请求
4.添加查看结果树


线程组设置
线程数设置: 2
 用户参数设置
HTTP请求设置
参数化格式: ${参数名}

运行结果

4. CSV 数据文件设置

添加方式: 测试计划 --> 线程组--> 配置元件 --> CSV 数据文件设置 

什么时候使用?

当不同的用户,或者同一个用户多次循环时,可以获取到不同的值

4.1 场景

  • 请求: https://www.baidu.com
  • 要求: 循环3次,每次请求时附带参数username,password,code的值不相同 

操作步骤
1.定义CSV数据文件
2.添加线程组
3.添加CSV 数据文件设置
4.添加HTTP请求
5.添加查看结果树


定义CSV数据文件

 

线程组设置

CSV 数据文件设置
HTTP请求设置

4.2 参数详解(CSV 数据文件设置)

  • 文件名: CSV文件路径
  • 文件编码: 文件编译字符编码, 一般设置UTF-8
  • 变量名称: 多个变量时, 使用英文逗号分隔
  • 忽略首行: True为忽略, False为不忽略, 默认值: False
  • 分隔符: 如文件中使用的是逗号分隔, 则填写逗号; 如使用的是制表符, 则填写\t;
  • 是否允许带引号: CSV文件中的内容是否允许带引号
  • 遇到文件结束符再次循环: 当读取文件到结尾时, 是否再从头读取文件, False=当读取文件到结尾时, 停止读取文件
  • 遇到文件结束符停止线程: 当“遇到文件结束符再次循环”一项为False时起效; True:当读取文件到结尾时, 停止进程
  • 线程共享模式: 共享模式一般默认即可
    • 所有线程: 该文件在所有线程之间共享, 所有线程循环取值, 线程一取第一行, 线程二取下一行
    • 当前线程组: 各个线程组分别循环取值
    • 当前线程: 每个文件分别为每个线程打开

5. 函数(counter)

计数函数, 一般做执行次数统计使用;
位置: 在菜单中选择--> 工具--> 函数助手对话框

什么时候使用?

自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义

5.1 函数助手

参数设置

 

  • TRUE, 每个用户有自己的计数器; FALSE, 使用全局计数器
  • Name of variable in which to store the result (optional):用于存储结果的变量名(可选)
  • 生成-复制

5.2 参数化调用

5.3 运行结果

6. CSV和用户定义的变量作用域问题

CSV的作用域是针对线程的, 只有两种情况:

  • 对所有线程组中的线程生效
    • 父节点是测试计划, 并且线程共享模式是“所有线程”时, 对所有线程组中的线程生效
  • 对当前线程组中的线程生效
    • 父节点是某个线程组时, 只会对当前线程组生效

用户定义的变量作用域针对的是测试计划
无论用户定义的变量组件放在哪里, 他都会针对整个测试计划生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解OpenCV的线段绘制函数line()

函数line()用于在图像上绘制圆形。 函数line()利用两点确定一条直线的原理在图像中绘制出一条线段。 C原型如下: void cv::line(InputOutputArray img,Point pt1,Point pt2,const Scalar & color,int thickness 1,int lineType LINE_8,int shift 0)Python原…

智能优化算法:人工蜂鸟算法 - 附代码

智能优化算法:人工蜂鸟算法 摘要:人工蜂鸟算法( AHA )是 ZHAO 等 于 2021 年提出的一种新型元启发式优化算法 . 该算法模拟了自然界中蜂鸟轴向飞行、对角飞行、全方位飞行 3 种特殊飞行技能和引导觅食、区域觅食、迁移觅食 3 种智能觅食策略,并通过引入…

【大数据入门核心技术-Spark】(三)Spark 本地模式安装

目录 一、Spark集群三种部署模式 1、 Local模式 2、Spark Standalone模式 3、Spark on YARN模式 二、准备工作 1、Hadoop环境安装 2、下载spark 三、安装spark 1、解压 2、配置环境变量 3、修改配置文件 4、测试安装是否成功 四、运行测试spark 1、读取本地文件 …

【Java|golang】1760. 袋子里最少数目的球---逆向二分法

给你一个整数数组 nums ,其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。 你可以进行如下操作至多 maxOperations 次: 选择任意一个袋子,并将袋子里的球分到 2 个新的袋子中,每个袋子里都有 正整数…

buildroot 升级软件包

因为软件漏洞问题,需要升级软件包,如 ncurses、libpwquality 等; 我目前采用的方法如下: 环境: 下载一个 buildroot 的最新版本: git clone git://git.buildroot.net/buildroot.git 我使用的 linux 环…

深入底层,spring mvc父子容器初始化过程解析

spring mvc父子容器初始化过程解析1、为什么要学习spring mvc底层?2、Java Web应该学什么?1、Tomcat2、servlet3、filter4、listener3、spring mvc容器初始化过程1、以WebApplicationInitializer.onStartup()方法作为入口2、registerDispatcherServlet()…

Java真的不难(五十二)Stream流的深入理解与流式编程

Stream流的深入理解与流式编程: 在今年年初小应学长也写过Stream与Lambda的两篇文章,今天先将两者结合起来进行流式编程 一、关于这两者 Stream与Lambda都是Java8引入的新概念,lambda在Java编程中对于函数式编程的支持,有助于代…

H5 WebSQL每日成语

有一天看到同事发的类似 这种成语填空一样的内容。 惟利( )视 为德( )终 质非文( ) ( )追耗子 烂漫天( ) ( )则改之,无则嘉勉 得( )之作 哀( )如潮 于是就去网上找成语数据库表的 SQL… 哈哈哈 很容易就找到了. 本来打算写个前后端,想了想可以但没…

Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT题解

这场好难我是废物&#xff0c;掉大分了 A. Absolute Maximization 利用|找最大值和&找最小值即可 #include <bits/stdc.h> using namespace std; // #define int long long #define endl \nvoid solve() {int n;cin >> n;int maxn 0,minn 1023;for(int i …

TCP报文结构、确认应答机制、超时重传机制、连接管理机制

TCP报文结构、确认应答机制、超时重传机制、连接管理机制一、TCP报文结构二、确认应答机制三、超时重传机制四、连接管理机制4.1 三次握手建立连接4.2 四次挥手断开连接一、TCP报文结构 可靠传输是TCP中最最核心的特性&#xff01;&#xff01;&#xff01; 上篇博客我们已经介…

企事业单位如何做好服务器数据防泄露,防病毒工作

目前现状 无论是中小企业还是大型企事业单位&#xff0c;均有属于自己的内网或公有云服务器。这些服务器有的是专门的SVN、GIT代码服务器&#xff0c;有的是文档存储服务器&#xff0c;有的是应用服务器。服务器是企业的核心命脉&#xff0c;所有知识产权及多年心血都集中汇总…

【学习笔记】JDK源码学习之HashMap(附带面试题)

最近发布 AND 其他好文 &#xff1a;地址 什么是 HashMap &#xff1f;它和 Map 之间又有什么样的关系呢&#xff1f;我们是否能拿它在并发中使用呢&#xff1f; 带着以上问题&#xff0c;让我们一同走入这让人着迷的 HashMap 。 1、什么是HashMap&#xff1f; HashMap 基于…

DOM算法系列005-获取给定节点所属的window对象

UID: 20221220091217 aliases: tags: source: cssclass: created: 2022-12-20 我们知道&#xff0c;在一个HTML页面中&#xff0c;可以包含很多个框架或框架集&#xff0c;那么&#xff0c;当给定一个节点&#xff0c;我们如何获取这个节点所属的window对象呢&#xff1f; 首先…

【填坑向】Linux获取Java程序resource下的文件路径(这次的坑好像没填住……

​╮(&#xffe3;▽&#xffe3;"")╭没错&#xff0c;就是那个传说中的FileNotFoundException&#xff0c;文件找不到了 一开始&#xff0c;特别单纯的俺是把文件直接放在项目根目录的&#xff0c;获取文件地址的位置就只写了一个文件名&#xff08;相对路径&…

Nature子刊:生命的最初几个小时内可快速学习音位辨别—基于fNIRS研究

摘要 人类新生儿可以区分音素&#xff0c;但这种能力背后的神经机制尚不清楚。新生儿的大脑可以学会区分自然&#xff08;前&#xff09;元音和逆向&#xff08;后&#xff09;元音&#xff08;在子宫中学习不到的&#xff09;。利用功能近红外光谱&#xff0c;我们检测了出生…

工控CTF之协议分析2——MMS

协议分析 流量分析 主要以工控流量和恶意流量为主&#xff0c;难度较低的题目主要考察Wireshark使用和找规律&#xff0c;难度较高的题目主要考察协议定义和特征 简单只能简单得干篇一律&#xff0c;难可以难得五花八门 常见的工控协议有&#xff1a;Modbus、MMS、MQTT、CoA…

关于3D可视化的几个知识点

3D可视化&#xff0c;运用三维仿真技术实现信息感知、智能调度以及主动式运营维护&#xff0c;把复杂抽象的数据信息&#xff0c;以合适的人们视觉元素及视角用3D立体方式进行一比一还原呈现&#xff01; 近些年&#xff0c;将繁琐的信息通过可视化的图表视觉化展现出来的应用场…

惠普Elite蜻笔记本系统损坏怎么U盘重装教学

惠普Elite蜻笔记本系统损坏怎么U盘重装教学&#xff0c;有用户使用的惠普Elite蜻笔记本系统受到了其他恶意程序的损坏&#xff0c;导致无法正常的开启使用。所以想要去进行电脑系统的重装。那么如何U盘重装电脑系统&#xff0c;一起来看看详细的重装步骤吧。 准备工作&#xff…

有哪些实用的软件开发项目管理工具?

给大家介绍下&#xff0c;目前最新的免费项目管理工具&#xff0c;希望对大家有所帮助。 1、 Co-Project智能项目管理工具 智能项目管理平台&#xff0c;是CoCode旗下的软件开发全生命周期的项目管理平台&#xff0c;涵盖了从需求、计划、设计、开发、测试再到交付的整个项目周…

青少年关联网络功能地形的性别差异

我们发现了个性化联想网络功能地形的规范性性别差异&#xff0c;包括腹侧注意、默认模式和额顶网络。此外&#xff0c;染色体富集分析显示&#xff0c;功能地形多变量模式的性别差异在空间上与x连锁基因的表达以及星形细胞和兴奋性神经元细胞类型的特征相耦合。这些结果突出了性…