android app 弱网测试
模拟手机/设备WIFI的弱网测试,步骤如下:
新建wifi热点,手机等设备,连接wifi热点
这里介绍做法,电脑上通过双网卡的方式自行搭建一个wifi热点,让手机直接连接这个热点。将网络模拟工具在PC上运行,并打开代理软件。
1)PC端有无线网卡,并装驱动。以管理员权限运行cmd命令提示符,运行命令启用并设定虚拟WiFi网卡:netsh wlan set hostednetwork mode=allow ssid=testwifi key=12345678
参数说明:mode:表示是否启用虚拟WiFi网卡,allow-启用网卡 disallow-禁用网卡。ssid:无线网名称,最好用英文(例如:wifitest)。key:无线网密码,八个以上字符(例如:12345678)。开启成功后,网络连接中会多出一个网卡为“Microsoft Virtual WiFi Miniport Adapter”的无线连接,如这里的无线网络连接 3。
2)控制面板\网络和 Internet\网络连接:
设置Internet连接共享:在“网络连接”窗口中,右键已连接到Internet的网络连接,如图中的无线网络连接,右键选择【属性】→【共享】,勾上【允许其他······连接(N)】并选择刚才设立的虚拟网卡,如图,确定。
3)开启无线网络,在命令提示符里输入:netsh wlan start hostednetwork
netsh wlan stop hostednetwork即可关闭该无线网;显示无线网络信息命令:netsh wlan show hostednetwork
4) 主机设置完毕,手机等待测设备搜索到无线网络wifitest,输入密码12345678,就可以使用了。
弱网的情形有两种方式,其一使用网络损伤仪进行,其二采用软件方式。硬件采购费用太贵,所以这里采用软件方式,Window下常用的几款网络状况模拟工具:一是Network Delay Simulator,简称netsim,用于模拟网络丢包、延迟、低带宽等多种网络异常情况。二是Fiddler,模拟网速功能比较单一(Rules –> Performance –> Simulate Modem speed),选项较少,Fiddler仅是减缓带宽并未引入包丢失。另一款比较好用的网络模拟工具是Network-Emulator-Toolkit(NEWT)
NEWT是一个简单实用的网络模拟工具软件。开始是微软内部为搭建网络模拟服务于网络的研究工作而开发,之后开发维护并将NEWT的核心代码先后成功地转移到了微软的产品Xbox XDK,Games for Windows Live,以及Visual Studio 2010中,才广泛运用于用户,但找到相关的文档较少。
NEWT通过虚拟链路(virtual link)封装了端到端的网络连接行为,并且通过操纵流经虚拟链路的数据包交换模拟真实网络行为。有时候需要仅通过模拟操作影响来自某个客户端与服务器的数据交互,但是不影响服务器同其它客户端的交互,这个可通过包过滤器(packet filter)和虚拟链路来实现。NEWT可以安装在客户端,也可以安装在服务端,只要客户端和服务器通过物理链路连接,且途经NEWT即可。
- 解压Network-Emulator-Toolkit压缩包,32位和64位两个版本,并打开Network-Emulator-Toolkit,打开后,默认就新建了一个名为“VirtualChannel 1”的channel。如果有必要,可以新建多个Channel
- 创建一个过滤器Filter
- 新建连接,菜单栏 Configuration -> New Link 或工具栏的快捷按钮,未配置的情况下,左右两条线都是灰色的。
- 点击开始按钮/停止按钮/保存文件[可选],保存配置文件为xml,方便后续导入
* 手机/设备端操作,查看效果。例如正常的网络时ping一下其他PC,正常的网络环境下没有丢包,延迟时间<1ms。配置带宽很小,丢包,运行配置后的NEWT,ping发现延迟时间很大。也可以在待测手机/设备上打开App或者浏览器,进行弱网络情况下的测试。如果要验证弱网络的条件是否生效,也可结合网络速度工具进行测试,如speedTest。
模拟手机弱网络访问应用,步骤如下:
1)按照上节步骤,新建wifi热点,手机等设备,连接wifi热点
2)新建NEWT实例,进行必要的配置,如丢包,带宽设置等
3)手机/设备端操作,查看效果。例如正常的网络时ping一下其他PC,正常的网络环境下没有丢包,延迟时间<1ms。配置带宽很小,丢包,运行配置后的NEWT,ping发现延迟时间很大。也可以在待测手机/设备上打开被测的App,进行弱网络情况下的测试。如果要验证弱网络的条件是否生效,一方面可以从App的响应情况看到差别,一方面可以从PC的Wireshark抓包看具体网络层的情况。