JMeter参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号。JMeter一共有四种参数化方式,分别是:

  • CSV Data Set Config
  • Function Helper
  • User Defined Variables
  • User Parameters

CSV Data Set Config

所属组件:Config Element。

Name

带业务含义的名字。

Comments

可以为空的注释。

Configure the CSV Data Source

【Filename】文件名,可以是相对路径也可以是绝对路径。推荐使用相对路径,好处是脚本迁移或者分发到多台远程负载机,不改脚本就能直接复用。相对路径的根节点是%JMETER_HOME%\bin,把CSV文件放到这个目录或其子目录下。

注意,打开方式选择bin目录下jmeter.bat或快捷方式才会把bin作为相对路径的根节点。如果把bin目录加入系统环境变量后,用cmd执行jmeter命令打开,那么相对路径的根节点是cmd的工作目录,比如C:\Users\dongfanger\Desktop。

【File encoding】文件编码,推荐用UTF-8

【Variable Names (comma-delimited)】定义的变量名,用逗号隔开,与CSV文件的列一一对应。变量比列多,多余的变量取不到值;变量比列少,多余的列不会被取值。此选项可以为空。

【Ignore first line (only used if Variable Names is not empty)】上一个选项的变量名为空时,此选项生效。它会把CSV文件的第一行的列名作为变量名,并在取值时忽略第一行。

【Delimiter (use '\t' for tab)】CSV文件分隔符,默认为逗号,也可以用制表符。

【Allow quoted data】是否允许引用数据,比如双引号"dongfanger,pass",1111,允许后能拆分出dongfanger,pass1111

【Recycle on EOF】设置为True时,循环遍历CSV文件。

【Stop thread on EOF】设置为True时,遍历完CSV文件就结束线程。

EOF是End Of File缩写,文件结束符。JMeter在测试执行过程中每个线程每次迭代会从参数文件中新取一行数据,从头遍历到尾。

【Sharing mode】有三种共享模式:默认为All threads,对所有线程共享;Current thread group只对当前线程组中的线程共享;Current thread仅当前线程获取。

比如2个线程组,每个线程组2个线程,共享同一个csv文件,那么迭代1次这4个线程会分别取前4条数据,互不重复;迭代2次这4个线程会分别取前8条数据,互不重复。

User Defined Variables

所属组件:Config Element。

JMeter有两个User Defined Variables,它们的区别是:Test Plan的User Defined Variables作用域是全局的,配置元件的User Defined Variables作用域可以是全局的也可以是局部的

表格共三列,第一列是Name变量名,第二列是Value变量值,第三列是Description描述。表格下方的功能按钮,用来对表格进行增删改查和上下移动,还能直接从剪贴板添加。

定义好的变量通过${}格式来使用,比如变量a值为1,使用时写作${a}。这个地方定义的实际上是字符串常量,比如刚才已经定义了一个变量名a变量值1,再定义变量名b变量值${a} + 1b的实际值不是整型2而是字符串"${a} + 1"

User Parameters

所属组件:Pre Processors。由于User Parameters属于前置处理器,所以它只会对当前Sampler生效。

Name

带业务含义的名字。

Comments

可以为空的注释。

Update Once Per Iteration

经过反复多次试验,勾选与否没看出区别。官方解释如下:

A flag to indicate whether the User Parameters element should update its variables only once per iteration. if you embed functions into the UP, then you may need greater control over how often the values of the variables are updated. Keep this box checked to ensure the values are updated each time through the UP's parent controller. Uncheck the box, and the UP will update the parameters for every sample request made within its scope.

从各文章截图总结,一般会勾选上这个选项。

Parameters

表格列Name指变量名,表格列User_x指某个用户的变量值。下方有6个按钮,分别是“添加变量”、“删除变量”、“添加用户”、“删除用户”、“上移”、“下移”。每个线程分配一个变量值;如果线程数大于User_x,那么会循环取值。

User Parameters在参数较少的情况下使用。

Function Helper

函数除了参数化,还可以用来做运算,字符编码格式转换,获取运行时参数等,下篇文章专门来写。

小结

本文介绍了配置组件里面的CSV Data Set Config和User Defined Variables,作用域可全局可局部。接着介绍了前置处理器User Parameters,只对当前Sampler生效。但都有局限性,为了帮助我们更好地进行参数化,JMeter提供了一组函数来帮我们生成需要的数据,这些函数在有个地方能够进行编辑,它就是:Function Helper。

参考资料:

《全栈性能测试修炼宝典JMeter实战》

http://tutorialjmeter.blogspot.com/2017/05/pre-processor-in-jmeter.html

https://jmeter.apache.org/usermanual/component_reference.html#User_Parameters

JMeter四种参数化方式的更多相关文章

  1. 【Jmeter基础知识】Jmeter的三种参数化方式

    JMeter的三种参数化方式包括: 1.用户参数 2.函数助手 3.CSV Data Set Config 一.用户参数 位置:添加-前置处理器-用户参数 操作:可添加多个变量或者参数 二.函数助手 ...

  2. Android开发之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  3. lua中for循环的四种遍历方式

    lua中for的四种遍历方式区别 table.maxn 取最大的整数key #table 从1开始的顺序整数最大值,如1,2,3,6 #table == 3   key,value pairs 取每一 ...

  4. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

    Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览   作为一个完成的应用程序,数据存储操作是必不可少的. ...

  5. HttpwebClient的四种请求方式

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.      本文旨在发布代码,供自己参考,也供大家参考,谢谢. 正题: Ht ...

  6. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  7. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider

    ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...

  8. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite

    SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 在SQLite中, ...

  9. xml常用四种解析方式优缺点的分析×××××

    xml常用四种解析方式优缺点的分析 博客分类: xml   最近用得到xml的解析方式,于是就翻了翻自己的笔记同时从网上查找了资料,自己在前人的基础上总结了下,贴出来大家分享下. 首先介绍一下xml语 ...

随机推荐

  1. Starting Tomcat v9.0 Server at localhost' has encountered a problem

    •问题描述 在通过 Eclipse 打开 Tomcat 时报错: •解决方案 找到 Tomcat 的安装位置,打开 tomcat\bin 目录,找到 shutdown.bat,手动关闭 tomcat: ...

  2. [DP]城市交通

    城市交通 Time Limit:1000MS--Memory Limit:65536K 题目描述 有n个城市,编号1~n,有些城市之间有路相连,有些则没有,有路则当然有一个距离.现在规定只能从编号小的 ...

  3. 全面了解Vue3的 ref 和相关函数和计算属性

    基础类型的响应性 -- ref 在vue3里面,我们可以通过 reactive 来实现引用类型的响应性,那么基础类型的响应性如何来实现呢? 可能你会想到这样来实现: const count = rea ...

  4. (6)MySQL进阶篇SQL优化(MyISAM表锁)

    1.MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源 (如 CPU.RAM.I/O 等)的抢占以外,数据也是一种供许多用户共享的资源.如何保证数 据并 ...

  5. 详解DNS重绑定攻击

    0x00 前言 DNS重绑定攻击的用法有很多种,这篇文章主要理解DNS重绑定攻击的原理,并介绍如何通过DNS重绑定来攻击内网设备.为了更好的理解DNS重绑定攻击,我们先从Web浏览器的同源策略开始介绍 ...

  6. Gson?So easy.

    1.概述 这篇文章主要讲述了Gson的使用.包括从最基础的基本类型的序列化,到对象,数组,集合,再到Gson注解,Gson Builder,再到格式化,自定义序列化与反序列化等内容. 另外文章篇幅较长 ...

  7. Matrix Chain Multiplication UVA - 442

    Suppose you have to evaluate an expression like ABCDE where A,B,C,D and E are matrices. Since matrix ...

  8. linux下python调用.so文件

    前言 使用python 调用Fanuc的动态链路库.so 文件读取数据 环境要求 环境 需求 ubuntu16.04 32位 python3.5 32位 配置 把so文件添加到默认路径 ln -s / ...

  9. 【CompletableFuture】CompletableFuture中join()和get()方法的区别

    一.相同点: join()和get()方法都是用来获取CompletableFuture异步之后的返回值 二.区别: 1.join()方法抛出的是uncheck异常(即未经检查的异常),不会强制开发者 ...

  10. Linux下部署Django项目

    目录 安装python3.X环境 安装部署开启django 由于Linux系统默认自带的是2.X环境,所以我们需要去安装3.X环境的python. 安装python3.X环境 1.使用下面的命令下载P ...