首页 > 代码库 > jmeter(十)参数化
jmeter(十)参数化
jmeter可以用来做接口、性能测试,原理是模拟客户端向服务器发送请求,请求里面包含两种不同情况的参数,一种是包含在URL中,一种是请求中需要发送的参数。
包含在URL中的参数,例如:http://blog.imyalost.com/index.php/2016/11/11/jmeter中,“2016/11/11/jmeter”参数为URL的参数。
请求中需要发送的参数(只能列举GET请求),例如:http://www.it315.org/counter.jsp?name=zhangsan&password=123中,“zhangsan”是参数名,“123”是参数值。
至于POST请求,可以在jmeter脚本中“随请求一起发送的参数”和“随请求一起发送的文件”中找到。
PS:关于GET和POST请求方法,可以参见之前的博客:http://www.cnblogs.com/imyalost/p/5630940.html
对于jmeter脚本里面的参数进行参数化时,使用参数的地方书写格式为$。
关于jmeter的参数化,常用的有2种方法:
首先新建一个测试脚本,可以通过工具(badboy)录制或者自己手动编写
登录请求的界面如下:
这里我们对登录的用户名密码进行参数化,将用户名密码写入txt文档,保存为.dat格式,编码类型选择UTF-8,因为配置元件——CSV Data Set Config对参数化的格式要求比较严格,用户名密码一一对应,之间用半角英文逗号隔开
然后将保存的.dat文件放入计算机的某个盘里,这里我放入路径为:F:\jmeter\csvtest.dat
下面具体介绍参数化的两种方法:
一、借用函数助手
点击jmeter的界面,功能栏选项→ 函数助手对话框→ _CSVRead
CSV file to get values from | *alias:CSV文件取值路径,即这里需要写入之前的需要参数化的参数的文件路径
CSV文件列号| next|*alias:文件起始列号:CSV文件列号是从0开始的,第一列为0,第二列为1,以此类推。。。
函数字符串:即生成的参数化后的参数,可以直接在登陆请求中的参数中引用,第一列为用户名,函数字段号为0,第二列为密码,函数字段号为1,以此类推进行修改使用即可
替换参数化后的参数,然后修改线程数,执行脚本,通过监听器里结果树的请求内容,可以看到请求的参数都是参数化后的数据
二、配置元件——CSV Data Set Config
点击线程组添加配置元件→ CSV Data Set Config:
说明:
Filename:F:\jmeter\csvtest.dat文件名,保存参数化数据的文件目录,可选择相对或者绝对路径
File encoding:UTF-8,F:\jmeter\csvtest.dat文件的编码格式,在保存时保存编码格式为UTF-8即可
Variable Names(comma-delimited):user,pwd 参数名称(如:有几列参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,这里的 user,pwd,可以被利用变量名来引用:${user},${pwd}
Delimitet:定义分隔符,用来在“Variable Names”中分隔参数
Allow quote data:选项选为“true”的时候对全角字符的处理出现乱码
Recycle on EOF?:是否循环读入;因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入
True=当读取文件到结尾时,再重头读取文件
False=当读取文件到结尾时,停止读取文件
Stop thread on EOF?:当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义
完成之后,将刚才生成的参数写入参数对应的值里面:
以上就是2中参数化的方法,推荐使用CSV控件方法(因为函数助手参数化功能相比其较弱)
相比于loadrunner来说,jmeter参数化有以下不同:
1.jmeter参数文件第一行没有列名称
2.参数文件的编码,尽量保存为UTF-8(编码问题在使用CSV Data Set Config参数化时要求的比较严格)
3.Jmeter的参数化没有LoadRunner做的出色,它是依赖于线程设置的(只有CSV Data Set Config参数化方法才有)
jmeter(十)参数化