从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习
jmeter线程组参数化及函数学习
- Jmeter基础
- 基本使用流程
- 组件与元件
- 线程组
- 线程的执行方式
- Jmeter组件执行顺序
- 常见属性设置
- 查看结果数的作用域
- 举例
- Jmeter参数化
- 实现方式
- 1.用户定义参数
- 2.用户参数
- 3.函数
- 4.csv数据文件设置
- 每日复习
Jmeter基础
基本使用流程
启动项目案例
- 启动 mysql 服务
- 启动 api-1.0.jar
- 验证服务启动是否成功 http://localhost:8081/sa/listarea 请求到数据即可
使用步骤
-
启动 jmeter 并搭建基本框架
-
线程组: 测试计划右键 -> 线程(用户) -> 线程组
-
http请求: 线程组右键添加 -> 取样器 -> HTTP请求
-
察看结果数: 线程组右键添加 -> 监听器 -> 察看结果数

-
-
设置接口测试三要素
设置要素一和要素二
默认值: 协议 http 端口号 8081 编码 utf-8 路径/sa/listarea 请求方式 get

-
保存计划, 运行并查看结果

组件与元件
组件: jmeter中的一些功能点实现, 如, 线程组 http请求 察看结果数
元件: 对组件按照性质归类分组, 作用: 方便管理组件

线程组
概念:
进程:正在运行的程序 程序启动, 进程创建 程序关闭, 进程释放
线程:程序中的执行线索(路径) 1.如, 迅雷中每一部电影的下载都是一个线程 2.如, 游戏中的每一个角色都是一个线程
线程组 :对线程分类归组
层级关系: 进程 > 线程组 > 线程

线程的执行方式
顺序执行 多个线程按照顺序依次执行 (如, 电影需要先下载再播放 线程的启动和结束顺序一致)
并发执行 多个线程同时执行 如, 多部电影同时下载 线程的启动和结束顺序不一定一致
线程组的作用 方便管理线程
Jmeter组件执行顺序
默认执行顺序
jmeter 的默认执行顺序是并发执行
“独立运行每个线程组”
测试计划中, 勾选"独立运行每个线程组"后, 执行顺序变为顺序执行

常见属性设置

线程数设置为3循环次数设置为1,与线程数设置为1,循环次数为3的区别在于前者模拟的是三个用户每个用户访问1次服务器资源,后者为一个用户访问3次
特殊线程组
setUp线程组:最先执行的线程组,一般用于初始化操作
tearDown线程组:最后执行的线程组,一般用于资源销毁

查看结果数的作用域
查看结果树显示线程组内取样器的执行结果,查看结果树添加位置不同,对应生效的取样器也不同
1.添加在测试计划下 对所有线程组的所有取样器生效
2.添加在线程组下:只对当前组内取样器生效
3.添加在取样器下:只对当前取样器生效
举例
需求使用jmeter访问案例的增/删/改/查 接口
增

删

改

注意:如果提交的数据是JSON格式时,需要声明数据的内容类型 需要使用"配置元件"中的组件HTTP信息头管理器 新增一个参数名为 Content-Type 对应的参数值为 application/json;charset=UTF-8

http请求的字段值被复用 需要使用"配置元件"中的组件HTTP请求默认值

Jmeter参数化
动态的生成/设置/导入数据(程序代替人工) 高效 安全 更加强大
实现方式
1.用户定义参数
步骤
- 编写脚本
- 封装: 测试计划/线程组右键添加 -> 配置元件 -> 用户定义的变量 组件, 添加对应的变量
- 调用: 通用方式-在 http请求中, 对应的字段, 使用 ${变量名} 进行调用


2.用户参数
步骤
- 编写脚本
- 存储测试数据(不需要依赖外部文件, 用户数少的时候适合使用)
- 调用 ${变量名}, 注意: 设置线程组的线程数, 一般有几个用户就设置几次


3.函数
步骤
- 编写脚本
- 打开函数助手(鼠标悬停在工具栏, 会有提示)
- 选择所需函数, 生成能够被调用的格式
- 调用: 哪里需要粘哪里(注意需要设置线程组的循环次数)
常用函数介绍
- __counter() 计数器
- __Random() 生成随机数(少量随机数的时候)
- __time() 时间函数
- __UUID() 生成随机ID(大量随机数的时候)



4.csv数据文件设置
补充内容
- csv文件其实就是格式化的txt文件
- csv文件用逗号分隔值
- txt换csv: 把文件后缀的txt改为csv即可
在jmeter中, 直接读取txt文件也是可以的
步骤
- 准备脚本和csv数据文件
- 调用
- 常规调用, 设置循环次数, 有几条数据就设置线程组的循环次数为几
- 非常规调用
- 在线程组设置中勾选"永远"
- 修改csv数据文件设置组件的配置
- 把遇到文件结束符再次循环? 设置为 False
- 把遇到文件结束符停止线程? 设置为 True


每日复习
参数化的概念是什么?
参数化的作用是什么?
相关文章:
从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习
jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…...
图文并茂:解析Spring Boot Controller返回图片的三种方式
欢迎来到我的博客,代码的世界里,每一行都是一个故事 图文并茂:解析Spring Boot Controller返回图片的三种方式 前言使用Base64编码返回图片使用byte数组返回图片使用Resource对象返回图片图片格式转换与性能对比 前言 在互联网的世界里&…...
问题处理记录 | 表输出报错 Packet for query is too large (5,214,153 > 4,194,304).
这个错误是由于MySQL服务器接收到的查询数据包太大而引起的。具体来说,错误消息中提到的数据包大小为5,214,153字节,而MySQL服务器默认只接受最大为4,194,304字节的数据包。 要解决这个问题,你可以尝试通过修改MySQL服务器的配置来增大max_a…...
数据结构_栈和队列(Stack Queue)
✨✨所属专栏:数据结构✨✨ ✨✨作者主页:嶔某✨✨ 栈: 代码:function/数据结构_栈/stack.c 钦某/c-language-learning - 码云 - 开源中国 (gitee.com)https://gitee.com/wang-qin928/c-language-learning/blob/master/function/…...
基于docker 的elasticsearch冷热分离及生命周期管理
文章目录 冷热集群架构的应用场景冷热集群架构的优势冷热集群架构实战搭建集群 索引生命周期管理认识索引生命周期索引生命周期管理的历史演变索引生命周期管理的基础知识Rollover:滚动索引 冷热集群架构的应用场景 某客户的线上业务场景如下:系统每天增…...
pikachu靶场(xss通关教程)
(注:若复制注入代码攻击无效,请手动输入注入语句,在英文输入法下) 反射型xss(get型) 1.打开网站 发现有个框,然后我们在框中输入一个“1”进行测试, 可以看到提交的数据在url处有显示…...
实验0.0 Visual Studio 2022安装指南
Visual Studio 2022 是一个功能强大的开发工具,对于计算机专业的学生来说,它不仅可以帮助你完成学业项目,还能为你将来的职业生涯打下坚实的基础。通过学习和使用 Visual Studio,你将能够更高效地开发软件,并在编程领域…...
数据结构之----线性表
线性表分为 顺序存储结构 和 链式存储结构 线性表的顺序存储结构: 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。 1,顺序表的结构: #define MAXSIZE 20 typedef int El…...
thinkphp5.1 模型auto
在ThinkPHP5.1中,模型的自动完成功能可以通过在模型类中定义auto属性来实现。这个属性是一个数组,包含了需要自动填充的字段和对应的处理规则。 以下是一个简单的例子,展示了如何在ThinkPHP5.1的模型中使用自动完成功能: <?…...
企业微信创建应用(一)
登录到企业微信后台管理(https://work.weixin.qq.com/)进入自建应用(应用管理-应用-创建应用) 3.查看参数AgentId和 Secret 4.企业微信查看效果...
Cosmo Bunny Girl
可爱的宇宙兔女郎的3D模型。用额外的骨骼装配到Humanoid上,Apple混合了形状。完全模块化,包括不带衣服的身体。 技术细节 内置,包括URP和HDRP PDF。还包括关于如何启用URP和HDRP的说明。 LOD 0:面:40076,tris 76694,verts 44783 装配了Humanoid。添加到Humanoid中的其他…...
初始化linux数据盘(3TB)分区-格式化-挂载目录
场景说明:某云给我们服务器加载了一块3TB的硬盘扩容(没有直接扩,原因是原来的盘做的是mbr(什么年代了,谁干的)的分区,最大识别2TB) 确认磁盘 输入命令lsblk 查看数据盘信息 &#…...
NFS网络文件系统的应用
1.配置2台服务器要求如下: a)服务器1: 主机名:user-server.timinglee.org ip地址: 172.25.254.100 [rootserver100 桌面]# hostnamectl hostname user-server.timinglee.org [rootserver100 桌面]# ifconfig eth0: fl…...
AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘
问题描述 修改图片大小的时候,代码报错:AttributeError: module PIL.Image has no attribute ANTIALIAS 解决方案 在pillow的10.0.0版本中,ANTIALIAS方法被删除了。 方法1:修改版本(不推荐) pip instal…...
进程的共享主存通信实验
进程的共享主存通信 【预备知识】 共享存储区为进程提供了直接通过主存进行通信的有效手段,不像消息缓冲机制那样需要系统提供缓冲,也不像pipe机制那样需要事先建立一个特殊文件,而是由通信双方直接访问某些共享虚拟储存空间。在Linux中&…...
深度缓冲技术在AI去衣中的神奇作用
引言: 随着人工智能技术的飞速发展,其在图形处理和视觉领域的应用日益增多。AI去衣技术便是其中一个颇具争议但又技术上引人入胜的话题。今天,我们将深入探讨一项关键技术——深度缓冲(Depth Buffering),它…...
能效?性能?一个关于Windows下使用openssl speed进行速度测试的诡异问题
问题描述 最近的某个软件用到了openssl,所以就想着测试一下速度。我的电脑是惠普的,CPU是AMD Ryzen 7 PRO 6850HS,系统是Win11。我使用openssl自带的speed测试加密/解密的速度,命令大致如下: openssl speed -evp aes…...
block性能考虑和线程安全
性能考虑 频繁地创建和销毁大量的 block 可能会对性能造成影响,特别是当这些 block 被拷贝到堆上时。同时,block 捕获大量数据时也会增加内存使用。 在讨论性能考虑时,主要关注的是 block 的创建、拷贝到堆上以及捕获变量的成本。以下是针对…...
没有公网ip,如何实现外网访问内网?
目前拨号上网是最广泛的上网方式,这种方式优点是价格便宜,缺点是没有固定公网ip,每次重新您拨号ip地址都会变。如果有一台服务器,需要实现外网访问,在没有固定公网ip的环境下,该如何实现呢?使用…...
Python中如何将小数转化为百分数进行输出
小数转化为百分数 Python中如何将小数转化为百分数进行输出基本概念使用字符串格式化1. 使用字符串格式化操作符 %2. 使用str.format()方法3. 使用f-string(格式化字符串字面量) **重点内容**:**无论是通过使用%格式化操作符、str.format()方…...
2026年光电传感器在不同检测距离中的选型方法与检测距离参数
在自动化产线、物流分拣、包装机械、电子制造等领域,光电传感器的检测距离是选型时最先映入眼帘的参数。然而,很多工程师在实际应用中会发现:标称检测距离为10米的传感器,装上后检测5米的黑色物体就不稳定了;标称0.5米…...
从零到一:手把手教你用Cornerstone.js搭建一个基础的医学影像查看器
从零到一:手把手教你用Cornerstone.js搭建一个基础的医学影像查看器 医学影像的数字化呈现一直是医疗技术发展的重要方向。随着Web技术的进步,直接在浏览器中查看和操作DICOM等专业医学影像已成为可能。本文将带领前端开发新手一步步实现一个基础的医学影…...
GEO优化实战指南:中小企业如何精准提升本地服务获客效率?
随着线上营销的重要性日益凸显,中小企业面临着前所未有的机遇与挑战。GEO(生成式引擎优化)作为近年来兴起的一种技术手段,旨在帮助企业更高效地利用AI平台进行品牌推广与客户获取。本文将探讨中小企业如何通过GEO优化策略…...
手把手教你给咪咕盒子MGV2000刷机,S905L3芯片也能焕发新生(保姆级图文教程)
让老旧咪咕盒子重获新生的全流程刷机指南 前言:为什么我们需要给电视盒子刷机? 家里那台运营商赠送的咪咕MGV2000电视盒子,是不是已经让你忍无可忍了?开机慢得像老牛拉车,操作卡顿到让人抓狂,内置应用一大…...
Vivado 2022.2 中文用户名下,Vscode关联失效的终极修复与Verilog环境配置
Vivado 2022.2中文用户环境下的Vscode-Verilog开发全栈配置指南 当FPGA开发者遇到Windows中文用户名导致的Vivado-Vscode关联失效时,往往需要花费数小时排查环境问题。本文将系统性地解决这一痛点,并提供完整的Verilog开发环境配置方案。 1. 中文路径问题…...
终极指南:如何在Windows上免费扩展虚拟显示器,轻松打造多屏工作空间
终极指南:如何在Windows上免费扩展虚拟显示器,轻松打造多屏工作空间 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc …...
3个技巧让桌游卡牌设计效率提升5倍:EZCard自动化工具深度解析
3个技巧让桌游卡牌设计效率提升5倍:EZCard自动化工具深度解析 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/…...
告别跑飞!S32K3xx Standby模式唤醒后程序复位?手把手教你用WKPU和RTC保留关键数据
S32K3xx低功耗实战:WKPU与RTC协同解决Standby模式数据丢失难题 引言 在嵌入式系统设计中,低功耗优化一直是工程师们面临的永恒挑战。S32K3xx系列微控制器凭借其出色的电源管理能力,成为汽车电子、工业控制等领域的热门选择。然而,…...
Wireshark实战:从抓包到文件还原,手把手教你导出HTTP传输的图片和压缩包
Wireshark实战:从抓包到文件还原的完整指南 在数字化办公环境中,文件传输已成为日常工作的基础环节。无论是企业内部的文档共享,还是网站上的资源下载,HTTP协议承载着海量的文件传输任务。当我们需要排查文件传输故障、分析网络行…...
从原理到实战:晶体管开关电路设计与常见问题解析
1. 项目概述:为什么我们需要晶体管开关?如果你玩过Arduino或者树莓派,肯定遇到过这样的尴尬:想用单片机的一个GPIO引脚直接点亮一个12V的汽车大灯,或者驱动一个小马达,结果要么灯不亮,要么马达纹…...
