一般常见的网络场景有:网络闪断闪连、弱网、无网络和网络吊死等,在实际测试过程中,我们常常要模拟上述环境,以便验证软件在上述环境中的可靠性。
1.模拟网络闪断闪连
我们可以借助DOS命令netsh实现该场景,具体批处理命令如下:
@echo off--------不显示被执行的命令,只显示命令执行结果
for /l %%a in (1,1,5) do (---------循环禁用和启用网卡,可以通过设置循环次数实现一段时间内网络闪断闪连
echo 禁用网卡
netsh interface set interface "本地连接" admin=disabled-----------禁用网卡的DOS命令,本地连接为网卡名称
echo Wscript.sleep 500 >y.vbs---------------------创建一个脚本文件,作用是实现延时效果,此处设置为500毫秒,类似于sleep函数
call y.vbs &del y.vbs-------------------调用脚本,开始延时,执行完毕后删除脚本
echo 启用网卡
netsh interface set interface "本地连接" admin=enabled----------------------------启用网卡dos命令
echo Wscript.sleep 5000 >y.vbs---------------延时5s,等待网络正常连接
call y.vbs &del y.vbs
echo 启用网卡结束
)
pause--------------------确保dos窗口执行完毕后,不自动关闭
PS:如果IP地址是动态获取,还可以通过ipconfig /release和ipconfig /renew两个命令实现闪断闪连,前者表示释放当前ip,后者表示重新获取ip。
2.模拟弱网环境
方式1使用fiddler模拟弱网
在主页菜单栏,选择rules--customize rules
修改上述图片红框内的数值,oSession["request-trickle-delay"] = 300,指fiddler上传1kb数据需要300毫秒,即每秒传3kb。oSession["response-trickle-delay"] = 150,指fiddler下载1kb需要150毫秒。然后在菜单栏选择rules--performance--simulate modem speeds(每次修改上传、下载时间后,都必须要重新勾选此项,因为每次修改后该项会被重置清空)。弱网环境模拟完毕,后续可以通过调整上传下载时间,控制请求和响应的时间,以达到模拟不同网络的效果。
PS:fiddler还可以模拟简单的并发操作,右击目标请求,然后点击右键菜单replay--reissue sequentially,弹出下图:
在上图的数值5,表示fiddler会同时发5次被选择的请求到服务器。
方式2 通过Charles模拟
在菜单栏选择proxy--throttle settings,弹出如下窗口:
勾选enable throttling启用限速功能,然后添加一台你想限速的主机。bandwidth项是控制上传和下载的速率,单位是kb/s。上述数值表示,请求和响应到Charles侧时,它每秒下载57kb,上传33.6kb。根据实际情况修改上述两个数值,可以模拟不同的网络情况。
PS:Charles可以实现简单并发操作,步骤如下:
右击目标请求,在右键菜单选择repeat advanced,弹出如下窗口:
iterations表示循环次数,concurrency表示每次循环的请求并发数。