性能测试学习-基本使用-元件组件介绍(二)
jmeter优点是:开源免费,小巧,丰富的学习资料和扩展组件
缺点是:1.不支持IP欺骗,分析和报表能力相对于LR欠缺精确度(以分钟为单位)
| 工具 | 用户量 | 分析报表 | IP欺骗 | 费用 | 体积 | 扩展性 |
| Loadrunner | 多(万) | 精确(s) | 支持 | 收费 | 大(单位gb) | 不能扩展 |
| Jmeter | 少 | 较差(min) | 不支持 | 免费 | 小(MB) | 有扩展组件 |
一、jmeter的安装和基本使用
(一)安装JDK
地址:http://www.oracle.com/
环境变量 :
- JAVA_HOME=D:\Java\jdk1.8.0_191
- Path中添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
校验:cmd命令行里输入 java -version
(二)安装jmeter
地址:Apache JMeter - Download Apache JMeter
解压安装包即可
启动3种方式:进入bin目录,双击jmeter.jar ; 双击ApacheJMeter.jar ;命令行输入java -jar ApacheJMeter.jar
(三)文件介绍
1. bin目录介绍(存放可执行文件和配置文件)

jmeter.bat: windows的启动文件(重要)
jmeter.log: Jmeter工具运行的日志文件
jmeter.propertites: jmeter工具的配置文件(重要)
jmeter.sh: linux的启动文件
jmeter-server: linux分布式测试的启动程序
jmeter-server.bat: windows分布式测试的启动程序
2. /docs/api/index.html
是jmeter的api文档,用于开发扩展组件

3. printable_docs目录
用户帮助手册

4. lib目录
存放jmeter依赖的jar包和用户扩展所依赖的jar包(ext目录下)

(四)功能概要
1. 修改默认设置 - jmeter界面汉化
临时的:菜单Options->Choose Language->Chinese(Simplified)
永久的:修改配置文件,bin\jmeter.properties文件,改成"language=zh_CN",然后重启jmeter

2. 主题修改

二、jmeter元件和组件的介绍
(一)元件的基本介绍
1. 元件:多个类似功能组件的容器(类似于类)

| 取样器 | 发送请求 |
| 逻辑控制器 | 控制语句的执行顺序 |
| 前置处理器 | 对请求参数进行预处理 |
| 后置处理器 | 对响应结果进行提取 |
| 断言 | 检查接口的返回结果是否与预期结果一致 |
| 定时器 | 设置等待 |
| 测试片段 | 封装一段代码,供其他脚本调用 |
| 配置元件 | 测试数据的初始化配置 |
| 监听器 | 查看jmeter脚本的运行结果 |
2. 组件:实现独立的某个功能(类似于方法)
如取样器里的HTTP请求,逻辑控制器里的循环控制器,事务控制器

(二)元件的作用域
元件的作用域是靠测试计划的树形结构中的父子关系来确定的。

提示:所有的组件都是以取样器为核心运行的。组件添加的位置不同,生效的取样器也不同。
1. 作用域规则:
- 取样器-->核心,不和其他元件相互作用,没有作用域
- 逻辑控制器-->只对其子节点中的取样器和逻辑控制器起作用
- 其他元件-->如果是某个取样器的子节点,则该元件只对其父节点其作用 ;如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)
2. 元件的执行顺序:
同一个作用域下不同类型元件:
- 配置元件(config elements)
- 前置处理器(per-processors)
- 定时器(timers)
- 取样器(sampler)
- 后置处理器(post-processors)
- 断言(assertions)
- 监听器(listeners)
同一个作用域下多个相同类型元件:
- 按照在测试计划中从上到下的顺序依次执行
举例:整理执行顺序
定时器1 - HTTP请求1 - 定时器1 - 定时器2 - HTTP请求2 - 定时器1 - 定时器3 - HTTP请求3
(三)线程组
1.线程组概览
作用:线程组就是控制jmeter用于执行测试的一组用户
特点:
- 模拟多人操作
- 线程组可以添加多个,多个线程组可以并行或串行
- 取样器(请求)和逻辑控制器必须依赖线程组才能使用
不控制顺序如图:

如果要顺序执行线程组,设置如下:

执行结果如图:

2.线程组的特点 :
- 模拟用户,支持多用户操作
- 多个线程可以串行执行,也可以并行执行
3.线程组的分类 :
setup线程组-前置处理,初始化
普通线程组-编写脚本,可以看做一个虚拟用户组,每一个线程都可以理解为一个虚拟用户
teardown线程组-后置处理,环境恢复等
4.线程组参数详解:

(1)模拟10个用户并行执行:


(2)模拟5个用户5s内启动完成


(3)模拟2个用户各循环3次



(4)模拟2个用户运行5s


(5) 模拟2个用户等待5s后开始执行,持续时间2s

(6)案例分析:
- 循环线程数为2,循环次数为3,运行观察结果
- 循环线程数为3,循环次数为2,运行观察结果
相同点:从请求数量来说,完全相同
不同点:场景不同
- 线程数:代表用户数,即性能测试时的负载量(线程数为2比线程数为3对应的负载量小)
- 循环次数:代表时间,即性能测试时的运行时间(循环次数3比循环次数2对应的时间长)
5. http请求使用示例

a.如何配置来发送http请求?
发送 GET 请求(请求参数在路径中 ):
URL协议:协议、服务器域名或IP、端口、方法(GET)、路径、编码格式
参数 :
- 在路径后添加参数 。格式 : ?键名=键值&键名=键值
- 在参数列表中添加参数 。格式:名称(键名)、值(键值)
发送POST请求(请求参数在消息体数据中):
URL:协议、服务器域名或服务器域名或IP、端口、方法(POST)、路径、编码格式
参数:
- 在消息体数据中添加请求体(form/json)
- 在参数列表中添加参数 (form)
b.重定向
GET https://www.baidu.com/s



HTTP请求的响应数据和HTTP请求-1的响应数据一样
重定向的原因分析 :
第一个HTTP请求中,URL错误,导致服务器产生了重定向,提供了新的URL路径
- jmeter会自动发送第二个http请求(使用第一个http请求中的返回的URL路径)
- 点击最外层http请求时,显示的内容于最后一个http请求的请求和响应数据一致。
6.响应数据中存在乱码
需要修改取样结果的编码格式->修改jmeter.properties文件:
# The encoding to be used if none is provided (default ISO-8859-1)
sampleresult.default.encoding=UTF-8
相关文章:
性能测试学习-基本使用-元件组件介绍(二)
jmeter优点是:开源免费,小巧,丰富的学习资料和扩展组件 缺点是:1.不支持IP欺骗,分析和报表能力相对于LR欠缺精确度(以分钟为单位) 工具用户量分析报表IP欺骗费用体积扩展性Loadrunner多(万)精…...
基于大模型的智慧零售教育科研平台——技术方案
一、概述 1.1背景 随着数字经济的快速发展和全社会数字化水平的升级,人工智能的积极作用越来越凸显,人工智能与各个行业的深度融合已成为促进传统产业转型升级的重要方式之一。ChatGPT的出现掀起了又一波人工智能发展热潮,人工智能行业发展势…...
C# using的几个用途
using 关键字有三个主要用途: 1.using 语句定义一个范围,在此范围的末尾将释放对象: string filePath "example.txt"; string textToWrite "Hello, this is a test message!"; // Use the using statement to ensure …...
MyBatis3.4全集笔记
MyBatis 1. MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Ja…...
IDEA一键启动多个微服务
我们在做微服务项目开发的时候,每次刚打开IDEA,就需要把各个服务一个个依次启动,特别是服务比较多时,逐个点击不仅麻烦还费时。下面来说一下如何一键启动多个微服务。 操作步骤 点击Edit Configurations 2.点击“”,…...
【Python3】random.choices 权重随机选取 详解
random.choices是Python 3中random模块中的一个函数,用于从指定的序列中以指定的权重随机选择元素。下面我将对该函数进行详细介绍,并提供一些示例代码和注意事项。 函数签名: random.choices(population, weightsNone, *, cum_weightsNone…...
【面试题-015】Redis的线程模型是什么 为什么速度快
redis面试题 Redis的线程模型是什么 为什么速度快? Redis是一个开源的、高性能的键值对(key-value)数据库。它之所以速度快,主要得益于以下几个方面的设计: 单线程模型: Redis的操作是单线程的ÿ…...
EasyV开发人员的使用说明书
在可视化大屏项目时,开发人员通常需要承担以下任务: 技术实现:根据设计师提供的设计稿,利用前端技术(如HTML、CSS、JavaScript等)和后端技术(根据具体项目需求,可能是Java、Python、…...
构造列表初始化和构造初始化区别
构造列表初始化和构造初始化在C等编程语言中,是两种不同的初始化类实例成员的方式。以下是它们之间的主要区别: 构造列表初始化(初始化列表) 定义:初始化列表以一个冒号开始,接着是一个以逗号分隔的数据成…...
Message passing mechanism (消息传递机制)
objc_msgSend 是 Objective-C 运行时系统中的一个核心函数,用于实现消息传递机制。在 Objective-C 中,方法调用实际上是消息传递的过程,当你在代码中调用一个方法时,编译器会将其转换为 objc_msgSend 函数的调用。 objc_msgSend …...
详解 Spark SQL 代码开发之数据读取和保存
一、通用操作 /** 基本语法:1.读取:SparkSession.read[.format("format")[.option("...")]].load("path")2.保存:DataFrame.write[.format("format")[.option("...")]][.mode("Save…...
Pulsar 社区周报 | No.2024-05-30 | BIGO 百页小册《Apache Pulsar 调优指南》
“ 各位热爱 Pulsar 的小伙伴们,Pulsar 社区周报更新啦!这里将记录 Pulsar 社区每周的重要更新,每周发布。 ” BIGO 百页小册《Apache Pulsar 调优指南》 Hi,Apache Pulsar 社区的小伙伴们,社区 2024 上半年度的有奖问…...
第二证券股票杠杆:4分钟直线涨停!这一赛道,AH股集体爆发!
今日早盘,A股继续小幅震动收拾,首要股指涨跌互现,两市个股跌多涨少,成交有萎缩的趋势。 盘面上,医药、中字头、旅游、房地产等板块相对活跃,混合实践、玻璃基板、AI手机PC、光刻机等板块跌幅居前。 “中字…...
JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓
个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 🈵Function方法 与 函数式编程💝1 call 💝…...
斜拉桥智慧施工数字孪生
基于图扑自主研发的 HT for Web 产品,利用现场照片及 CAD 图纸,结合 PBR 材质,搭建了具有赛博朋克风格的智慧斜拉桥可视化解决方案,精准复现斜拉桥建造规划过程,辅助运维人员对桥梁基建过程的网格化管理。提高桥梁的建…...
【chatGPT API】Function Calling:将自然语言转换为API调用或数据库查询
文章目录 一. 介绍二. 常见用例与Function Calling调用逻辑三. 调用细节1. 调用行为:tool_choice2. 调用规定:functions 四. 实战:查询公司相关产品 一. 介绍 OpenAI可以根据用户的要求输出一个符合用户要求的入参值。然后用户拿到入参值之后…...
Oracle Hint /*+APPEND*/插入性能总结
oracle append用法 Oracle中的APPEND用法主要用于提高数据插入的效率。 基本用法:在使用了APPEND选项后,插入数据会直接加到表的最后面,而不会在表的空闲块中插入数据。这种做法不需要寻找freelist中的free block,从而避免了在…...
正邦科技(day3)
出厂测试 设备校准 这个需要注意的是校准电流、电压、电感的时候有时候负感器会装反,mcu会坏,需要flash一下清空内存...
mac电脑多协议远程管理软件:Termius 8.4.0激活版下载
Termius 是一款功能强大的跨平台远程访问工具,可用于管理和连接各种远程系统和服务器。它支持SSH、Telnet、SFTP和Serial协议,并提供了键盘快捷键、自动完成和多标签功能,使用户可以方便地控制和操作远程主机。 Termius 提供了端到端的加密保…...
网络攻击的常见形式
开篇 本篇文章来自于《网络安全 ——技术与实践》的学习整理笔记。 正篇 口令窃取 相比于利用系统缺陷破坏网络系统,最容易的方法还是通过窃取用户的口令进入系统。因为人们倾向于选择很糟糕的口令作为登录密码,所以口令猜测很容易成功。通常࿰…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
