JMeter(二):什么是jmeter参数化?为什么需要它?如何使用

JMeter(二):jmeter参数化

一、先搞懂:什么是参数化?为什么需要它?

(1)参数化的定义

  • 参数化是「用变量替代固定值」的技术,让 JMeter 在压测时自动循环调用不同数据,实现「一套脚本,多组数据」的效果。

  • 参数化是一种在软件开发、测试、数据分析等多个领域广泛使用的技术,其核心思想是将一些可能变化的值或变量提取出来,作为参数进行传递和管理,而不是将其硬编码在代码或流程中。

  • 示例:登录接口中,用${username}替代固定的testuser1,脚本可自动调用testuser2testuser3等不同账号。

(2)什么是参数化

  • 批量登录:模拟多用户并发登录,避免单账号登录限制;

  • 多数据测试:循环测试不同商品 ID、订单号,覆盖更多场景;

  • 动态值生成:随机生成手机号、时间戳、验证码等临时数据;

  • 接口关联:提取上一个接口的响应值(如 token、sessionId),作为下一个接口的参数(如下单接口需用登录 token)。

(3)参数化范围

复制代码
(1)局部参数化:局部参数化是指将参数限定在代码或流程的局部范围中使用,仅对局部的代码块、函数或模块产生影响
(2)全局参数化:全局参数化是指参数的影响范围扩展到整个程序或系统,可以被多个函数、模块或类访问和使用。
(3)具体应用:参数化范围的选择取决于具体的需求和场景,合理选择范围可以提高代码的可读性、可维护性和
安全性,同时在不同领域(如开发、测试、系统配置)中根据实际情况进行调整,以实现最佳的参数管理和使用效果。

(4)常用参数化方案对比

参数化方式 核心优势 适用场景 新手友好度
CSV 数据文件设置 支持大量数据、可复用 批量登录、多固定参数测试 ⭐⭐⭐⭐⭐
用户定义变量 配置简单、全局生效 固定不变的全局参数(如域名、端口) ⭐⭐⭐⭐⭐
函数助手 动态生成数据、无需文件 随机数、时间戳、随机字符串 ⭐⭐⭐⭐
JSON 提取器(关联) 提取响应动态值、接口联动 登录→加购→下单等流程压测 ⭐⭐⭐⭐

二、参数化方式及应用

1.用户定义的变量

复制代码
(1)使用场景:适用于存储一些静态的、整个测试计划中需要多次使用的常量,如服务器地址、端口号、用户名、密码等。
(2)配置步骤:
		右键点击测试计划,选择 "添加"->"配置元件"->"用户定义的变量"。
		在元件中添加变量名和变量值,如 server_address=127.0.0.1,port=8080。
		在需要使用这些变量的地方,使用 ${server_address} 和 ${port} 来引用。

2.用户参数

复制代码
(1)使用场景:该参数化方式适用于参数取值范围较小的情况,如较少用户登录系统。
(2)配置步骤:
		右键点击线程组,选择 "添加"->"前置处理器"->"用户参数"。
		在元件中添加变量名和对应的多个用户值,每个线程组会依次使用不同的参数组合

3. CSV 数据文件

复制代码
(1)使用场景:当需要测试不同的用户登录信息、搜索关键词等情况时,可以将这些数据存储在 CSV 文件中,每行代表一个用户或一个测试用例的数据。
(2)配置步骤:
		右键点击测试计划,选择 "添加"->"配置元件"->"CSV 数据文件设置"。
		配置文件路径、变量名称(如 username、password 等)、文件编码、分隔符等。
		在测试步骤中使用 ${username} 和 ${password} 来获取 CSV 文件中相应列的数据。

4. 函数助手

复制代码
(1)使用场景:需要生成随机数、唯一标识符、时间戳等情况。
(2)配置步骤:
		点击工具菜单中的 "函数助手对话框"。
		选择所需函数,如 __Random,设置函数的参数(如最小值、最大值)。
		将生成的函数表达式(如 ${__Random(1,100)})复制到需要使用的地方,如请求的参数中,JMeter 会在每次请求时计算该函数生成新的值。

5. JSR223 取样器

复制代码
(1)使用场景:它支持多种脚本语言,可以使用 不同 脚本在 JMeter 中实现参数化
(2)配置步骤:
		右键点击线程组,选择 "添加" -> "取样器" -> "JSR223 取样器"。
		在 JSR223 取样器中,比如选择脚本语言为 python(需要安装 Jython 引擎)。
		编写 Python 脚本。

6. OS进程取样器

复制代码
(1)使用场景:它支持多种脚本语言,可以使用不同语言脚本文件在 JMeter 中实现参数化
(2)配置步骤:
		比如python脚本,通过python代码写好随机生成客户姓名、身份证号的脚本,以json格式输出
		jmeter添加OS进程取样器,并配置路径,编码格式,防止乱码
		提取响应数据,设置成变量进行引用

7. 导入python脚本参数化

复制代码
(1)使用场景:一些jmeter内置参数化满足不了,使用python代码编写脚本进行引用参数化
(2)配置步骤:
		通过pycharm编写python脚本,比如随机生成客户姓名、身份证号的脚本
		jmeter添加OS进程取样器,并配置路径,编码格式,防止乱码
		提取响应数据,设置成变量进行引用

8. 导入Java脚本参数化

复制代码
(1)使用场景:一些jmeter内置参数化满足不了,使用java代码编写脚本进行引用参数化,常用来加解密
(2)配置步骤:
		把编写好的java脚本打成jar包,
		在测试计划下导入需要引用的jar包(或者直接放在jmeter目录jmeter\lib\ext路径下)
		添加BeanShell 前置或者后置处理程序,
		在BeanShell导入我们的jar包,调用里面的方法,把结果通过BeanShell语法设置成变量进行引用

三、避坑指南:常见参数化问题

  1. 变量名大小写敏感${username}${UserName}是两个不同变量,需保持一致。

  2. CSV 文件路径含中文 / 空格 :报错「File not found」,解决方案:用绝对路径(如D:\jmeter_data\login.csv),或把 CSV 放在 JMeter 的bin目录。

  3. JSON 提取器表达式错误:提取不到值,解决方案:在「查看结果树」的「JSON Path Tester」中验证表达式,确保路径正确。

  4. 线程组循环次数与 CSV 数据不匹配:数据用完后请求失败,解决方案:勾选「遇到文件结束符再次循环?:True」。

  5. 参数化变量未替换 :请求中仍显示${username},解决方案:检查变量名是否正确、元件是否添加到对应线程组下。

相关推荐
爱可生开源社区25 分钟前
MySQL 优化从库延迟的一些思路
数据库·mysql·性能优化
回眸&啤酒鸭44 分钟前
【回眸】Tessy 单元测试软件使用指南(五)进阶报错之解决指南(含泪整理)
单元测试
小二·1 小时前
前端测试体系完全指南:从 Vitest 单元测试到 Cypress E2E(Vue 3 + TypeScript)
前端·typescript·单元测试
m0_528723811 小时前
如何避免多次调用同一接口
前端·javascript·vue.js·性能优化
马优晨1 小时前
前端Network性能优化场景解析
性能优化·前端性能分析·谷歌浏览器network调试·谷歌浏览器network分析·浏览器性能调试
少云清2 小时前
【接口测试】1_Dubbo接口 _xx健康项目
测试工具·接口测试
天才测试猿2 小时前
软件测试之bug分析定位技巧
软件测试·python·selenium·测试工具·职场和发展·测试用例·bug
烛衔溟2 小时前
C语言并发编程:Windows线程
c语言·c++·windows·性能优化·多线程·并发编程·线程同步
Aliex_git2 小时前
性能指标笔记
前端·笔记·性能优化