每周读书与学习->JMeter主要元件详细介绍(一)配置元件

作者:张永清-老清日期:2025/10/21

每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。

在前面的学习中,我们已经讲到在Jmeter中配置元件主要用于完成性能测试中一些常见配置信息的配置,在前面的章节学习中,大家或许已经对配置元件的使用和作用有了一个初步的了解,在本章节学习中,我们将对一些常见的配置元件进行详细的介绍。

**1、配置元件

**1.1.CSV数据文件设置

如下图所示,CSV 数据文件设置这个配置元件是Jmeter中用的最多的配置元件之一,CSV 数据文件设置通常可以用于Jmeter多线程并发用户的参数化设置,我们都知道,做性能测试时,通常需要模拟大量的不同的用户操作,而不是使用同一个用户在进行持续的并发操作,因为这并不符合真实的用户场景。不同的用户会有不同的用户属性,比如肯定会有不同的用户名、密码等信息,而这些不同的用户属性就需要通过参数化的形式设置给多线程下的每一个并发用户。

从图中可以看到,CSV数据文件设置的界面中主要包括如下内容:

  • 文件名:设置需要读取的CSV文件名称,通常建议包含完整的文件路径,当然也可以使用相对路径,相对路径通常是根据当前Jmeter测试计划所保存的路径来进行相对路径的解析,由于Jmeter支持分布式性能压测,当使用分布式性能压测时CSV文件必须存储在服务器主机系统上与JMeter服务器启动位置相对的正确目录中。
  • 文件编码:设置打开CSV文件的编码方式。
  • 变量名称:设置从CSV文件中读取出来的数据需要保存的变量,多个变量之间通过指定的分隔符进行分割,如下图所示的CSV文件中,可以看到其包含了两列数据,因此可以保存成两个变量,一个变量用于存储用户名,比如叫user,一个变量用于存储密码,比如叫password,在后续的Jmeter性能测试脚本中,就可以通过${user}和${password}来引用这两个变量了。
  • 忽略首行:设置是否忽略首行,通常CSV文件都会有一个类似Excel文件一样的表头,用来标注每一列数据的含义,由于表头数据通常需要忽略,所以这里设置时允许用户是否忽略CSV文件数据中的首航。
  • 分隔符:用于设置CSV文件中的每列数据之间通过哪个分隔符来进行分割,下图中的CSV文件数据就是通过逗号来分割的,因此假如时类似下图所示的文件格式,这里就应该设置为逗号。
  • 是否允许带引号:用于设置是否允许使用带引号的数据值,默认为False。
  • 遇到文件结束符再次循环:用于设置遇到文件结束符是否再次重新从头读取CSV文件中的数据,通常遇到文件结束符代表了文件已经读取到了最后一行了,默认为True。
  • 遇到文件结束符停止线程:用于设置遇到文件结束符时,直接停止线程,代表所有的并发用户的变量数据已经读取完毕,无法读取到新的变量数据,所以线程直接停止。
  • 线程共享模式:用于设置多个线程用户之间的CSV文件数据的共享模式,默认为所有线程都共享,代表CSV数据文件只打开一次,然后每个线程按照顺序轮流读取里面的数据。其他的共享模式包括:当前线程组共享(当有多个线程组时,每个线程组都会打开一个CSV数据文件,也就是每个线程组之间的变量数据是隔离的)、当前线程共享(每个线程都会单独打开一个CSV文件数据,每个线程之间的数据都是互相隔离的)、标识符共享(同一标识符的所有线程打开一个CSV文件数据)。

**1.2.HTTP Cookie管理器

在前面的章节学习中,我们已经有对HTTP Cookie管理器做过了一些初步的介绍,由于HTTP请求是最常见的一种客户端和服务端的请求交互模式,也是性能测试中性能压测频率最高的一种请求服务,所以在这里再详细介绍一下HTTP Cookie管理器的使用,因为HTTP请求中经常需要对Cookie进行管理以达到最真实的模拟用户操作的效果。HTTP Cookie管理器有如下两个作用:

  • 会像浏览器一样存储和发送Cookie,比如一个HTTP请求,并且响应结果中包含了一个Cookie,Cookie管理器会自动存储该Cookie,并将其用于后续对该特定网址的所有请求,而且接收到的Cookie还可以存储为Jmeter的线程变量,如果要将Cookie保存为变量,请先修改Jmeter的自定义属性CookieManager.save.cookie=true,然后通过${cookie_}来进行引用。在Jmeter中,每个线程通常都会有自己独立的Cookie存储区,也就是说,每个线程之间的会话都是独立的,互相不会存在干扰,也就是和实际的用户场景一样,Jmeter 多线程模拟的效果也是每个用户拥有自己独立的会话和Cookie。另外Jmeter还会自动检查接收到的Cookie是否对当前待测试的URL是有效的,这就意味着Jmeter不会存储跨域请求的Cookie,当然如果需要使用跨域的Cookie,可以设置Jmeter的属性配置CookieManager.check.cookie=false,这样Jmeter 就不会自动检查跨域请求了。
  • 如下图示,支持手动将Cookie添加到cookie管理器中,如果做了这样的设置那就表示该Cookie将会在所有的并发线程用户中进行共享使用。在默认情况下,具有空值的Cookie会被默认被忽略,但是可以通过设置Meter属性CookieManager.delete_null_cookies=false来进行更改,另外手动设置时,cookie名称必须是唯一的,如果第二个Cookie被设置为相同的名称,那么将会自动替换第一个Cookie。

**1.3.HTTP 信息头管理器

HTTP 信息头管理器通常用于管理和设置HTTP请求的请求头,请求头是HTTP请求的一部分,如下图所示。

常见的HTTP请求头包含如下:

  • Cache-Control:通常用于控制请求的缓存时长,当在时长范围内时,直接从缓存中获取数据,通常可以设置的值包括no-cache、no-store、no-transform、max-age=具体时长等。
  • Connection:用于控制HTTP请求连接的方式,比如可以设置为keep-alive表示保持当前的连接为活动状态,让当前连接可以复用。
  • Date:表示请求发出的日期和时间。
  • Pragma:用于在HTTP请求中传递指定的指令,通常在HTTP 1.0版本的协议中经常被使用到,比如填入no-cache时就表示不适用缓存。
  • Trailer:用于表示在分块传输编码中包含的额外头域。
  • Transfer-Encoding:用于表示请求传输的编码方式,比如chunked表示分块传输编码。
  • Upgrade:用于表示客户端和服务器协商切换到不同的协议类型,以便在同一个 TCP 连接上进行通信,比如填入websocket表示客户端希望将该 HTTP 连接升级为 WebSocket 连接。
  • Accept:用于表示客户端可以接受的MIME类型,比如设置为text/html, application/json表示客户端可以接受的类型为HTML和JSON格式的数据。
  • Accept-Charset:用于表示客户端可以接受的字符集编码,比如设置为utf-8表示客户端可以接受UTF-8编码的数据。
  • Accept-Encoding:用于表示客户端可以接受的编码类型,比如设置为gzip表示客户端可以接受gzip压缩格式的数据。
  • Accept-Language:用于表示客户端可以接受的语言类型,比如设置为en-US表示客户端可以接受美国英语。
  • Authorization:用于表示客户端向服务端提供的身份验证信息,比如设置为Basic xxxxxxx表示使用基本身份验证。
  • Cookie:用于设置客户端向服务端请求时的Cookie信息,服务端会验证Cookie是否正确或者失效,如果Cookie不正确,可能会提示需要重新登录等。
  • From:用于表示客户端请求的电子邮件地址。
  • Host:用于表示客户端请求的目标服务器地址。
  • Referer:用于表示客户端当前请求的来源页面地址。
  • User-Agent:用于描述客户端的信息,比如浏览器类型和版本以及操作系统类型等。

2、本次学习总结

  • 配置元件中的CSV 数据文件设置、HTTP Cookie管理器、HTTP 信息头管理器的高阶使用方式。

读者们需要能完成一些更加复杂的Jmeter性能测试脚本的编写,因为在性能测试时,有时候会遇到一些逻辑很复杂的业务需求,这时候可能就会需要用到函数助手或者逻辑控制器来完成这些复杂的性能测试场景。

出处:本次学习的内容参考自清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书


每周读书与学习->JMeter主要元件详细介绍(一)配置元件》 是转载文章,点击查看原文


相关推荐


AWS云基础设施可观测性完整指南
ivwdcwso2025/10/20

引言 在现代云原生架构中,可观测性已成为确保系统稳定性、性能和可靠性的关键要素。本文将深入探讨如何在AWS云环境中构建完整的可观测性体系,涵盖监控、日志、追踪和告警的最佳实践。 可观测性三大支柱 1. 指标监控 (Metrics) 指标是系统性能的数值化表示,提供系统健康状况的量化视图。 核心指标类型: 基础设施指标: CPU、内存、磁盘、网络 应用指标: 响应时间、吞吐量、错误率 业务指标: 用户活跃度、交易量、转化率 2. 日志记录 (Logs) 日志提供系


为何一个系统上线要经过N轮测试?带你看懂企业级发布体系
G探险者2025/10/19

大家好,我是G探险者! 在 IT 行业中,一个系统从开发完成到最终上线生产,并不是一蹴而就的过程。 你可能听说过这样的说法:“代码要经过 N 轮测试才能上线。” 从开发环境(DEV)到系统集成测试(SIT),再到用户验收测试(UAT),最后部署到生产环境(PROD),每一步都在为最终的稳定上线保驾护航。 这种多环境、多阶段的发布流程,表面上看似繁琐,但它背后承载的是风险控制、质量保障与团队协作的体系化思想。 如果缺乏这些环节,哪怕一个小小的配置错误、接口不兼容、性能瓶颈,都可能在生产环境引发严重


注入“侨动力” 锻造“湘非链”
hg01182025/10/17

2025年非洲侨团侨领侨商湖南行首场活动在长沙举办。 红网时刻新闻记者 聂伊岑 秦楼 卢欣 陈啸鼎 长沙报道 汇聚侨智侨力,深化湘非合作。 9月27日至30日,2025年非洲侨团侨领侨商湖南行活动在长沙、邵阳两地举办。 长沙市雨花区8个优质项目牵手非洲;15个湘非合作项目落地湖南湘江新区;邵阳海外订单纷至沓来;10位“海外招商大使”成为湖南与非洲之间最活跃的“经贸使者”。 本次湖南行成功将双方的深厚友谊与共同愿景转化为了实实在在的合作成果。 回顾4天的活动,不难发现,湖南与非洲的“朋


Redis(64)Redis的Lua脚本有哪些常见场景?
Victor3562025/10/16

Redis 的 Lua 脚本可以极大提升操作的原子性和效率,特别适用于需要多个 Redis 命令组合执行的场景。以下是一些常见的使用场景,并结合代码进行详细说明。 1. 分布式锁 Redis 的 Lua 脚本常用于实现分布式锁,以确保多个客户端在并发访问时的互斥性。 示例:分布式锁的获取与释放 -- 获取锁 local lock_key = KEYS[1] local lock_value = ARGV[1] local ttl = tonumber(ARGV[2]) if redis.cal


Python 的内置函数 bytearray
IMPYLH2025/10/14

Python 内建函数列表 > Python 的内置函数 bytearray class bytearray(x=b''): ''' 创建 bytearray :param x: 要转换的变量 :return: x 转换为 bytearray 后的值 ''' Python 的内置函数 bytearray 是一个可变序列,用于存储字节数据。它类似于 bytes 类型,但主要区别在于 bytearray 是可变的,而 bytes 是不可变的。以下是关于


【HarmonyOS AI赋能】朗读控件详解
GeorgeGcs2025/10/13

【HarmonyOS AI赋能】朗读控件详解 一、前言 鸿蒙系统提供了系统级别的朗读控件,来实现对文本进行朗读的业务需求。不需要复杂的SDK接入和集成,就可实现商业级别的朗读效果。 朗读控件分为听筒组件和朗读控制器,以及朗读面板三部分组成。 朗读面板又分为吸边小面板和全屏朗读面板。 需要注意的是,仅支持中国境内(不包含中国香港、中国澳门、中国台湾)提供服务。并且实时朗读的正文信息长度10000字符以内。 二、如何使用朗读控件? 以下代码为上图所示的DEMO源码,可直接新建工程后,贴到index


不止能聊,还能“动手”:谷歌AI代理掀起数字浪潮
墨风如雪2025/10/12

想象一下,你不再需要亲自盯着屏幕,点击鼠标,输入文字,一遍遍重复那些枯燥的在线操作。有一天,你只需对AI说一声:“帮我预订下周五的餐厅,找到离家最近的那个,并且确保能带宠物。”然后,它就能像一个训练有素的助手,熟练地在浏览器中穿梭,完成一系列复杂的任务——搜索、筛选、填写信息、预约…… 这并非遥远的科幻场景。就在最近,谷歌扔下了一颗重磅炸弹:Gemini 2.5 Computer Use模型正式登场。这不仅仅是一个新模型,更是谷歌向“计算机使用智能体”(CUA)这个未来战场吹响的号角,预示着AI


汽车软件开发的质量和安全管理流程
NewCarRen2025/10/10

摘要 软件开发流程是智能车辆(联网车辆和自动驾驶车辆)的核心,必须精心管理。自动化与联网功能的开发分别通过功能安全和网络安全开发流程实现,且需遵循相关标准,这些标准规定了流程、最佳实践、危害、威胁及管理策略。通过改进软件开发流程,智能车辆的人体工程学性能将得到提升。本文阐述了如何通过软件开发来管理实现自动化与联网功能的流程,以及是否可能改变管理团队的策略与软件开发流程。 1、引言 智能车辆是一种能够从周围环境中获取信息,并对信息进行处理,从而实现自主安全行驶且不造成任何伤害的车辆。此外,智


前端路由的秘密:手写一个迷你路由,看懂Hash和History的较量
良山有风来2025/10/9

你是不是也遇到过这样的场景?开发单页面应用时,页面跳转后刷新一下就404,或者URL里带着难看的#号,被产品经理吐槽不够优雅? 别担心,今天我就带你彻底搞懂前端路由的两种模式,手把手教你实现一个迷你路由,并告诉你什么场景该用哪种方案。 读完本文,你能获得一套完整的前端路由知识体系,从原理到实战,再到生产环境配置,一次性全搞定! 为什么需要前端路由? 想象一下,你正在开发一个后台管理系统。传统做法是每个页面都对应一个HTML文件,切换页面就要重新加载,体验特别差。 而前端路由让你可以在一个页面内实


Kubernetes核心技术与集群部署项目
企鹅侠客2025/10/7

从集群搭建到核心功能应用的完整流程,内容涵盖集群部署、核心组件、资源管理、安全机制、持久化、监控与应用交付等关键技术。首先介绍 Kubernetes 的架构与特性,深入讲解 kubeadm 与二进制两种集群搭建方式,包括 etcd 集群部署、Master 与 Node 组件安装、证书签发及高可用集群实现。核心技术部分系统解析 Pod 的运行机制、调度策略、健康检查与资源限制,讲解 Deployment、StatefulSet、DaemonSet、Job 等控制器的应用场景。配置管理方面介绍 Co

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0