终于有人把 Jmeter 工具的 CSV 参数化讲清楚啦!

 

 

在性能测试和接口测试中,参数化是让测试更贴近真实场景的关键步骤,尤其是使用JMeter进行测试时,CSV文件的参数化功能能够让我们模拟大量用户输入,但很多测试人员对其理解不够透彻。今天,我们终于来详细讲清楚如何通过JMeter工具实现CSV参数化,让测试更灵活、更智能!

 

为什么在JMeter测试中要使用CSV文件进行参数化?如何正确配置CSV Data Set Config来实现参数化测试?

 


从事软件测试的小伙伴都知道Jmeter工具,当我们使用Jmeter工具做接口测试和性能测试的时候,CSV这个配置元件就会经常使用到。但是这个元件有很多场景很多人并不是很清楚,并且有些特性如果不弄明白会影响整个脚本的使用。所以,我们今天就给大家来讲一下这个CSV配置元件


CSV使用场景

CSV数据文件参数化是Jmeter的一个配置元件,当我们需要批量执行某个接口并需要构造真实数据的时候,可以从数据库里导出数据到CSV文件里,接口通过访问CSV文件批量进行操作。

CSV数据文件设置

CSV数据文件配置元件的界面如下图所示:

图片

其中每个部分应该要如何配置以及原理是什么,我们分别来详细给大家做一些讲解:

1)文件名

需要读取的csv配置文件,这里可以写绝对路径,也可以配置相对路径:

  • 绝对路径:点击浏览直接选择本地电脑上的文件,这样就会显示绝对路径;

  • 相对路径:相对的起始点是jmx脚本的位置 | 或者jmeter的bin文件目录,如果csv的文件直接在这两个目录,可以直接写文件名,不需要带前面的路径也可以找到。

两种路径的写法所以我们一般都建议文件名填写相对路径,更简洁也更方便以后做分布式测试脚本分发。

这个csv的文件是支持多种格式:txt、csv、json、xml ,主要是列和列之间是逗号的文本文件就是csv文件,那么就都支持。

2)文件编码

这个文件的编码由选择的文件自身编码来选择。

  • 如果用的是csv后缀的文件,字符集编码不一定是utf8。所以使用csv文件容易产生乱码现象。所以我们一般建议文件选择用txt后缀文件;

3)变量名称

自己定义变量名用来接收从csv文件里读取的数据,多个变量的时候用英文的逗号隔开,会依次去接收第一列,第二列...的数据;

  • 如果第一个变量接受第一列,第二个变量接受第三列,中间写逗号+ 空格 |空来实现,如 name, ,pid

  • 这个变量名就可以被后续的接口直接调用 ${name} ,从而获取csv文件里的数据。

4)忽略首行

  • True 不要第1行,读取的时候不会读取第一个行数据;当csv第一行是表头的时候,会选择True;

  • False 要第1行 ,当csv文件没有表头的时候选择False。

5)分隔符

读取的文件的列与列的分隔符号,默认csv文件是英文逗号,所以默认的配置就是英文的逗号;

6)是否允许带引号

  • False:不允许带引号, 如果csv数据里有引号就会当做数据的整体组成部分:如 “1344555555”

  • True:允许带引号 , 如果数据有引号就会自动去掉引号。

如下图所示:

图片

注意:这个配置只能针对txt文本操作,csv文件不会生效。

7)遇到文件结束符再次循环吗?

  • True: 继续循环取文件中值。当文件内容从头到尾,全部都取了1次值之后,再从头开始取值。这个是默认情况的值。

  • False: 不再循环取值,如果还要用值,就是一个空值 , 不会停止运行;假设文件只有10行,但是,你要循环取100个值,那么第11个值开始到最后,值都是 。

8)遇到文件结束符停止线程吗?

  • 假设文件只有10行,但是你本来想运行100次,jmeter就会只运行10次就停止了

  • True:停止线程,jmeter就会停止运行。

  • False:继续运行,jmeter还会继续跑;这个是默认情况下的值。

具体的配置场景和运行效果如下:

图片

图片

图片

当两个配置冲突了,就像编写代码一样,从上到下运行,后面的跟前面的冲突,后面的会失效。

图片

9)线程共享模式:有三个选项,所有线程,当前线程组,当前线程,工作原理分别如下:

  • 所有的线程在使用这个文件的时候, 排队依次使用文件中的数据:第一个线程使用第一行,依次排列取值。

  • 注意:当2个线程组共享这个CSV文件,csv放测试计划下给多个线程组共享才,否则不能跨线程组使用。

图片

  • 单独线程组里单独读取自己内存的数据,不会混用。每个线程组都从头开始取。

图片

  • 如果设置循环,那么单个线程就会取第二行值。

  • 所有线程:所有线程共享这个csv文件数据,不管jmeter有多个线程组,总共有多少个线程,所有的线程都共用1份文件

  • 当前线程组:这个线程组的所有的线程共用1份csv数据。如果有多个线程组,内存中就有几分相同的数据加载。

  • 当前线程:每个线程【用户】私有1份, 有多少个线程,在内存中就有多少份。运行中取值时都取自己的那1份,都是从头开始。

图片

以上三种情况,最后一个【当前线程】选项占用内存最多。

csv元件使用的注意事项

Jmeter自带的csv数据文件设置功能, 多台机器做助攻机发起性能测试时会有问题:

因为助攻机的脚本和csv文件都是由主控机分发的,大家拿到的脚本和文件都是一样的;比如三台机器助攻机都是读取的第一行的数据发送的登录请求,那么登录的信息会导致其中2个登录失败,如果是注册接口也会因为数据不能重复而导致后面2个助攻机的接口请求会失败。

解决方法:

  • 1、不同助攻机读取的文件名相同,但是内容不同,就是让助攻机的文件内容做修改和差异化,这个比较多使用;

  • 2、让csv文件读取行随机,不要统一从第一行开始读取,这样数据重复的概率小很多。

 

在当今复杂的测试场景中,模拟大量用户行为对于性能测试至关重要。CSV参数化能够有效解决这一问题,让测试更加贴近真实场景。这也反映了自动化测试工具不断发展的趋势:提升测试的灵活性和多样性。

通过使用CSV参数化,JMeter可以轻松模拟复杂的用户输入,增强测试的真实性和覆盖面。只要合理配置CSV Data Set Config,并熟练掌握参数化调用的方式,你就能让性能测试变得更加高效和精准。

“参数化不是工具的难点,而是测试智慧的体现。”——掌握CSV参数化,让测试数据灵活自如,轻松应对各种复杂场景。

 

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

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

相关文章

JVM(HotSpot):JVM简单介绍

文章目录 一、什么是JVM二、优点三、比较四、学习路线 一、什么是JVM 定义:java程序的运行环境 首先,我们要知道,JVM是一套规范,运行java程序的一套规范。 那么,我们学习过java的人都知道,接口规范的实现类…

突破空间限制:4个远程控制电脑的办法

如何远程操作另一台电脑,高效完成工作任务? 今天这篇文章,就来分享4种高效且实用的远程控制电脑方法,这些方法不仅能够帮助我们跨越地域的空间界限,还能极大地提升我们的工作效率和灵活性。无论是远程汇报还是数据共享…

【多模态大模型】社招秋招实习 -- 快手招聘!

快手垂搜(多模态搜索&AI)团队 多模态 & 大模型 & Agent 正式员工(*3) & 实习生招聘 (*5,实习时间>3个月) 1、团队介绍 我们是快手垂搜大模型团队,致力于构建视觉大模型、多模态搜索、User Agent新系统,应用于多种电商场…

前后端分离Vue美容店会员信息管理系统o7grs

目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取 技术栈介绍 本课题的研究方法和研究步骤基本合理,难度适中,本选题是学生所学专业知识的延续,符合…

uniapp富文本editor输入二次扩展兼容微信小程序

在uni-app中开发富文本输入功能,并使其兼容微信小程序,需要注意一些特定的限制和解决方案。由于微信小程序本身对HTML的支持有限,直接在小程序中实现像Web那样完整的富文本编辑功能(如使用CKEditor、Quill等)是不可能的…

2024年【电气试验】试题及解析及电气试验模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年【电气试验】试题及解析及电气试验模拟考试题,包含电气试验试题及解析答案和解析及电气试验模拟考试题练习。安全生产模拟考试一点通结合国家电气试验考试最新大纲及电气试验考试真题汇总&#xff0…

【强化学习系列】Gym库使用——创建自己的强化学习环境2:拆解官方标准模型源码/规范自定义类+打包自定义环境

目录 一、 官方标准环境的获取与理解 二、根据官方环境源码修改自定义 1.初始化__init__() 2.重置环境 reset() 三、打包环境 1.注册与创建自定义环境 2.环境规范化 在本文的早些时候,曾尝试按照自己的想法搭建自定义的基于gym强化学习环境。 【强化学习系列】Gy…

IEEE-754 32位十六进制数 转换为十进制浮点数

要将 IEEE-754 32位十六进制数 转换为 十进制浮点数,可以使用LabVIEW中的 Type Cast 函数。以下是一些具体步骤,以及相关实例的整理: 实现步骤: 输入十六进制数:在LabVIEW中,首先需要创建一个输入控制器&am…

剃(磨)前插齿刀设计计算开发第二步:

从刀具上的各段齿形计算加工出的齿轮端面齿形,下一步进行细化处理[开心],去掉一些线头,增加一些关键参数的计算及标准,例如:SAP、UnderCut、EAP、Chamfer等等,祝我好运吧,谢谢!

MySQL系列—11.Redo log

1.简介 概念 redo log用于记录事务操作变化,记录的是数据被修改之后的值,(tbs space id page no action)。 作用 尚未完成的DML,数据库崩溃则用log恢复。保证事务持久性。 ( 1 ) 在页面修改完成之后,脏页刷入磁盘之…

ZYNQ FPGA自学笔记~点亮LED

一 ZYNQ FPGA简介 ZYNQ FPGA主要特点是包含了完整的ARM处理系统,内部包含了内存控制器和大量的外设,且可独立于可编程逻辑单元,下图中的ARM内核为 ARM Cortex™-A9,ZYNQ FPGA包含两大功能块,处理系统Processing System…

路由原理介绍

定义与过程 定义:是指导IP报文发送的路径信息 过程: 检查数据包的目的地确定信息源发现可能的路径选择最佳路径验证和维护路由信息 路由来源 直连路由:不需配置,路由器配置IP后自动生效 静态路由:手动配置 ip r…

Ubantu LLaMA-Factory实战

一、Ubantu LLaMA-Factory实战安装: CUDA 安装 CUDA 是由 NVIDIA 创建的一个并行计算平台和编程模型,它让开发者可以使用 NVIDIA 的 GPU 进行高性能的并行计算。 首先,在 https://developer.nvidia.com/cuda-gpus 查看您的 GPU 是否支持CU…

壹嘉情,中国与世界经济文化交流的新桥梁

壹嘉情正在全球华商领域迅速崛起。作为意大利华商总会的中国分部,壹嘉情承载着推动两岸及全球华商深度合作、实现资源共享和互利共赢的使命。它的成立标志着意大利华商总会在全球战略布局上的重要一步,同时也昭示了全球化浪潮中,华人企业正加…

苹果电脑也可以清除垃圾吗?苹果电脑清理垃圾用什么软件哪个好?

相对于Windows电脑,目前专注于苹果电脑清理的软件不算多,那么,苹果电脑垃圾清理软件哪个好?本文经过对比给大家推荐几款好用的软件。另外,我们还会进行苹果电脑垃圾清理方法盘点,让大家更了解电脑的清理方法…

从零开始讲DDR(0)——DDR的前世今生

一、计算机组成 计算机组成结构(Computer Architecture)是计算机系统的核心,它定义了计算机的基本工作原理和设计模式。计算机的组成可以分成以下3大类:中央处理器(CPU)、存储器和输入/输出子系统。 1.1 中…

达梦数据库DM8使用介绍

达梦数据库DM8使用介绍 达梦数据库DM8使用介绍一、安装达梦数据库二、初始化数据库实例三、SQL 分类DML(Data Mannipulation Language)数据操纵语言:DDL(Data Definition Language)数据定义语言:DCL(Data Control Language)数据控制语言:TCL(…

springboot实训学习笔记(5)(用户登录接口的主逻辑)

接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发以及注册时的参数合法性校验。具体往回看了解的链接如下。 springboot实训学习笔记(4)(Spring Validation参数校验框架、全局异常处理器)-CSDN博客文章浏览阅读576次,点赞7…

城市级河流三维处理及展示的一些技术

本文是一些算法技术的初探分析,会陆续修订。 1、问题 河流是一种非常复杂的多边形。在二维地图可以采用多边形填充算法(DDA)对任意复杂的多边形进行绘制与填充。但是三维引擎只能采纳三角面进行渲染。但在如此复杂的多边形面前,简单的三角化算法不能解…

Java 回顾方法的定义

一、方法的定义 1.修饰符(public static…)详见博客【Java 方法的定义】 2.返回值(int, double, char[],…., void)详见博客【Java 方法的定义】 3. break:跳出switch 结束循环,详…