背景
最近需要做一个压力测试,针对公司服务的一个api进行。
准备了700w的数据,数据是json格式,存在txt文件里,每个txt文件10w数据,总共70个txt文件。
jmeter的参数化有几种方式,这里就介绍其中一种
本次api是http形式,所以只需要把发送的数据放到body中就可以了
测试概览
测试计划如下图
在HTTP请求中,需要配置相关信息,比如需要发送的服务器地址,端口号,以及http方法,是get还是post等等。
最重要的是在body data中,这里就是我们参数化后放置变量的地方。
CSV DATA配置
这里我们引入CSV DATA配置
- filename:这里需要填写你文件的绝对路径
- Variable Names: 这里是你参数化的名字,可以随便起,也就是后面需要填在body data中的名字
- Delimiter :这里填写你文件中的分隔符,视情况而定,由于我的文件是用换行符分割两条数据的,所以这里填写"\n"
- Recycle on EOF:遇到文件结束符时,是否从头开始循环读入
- Stop Thread on EOF: 当Recycle on EOF为False并且Stop Thread on EOF为True,则读完csv文件中的记录后,停止运行
响应断言
当返回值中出现signature:""时,可以认为请求成功,所以就以此作为断言。
如下图添加响应断言
HTTP请求设置
BODY DATA设置中就是放入参数化的请求
由于txt文件有70个,所以当每次发送完一个txt文件中的请求后,需要自动读取下一个文件,获取其中的数据并发送。
这里用到一个函数${_StringFromFile(文件名)}。
我的文件命名为data1,data2……data70,函数这样写
${_StringFromFile(/home/file/dfp/data_test/file/data#.txt,,1,70)}
这里"#"用来占位。
1,70表示从第一个读到第70个文件,这里按照需求进行变化。
这里需要注意的是,在body data中,函数后面需要紧跟参数化的名字,不能分在两行写,不然文件无法循环读取。
PS:由于初次学习,压力一直上不去,每次请求的量都很小,还未解决,期待有人分享