0

jmeter教程三,在测试过程中由于业务代码的要求,需要尽可能的仿真真实业务,因此需要对报文中的值做参数化处理。

报文样例

例如我们的测试报文如下所示:

{
    "name":"张三",
    "age":20,
    "sex":"男",
    "email":"kvon@163.com",
    "companyName":"北京牛儿快快跑股份有限公司"
}

接口中的字段如下所示:
name,age,sex,email,companyName. 这五个字段其中既有数字,又有字母,也有汉字。下面我们把这5个字段全部做参数化处理。

参数化

一、先做姓名的参数化处理。

  1. 首先做一个百家姓的字典表。百家姓在网上查一下就能查到,也可以直接用我整理的
  2. 再做一个基本汉字表。这个我是通过Excel中=CHAR((INT(16+RAND()*38+160)*256)+INT(94*RAND())+160)这个函数获取的汉字,然后将生成的汉字整理为一个csv或者txt格式的字典表。我这里提供一份201个汉字的txt文件供大家测试。
  3. 读取姓与名的字典表获取随机姓名。${__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]

好了以上就是参数化的思路。