参数化是为了将数据和用例分离,以便更好的维护测试用例,jemeter同样也可以实现参数化,有以下几个参数化的方式:

  • 用户定义的变量
  • 用户参数
  • CSV Data Set Config
  • 函数

1. 用户定义的变量

1.1添加方式:

测试计划(或线程组)->配置元件->用户定义的变量

jemeter 请求参数是变量 jemeter参数化_线程组

 1.2 场景

请求:https://www.baidu.com:443

要求:使用用户定义的变量配置被测系统的协议、域名和端口

jemeter 请求参数是变量 jemeter参数化_jemeter 请求参数是变量_02

 在测试计划中定义用户变量

 

jemeter 请求参数是变量 jemeter参数化_测试计划_03

2.用户参数

2.1添加方式

路径:前置处理器元件中的组件,用户参数

  • 适用范围:适用于参数取值范围很小,需要少量测试数据时使用。
  • 设置步骤

(1)在需要设置参数的请求下添加用户参数:选中“取样器”右键-->添加-->前置处理器-->用户参数;

2.2 场景

请求:https://www.baidu.com

要求:第一次请求附带参数:name="xxx"&age=xxx;第二次请求附带参数:name="xxx"&age=xxx

jemeter 请求参数是变量 jemeter参数化_变量名_04

3.CSV Data Set Config

3.1添加方式:

测试计划(或线程组)->配置元件->CSV Data Set Config

3.2 场景

请求:https://www.baidu.com
要求:循环3次,每次请求时附带参数username,password,code的值不相同

jemeter 请求参数是变量 jemeter参数化_线程组_05

参数说明

文件名:文件的完整路径,包括文件名和类型;(.csv 文件和.txt 文件)
文件编码:填写gb2312;(好像不写也可以,写了utf-8可能会出现中文乱码)
变量名称(西文逗号间隔):储存参数的变量名,如果在文件中有写变量名就不需要写了,在这里写的话需要将每个变量名用“,”隔开;
忽略首行(只在设置了变量名称后才生效):文件中第一行为变量名称时,设置为True后可忽略首行;
分隔符(用’\t'代替制表符):分隔多个参数的分隔符
是否允许带引号?:是否有引用数据,ps:如果参数中有逗号或双引号,要选为“true”
遇到文件结束符再次循环?:文件读取完后是否继续读取;(设置为True后,允许循环取值)
遇到文件结束符停止线程?:文件读取完后是否停止线程;(当“遇到文件结束符再次循环”为false并且“遇到文件结束符停止线程”为true,则读完文件中的记录后,停止运行,线程数及执行次数无效)
线程共享模式:“所有线程”,所有线程循环取值,线程1取第一行,线程二取下一行;“当前线程组”,各个线程组分别循环取值;“当前线程”,该测试计划内的所有线程都取第一行。

4.函数(__counter)

4.1添加方式:

计数函数,一般做执行次数统计使用;

位置:在菜单中选择--> 选项 --> 函数助手对话框

jemeter 请求参数是变量 jemeter参数化_线程组_06

参数设置 TRUE,每个用户有自己的计数器(每次从1开始);FALSE,使用全局计数器
Name of variable in which to store the result (optional):用于存储结果的变量名(可选) 生成-复制

4.2 场景

请求:https://www.baidu.com
要求:2个线程,循环2次,每次请求时附带参数num从函数counter中获取

(1)${__counter(TRUE,)}

参数设置 TRUE,每个用户有自己的计数器(每次从1开始)

jemeter 请求参数是变量 jemeter参数化_测试计划_07

(2)${__counter(FALSE,)}

FALSE,使用全局计数器

jemeter 请求参数是变量 jemeter参数化_学习_08

 5 用户参数和用户变量的区别

一、先说相同的点:

  1、都可以参数化,以供sampler调用。

  2、都是key-values的形式展示。

二、再说说区别。

户参数的位置属于前置处理器用户定义的变量属于配置元件

  2、用户定义的变量,数据初始化一次;用户参数是每次都变动的。

  • 设置用户定义的变量两种方式:

测试计划-->用户定义的变量 全局变量
线程组-->配置元件-->用户定义的变量 局部变量
 

  • 设置用户参数方式:

线程组-->前置处理器-->用户参数