性能测试学习-基本使用-元件组件介绍(二)
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 提供了端到端的加密保…...
网络攻击的常见形式
开篇 本篇文章来自于《网络安全 ——技术与实践》的学习整理笔记。 正篇 口令窃取 相比于利用系统缺陷破坏网络系统,最容易的方法还是通过窃取用户的口令进入系统。因为人们倾向于选择很糟糕的口令作为登录密码,所以口令猜测很容易成功。通常࿰…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...