快乐的使用jmeter做压测三、报文参数化
2019-04-01 本文已影响29人
cleanup123
在测试过程中由于业务代码的要求,需要尽可能的仿真真实业务,因此需要对报文中的值做参数化处理。
报文样例
例如我们的测试报文如下所示:
{
"name":"张三",
"age":20,
"sex":"男",
"email":"kvon@163.com",
"companyName":"北京牛儿快快跑股份有限公司"
}
接口中的字段如下所示:
name
,age
,sex
,email
,companyName
. 这五个字段其中既有数字,又有字母,也有汉字。下面我们把这5个字段全部做参数化处理。
参数化
一、先做姓名的参数化处理。
- 首先做一个百家姓的字典表。百家姓在网上查一下就能查到,也可以直接用我整理的。
- 再做一个基本汉字表。这个我是通过Excel中
=CHAR((INT(16+RAND()*38+160)*256)+INT(94*RAND())+160)
这个函数获取的汉字,然后将生成的汉字整理为一个csv或者txt格式的字典表。我这里提供一份201个汉字的txt文件供大家测试。 - 读取姓与名的字典表获取随机姓名。
${__CSVRead(C:\Users\Administrator\Desktop\first.txt,${__Random(0,479)})}${__CSVRead(C:\Users\Administrator\Desktop\second.txt,${__Random(0,200)})}
二、对年龄做参数化处理这里大家可以使用
年龄可以直接在线程组中添加随机变量来实现。
添加随机变量.png
年龄.png
三、对性别做参数化处理
性别由于码值较少可以直接通过字符串随机函数获取${__RandomString(1,男女,)}
四、邮箱
邮箱也使用随机字符串函数获取8位邮箱前缀${__RandomString(8,abcdefghijklmnopqrstuvwxyz1234567890,)}
五、公司名称
公司名称与姓名相同通过读取字典表获取,保留股份有限公司字样。
参数化后报文展示
{
"name":"${__CSVRead(C:\Users\Administrator\Desktop\first.txt,${__Random(0,479)})}${__CSVRead(C:\Users\Administrator\Desktop\second.txt,${__Random(0,200)})}",
"age":${age},
"sex":"${__RandomString(1,男女,)}",
"email":"${__RandomString(8,abcdefghijklmnopqrstuvwxyz1234567890,)}@163.com",
"companyName":"${__RandomString(5,${__FileToString(C:\Users\Administrator\Desktop\company.txt,,)},)}股份有限公司"
}
请求报文样例一
POST http://localhost:8080/add
POST data:
{
"name":"都似",
"age":93,
"sex":"女",
"email":"fyjfw20j@163.com",
"companyName":"意殆蛹械捎股份有限公司"
}
[no cookies]
请求报文样例二
POST http://localhost:8080/add
POST data:
{
"name":"赵酶",
"age":29,
"sex":"女",
"email":"5vl6ii7a@163.com",
"companyName":"害酥豫克永股份有限公司"
}
[no cookies]
好了以上就是参数化的思路。