如何通过篡改http的返回值来模拟特定场景

最近接到一个需求,需要同时模拟20个司机出现在一个区域内,查看此时拖动地图时,我们的打车软件是否会出现地图卡顿等现象。

那么此时,如何能够模拟出20个司机出现在一个区域内呢?

方法有以下几种

1、找20台手机,同时登陆20个司机账号。

优点:数据完全真实

缺点:需要同时使用20台手机。

2、调用接口,输入司机ID与上线的经纬度

优点:完全模拟真实场景,数据也是真实的数据

缺点:需要对这个流程中的每个接口,如登陆,上线等模块了解清晰,并且事后要做下线处理,否则会对正常派单产生影响。

3、直接修改app所查询的接口返回值

优点:只需修该返回值,无需修该其他

缺点:只能模拟司机车辆图标出现,而这些司机实际是不存在的

解决方案列了出来,那我们应该选择哪个呢?

这首先就要看测试点了。我们的测试点是在乘客端的页面查看20辆车同时出现的情况

那么我们的关注点是只要车辆图标出现,随后移动地图是否卡顿。而不是后台派单是否正确

因此我们的关注点是车辆图标。

而乘客端的司机图标是怎么出现的?

他是通过一个查询附近司机的接口来画图的。

那这个接口的返回值是什么,我们只要修改返回值,给app端造成返回附近有20辆车即可。

所以我们选择方法三

通过与开发沟通,我们发现我们只要修改下经纬度与司机编号,即可。

 

{
“lt”: 30.192,
“lg”: 120.152,
“id”: 3,
“dir”: 15.0
}

而司机编号在这里是不做校验的,只要司机编号不重复即可。

因此我们只要对查询附近司机的接口做返回值替换即可。

那么 how?

首先我们把修改后的返回值保存到本地,命名为x.json

此处x.json内容如下所示:

{
“code”: 0,
“data”: {
“drivers”: [{
“lt”: 30.190,
“lg”: 120.150,
“id”: 1,
“dir”: -1.0
}, {
“lt”: 30.191,
“lg”: 120.151,
“id”: 2,
“dir”: 10.0
},
{
“lt”: 30.192,
“lg”: 120.152,
“id”: 3,
“dir”: 15.0
},
{
“lt”: 30.193,
“lg”: 120.153,
“id”: 4,
“dir”: 20.0
},
{
“lt”: 30.194,
“lg”: 120.154,
“id”: 5,
“dir”: 25.0
},
{
“lt”: 30.195,
“lg”: 120.155,
“id”: 6,
“dir”: 30.0
},{
“lt”: 30.196,
“lg”: 120.156,
“id”: 7,
“dir”: 40.0
},{
“lt”: 30.197,
“lg”: 120.157,
“id”: 8,
“dir”: 45.0
},{
“lt”: 30.197,
“lg”: 120.157,
“id”: 9,
“dir”: 50
},{
“lt”: 30.198,
“lg”: 120.158,
“id”: 10,
“dir”: 60.0
},{
“lt”: 30.199,
“lg”: 120.159,
“id”: 11,
“dir”: 70.0
},{
“lt”: 30.200,
“lg”: 120.160,
“id”: 12,
“dir”: 80.0
},{
“lt”: 30.201,
“lg”: 120.161,
“id”: 13,
“dir”: 90.0
},{
“lt”: 30.202,
“lg”: 120.162,
“id”: 14,
“dir”: 100.0
},{
“lt”: 30.204,
“lg”: 120.164,
“id”: 15,
“dir”: 40.0
},{
“lt”: 30.203,
“lg”: 120.163,
“id”: 16,
“dir”: 40.0
},{
“lt”: 30.204,
“lg”: 120.164,
“id”: 17,
“dir”: 40.0
},{
“lt”: 30.189,
“lg”: 120.149,
“id”: 18,
“dir”: 40.0
},{
“lt”: 30.188,
“lg”: 120.148,
“id”: 19,
“dir”: 40.0
},{
“lt”: 30.187,
“lg”: 120.147,
“id”: 20,
“dir”: 40.0
}] },
“message”: “成功”
}

以下前提是建立在你已经调通了charles 能正常抓包的情况下

我们打开charles

点击本地映射 map local

点击此处随后点击添加

 

随后修改请求 这些请求都可以通过抓包来获取

随后把map to指向刚才的json文件

点击保存后 结果如下图所示

就会出现20辆车同时存在的情况了