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

分析

  1. 首先,应当建立自增变量phone
  2. body中应当使用变量phone
  3. 记录phone,token

postman实战

变量

这里我们的案例很简单,只需要使用一个全局变量记录手机号的初始值即可,从后续的测试代码可知,postman使用的是js,因此我们不需要关注变量的数据类型

这里建立了一个名为 phone的全局变量,初始值为 13100000001

image-20230209180639334

变量获取与递增

pre-request script中实现变量值获取和递增赋值

image-20230209180900375

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,代码的书写位置为

image-20230209181109702

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

单次测试结果

image-20230209181313115

可见拼接的key作为测试结论输出了

批量测试

将上述完整的测试request保存到一个空白的collections中

注意,collections中必须都为书写了test的request,否则不能同批次执行

这里选中这个collections,点击图中的 run

image-20230209181530511

配置测试的参数,勾选保存response

image-20230209181615450

保存测试结果

测试完成后点击export即可,后续的处理按照文本/JSON处理即可

最后的效果为

...
48407b9a66a74954a62c6c9e335b84ff
c72c39b2bd6c4463a8fbc7a7261ea511
11b598f9fbe845a1955cc47ba8f4f183
e062617731f04b3d8b7e1914ecaafca7
f5b8548dfc3d4df2bf367364423eb52c
c9e9c39aa99942bbbfdb751d8e8bce77
b4fc54d570584a5886c768131b35d36c
8e1054d45bf64d418b9359f8e898a329
e8591236538e4801a0c885fbc55e2ffa
10715175056e43118f28c666bd479c81
9673ec179226474784c4e20afeff87df
....

redis中的key

image-20230209181804415

posted @ 2023-02-09 18:21  jentreywang  阅读(376)  评论(0编辑  收藏  举报