1.1 参数化
截止现在,一个http请求的配置已经完成,可使用该脚本运行点击jmeter的运行按钮查看。并发测试必然需要使用到参数化。参数化有以下几种方法。
参数化的格式一般均为:
${},如¥{user}
1.1.1 CSV
可在本地新建txt,将参数存储在txt中,以“,”隔开,保存的时候选择utf-8的编码格式。
内容如下:
然后在jmeter中添加配置元件CSV。
1.1.2 随机数
随机数可使用jmeter中的随机函数生成,如:该APP登录时使用的验证码即可用${__Random(000000,999999,)}来替代。
1.1.3 动态参数
如该APP客户在登录后会返回如下内容:
经过同开发通过,在登录后很多接口都会在headers中带着token和clentId(即登录后返回的userID)。所以我们需要在登录之后拿到token和userID的值。
通过抓包工具,查看返回结果,结果为json格式。如下内容。
{
"message": "登录成功",
"result": {
……
"userId": "171",
……
},
"returnCode": 200,
"token": "b15f18b0e424eb3f603eba9166f38f65c25652808d4d4b6bb1bfaec8c04fe1ae"
}
因此我们在登录脚本中增加后置处理器:bean shell postprocessor。
录入如下内容。
import net.sf.json.JSONObject; //导入json解析用到的jar包
String input = prev.getResponseDataAsString();
JSONObject jsonObject = JSONObject.fromObject(input);
JSONObject result = jsonObject.getJSONObject("result");
String userid = result.getString("userId");
String token = jsonObject.getString("token");
//把获取到的字符串,赋值给对应的变量。后续的请求中,就可以通过 ${userid}这样的方式,读取到这个值了。
vars.put("userid",userid);
vars.put("token",token);
因在登录后的接口都会在headers中带着token和clentId,所以我们需要在这些请求下增加“http信息头管理器”,并将参数添加进去即可。