参数化是为了将数据和用例分离,以便更好的维护测试用例,jemeter同样也可以实现参数化,有以下几个参数化的方式:
- 用户定义的变量
- 用户参数
- CSV Data Set Config
- 函数
1. 用户定义的变量
1.1添加方式:
测试计划(或线程组)->配置元件->用户定义的变量
1.2 场景
请求:https://www.baidu.com:443
要求:使用用户定义的变量配置被测系统的协议、域名和端口
在测试计划中定义用户变量
2.用户参数
2.1添加方式
路径:前置处理器元件中的组件,用户参数
- 适用范围:适用于参数取值范围很小,需要少量测试数据时使用。
- 设置步骤
(1)在需要设置参数的请求下添加用户参数:选中“取样器”右键-->添加-->前置处理器-->用户参数;
2.2 场景
请求:https://www.baidu.com
要求:第一次请求附带参数:name="xxx"&age=xxx;第二次请求附带参数:name="xxx"&age=xxx
3.CSV Data Set Config
3.1添加方式:
测试计划(或线程组)->配置元件->CSV Data Set Config
3.2 场景
请求:https://www.baidu.com
要求:循环3次,每次请求时附带参数username,password,code的值不相同
参数说明
文件名:文件的完整路径,包括文件名和类型;(.csv 文件和.txt 文件)
文件编码:填写gb2312;(好像不写也可以,写了utf-8可能会出现中文乱码)
变量名称(西文逗号间隔):储存参数的变量名,如果在文件中有写变量名就不需要写了,在这里写的话需要将每个变量名用“,”隔开;
忽略首行(只在设置了变量名称后才生效):文件中第一行为变量名称时,设置为True后可忽略首行;
分隔符(用’\t'代替制表符):分隔多个参数的分隔符
是否允许带引号?:是否有引用数据,ps:如果参数中有逗号或双引号,要选为“true”
遇到文件结束符再次循环?:文件读取完后是否继续读取;(设置为True后,允许循环取值)
遇到文件结束符停止线程?:文件读取完后是否停止线程;(当“遇到文件结束符再次循环”为false并且“遇到文件结束符停止线程”为true,则读完文件中的记录后,停止运行,线程数及执行次数无效)
线程共享模式:“所有线程”,所有线程循环取值,线程1取第一行,线程二取下一行;“当前线程组”,各个线程组分别循环取值;“当前线程”,该测试计划内的所有线程都取第一行。
4.函数(__counter)
4.1添加方式:
计数函数,一般做执行次数统计使用;
位置:在菜单中选择--> 选项 --> 函数助手对话框
参数设置 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开始)
(2)${__counter(FALSE,)}
FALSE,使用全局计数器
5 用户参数和用户变量的区别
一、先说相同的点:
1、都可以参数化,以供sampler调用。
2、都是key-values的形式展示。
二、再说说区别。
户参数的位置属于前置处理器,用户定义的变量属于配置元件。
2、用户定义的变量,数据初始化一次;用户参数是每次都变动的。
- 设置用户定义的变量两种方式:
测试计划-->用户定义的变量 全局变量
线程组-->配置元件-->用户定义的变量 局部变量
- 设置用户参数方式:
线程组-->前置处理器-->用户参数