参数化就是选取不同的参数作为请求内容输入。使用 JMeter 测试时,若要求每次传入的数据不一样,则需要对输出进行参数化。
为什么需要参数化?
1、相同数据被缓存导致测试结果不准确(如,服务器缓存了缓存数据,导致压测流程不全面)
2、流程不能正常执行(如,一笔订单只能被执行一次)
参数化方式
1、CSV Data Set Config:将参数化的数据放入文件中,参数化读取依赖于文件操作;适用于参数化数据量较多的场景,且维护比较简单灵活
2、User Defined Variables:可以配置脚本中的公共参数,如域名,端口号,不需要随着压测进行动态改变
3、Function Helper 中的函数:使用函数的方式生成参数,如果你需要随机数、uuid 等
4、数据关联:从A请求的响应中提取数据,共给其他请求使用
具体操作
一、CSV Data Set Config
添加 CSV Data Set Config 元件
CSV Data Set Config
- 填写元件配置信息
元件配置信息
元件中各项参数含义:
Filename(文件名):csv文件名称;
File encoding(文件编码):文件的编码格式,根据需要填写,一般指定为 UTF-8 即可;
Variable Names(变量名称):参数文件列名,如图userName、password,使用时通过“${变量名称}”即可;
参数文件
Ignore first line(忽略首行):第一行不作为数据读取;
Delimiter(分隔符):文件中的数据分隔符;
Allow quoted data(是否允许带引号):按需填写;
Recycle on EOF(遇到文件结束符再次循环):多线程或线程组循环时,是否允许文件循环读取;
Stop thread on EOF(遇到文件结束符停止线程):遇到文件结束符是否停止线程,与 Recycle on EOF 有关联;
Sharing mode(线程共享模式):按需选择;
- 发送请求
login 请求信息与之前的教程一致
login请求- 请求参数
使用数据文件中的列名作为变量名
参数替换
- 查看结果
请求参数已经替换为 csv 文件中的内容
结果
结果
结果
User Defined Variables
- 添加元件
User Defined Variables
- 设置 content-type 并替换 http header manager
参数设置
使用上一步设置的参数
参数使用
Function Helper
- 使用 tools -> function helper dialog,调试助手函数
助手函数对话框
测试
- 应用
助手函数使用
查看结果
数据关联(另类的参数化)
提取一个请求的响应结果为参数,传递给其他请求使用该参数
以bean shell为例
提取“login”响应结果中的用户名给getListLike使用
后置beanshell
从响应结果中提取userName,输入到变量“g_user_name”中
参数提取
其他接口中使用提取的变量
参数使用
BeanShell中预设的变量(The following variables are set before the script is executed):
- log - the Logger for the BeanShell function (*)
- ctx - JMeterContext object
- vars - JMeterVariables object
- props - JMeterProperties (class java.util.Properties) object
- threadName - the threadName (String)
- Sampler - the current Sampler, if any
- SampleResult - the current SampleResult, if any
以 JSON 提取器为例
- 添加元件
JSON提取器
拿之前的响应结果,测试提取表达式
JSON提取测试
填写提取器信息
Names of created variables:提取数据写入的变量名。如图,将响应数据的用户名,提取到 user_name 变量中
提取
使用 user_name 变量
变量使用
查看结果
使用结果
总结:
jmeter四种参数化方式,大家可以在实际工作中灵活选用。






















