Postman 的批量登录案例
Postman 的批量登录案例
在并发项目中,需要测试多用户场景下的超买超卖
项目中的用户登录状态检测使用redis中的token
因此为了模拟多用户下单的情况,需要足够多的活跃用户,即热身
测试接口
url
/api/user/login
body
{"phone": "13100000001", "code": "xxxx"}
body说明
其中的 phone
字段认为是手机号,场景中需要使用多个手机号(这里以13100000001自增1000次为例)
response
-
失败时
-
{ "success": false, "errorMsg": "验证码错误" }
-
成功时
-
{ "success": true, "data": "9673ec179226474784c4e20afeff87df" }
因此测试场景是,使用自增的手机号,发送请求,收集response中的token,并将手机号+1
分析
- 首先,应当建立自增变量phone
- body中应当使用变量phone
- 记录phone,token
postman实战
变量
这里我们的案例很简单,只需要使用一个全局变量记录手机号的初始值即可,从后续的测试代码可知,postman使用的是js,因此我们不需要关注变量的数据类型
这里建立了一个名为 phone
的全局变量,初始值为 13100000001
变量获取与递增
在 pre-request script
中实现变量值获取和递增赋值
var phone = parseInt(postman.getGlobalVariable("phone"));//postman.getGlobalVariable获取定义的全局变量
phone += 1;
postman.setGlobalVariable("phone", phone);//postman.setGlobalVariable设置定义的全局变量
上述代码的含义为,获取全局phone
变量的int值(这里认为代码中的phone
是局部变量)
将其+1
赋值给全局变量phone
变量引用
案例中在body中引用变量,写法为
{
"phone": {{phone}},
"code": "hmdp"
}
处理测试结果
我们需要获取手机号phone和token,代码的书写位置为
var jsonData = JSON.parse(responseBody);
var phone = parseInt(postman.getGlobalVariable("phone"))-1 // 前处理时+1了
var token = jsonData.data
var key = phone + ',' + token
tests[key] = jsonData.success === true;
最后一行是测试的输出值, tests是固定的变量用于测试, 右侧是测试的结论的boolean
测试成功的条件时 response json 的 success 字段值为 true
单次测试结果
可见拼接的key作为测试结论输出了
批量测试
将上述完整的测试request保存到一个空白的collections中
注意,collections中必须都为书写了test的request,否则不能同批次执行
这里选中这个collections,点击图中的 run
配置测试的参数,勾选保存response
保存测试结果
测试完成后点击export即可,后续的处理按照文本/JSON处理即可
最后的效果为
...
48407b9a66a74954a62c6c9e335b84ff
c72c39b2bd6c4463a8fbc7a7261ea511
11b598f9fbe845a1955cc47ba8f4f183
e062617731f04b3d8b7e1914ecaafca7
f5b8548dfc3d4df2bf367364423eb52c
c9e9c39aa99942bbbfdb751d8e8bce77
b4fc54d570584a5886c768131b35d36c
8e1054d45bf64d418b9359f8e898a329
e8591236538e4801a0c885fbc55e2ffa
10715175056e43118f28c666bd479c81
9673ec179226474784c4e20afeff87df
....
redis中的key