在开发环境中,由于开发者对设备和网络通常是最高标准的要求,用以提高自己的生产效率,会产生灯下黑的情况,开发出的产品在稳定的高速网络下表现优异,这很重要,但要进行换位思考,还需要更上一层楼,Web产品的使用者越来越多的是移动网络,而移动网络的特点就是不稳定以及龟速的GPRS还有很多人在用,为了在开发和测试环境中做到用户环境的网络模拟,我们需要使用一系列工具来帮助我们开发测试更好的Web。
Chrome浏览器做为Web开发平台,Chrome提供了网络模拟,可以使用 Chrome DevTools Network Panel 内置或自定义的网络条件。
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_0.jpg!web)
系统 Android
Android模拟器提供了网络设置
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_1.jpg!web)
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_2.jpg!web)
Mac
Network Link Conditioner,安装了 Hardware IO Tools for XCode后,System Preference中会添加这个工具。
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_3.jpg!web)
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_4.jpg!web)
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_5.jpg!web)
Win Fiddler 可以提供网速模拟,还可以搭配[GeoEdge] ( http://www.geoedge.com/faq ) 模拟异地网络访问。
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_6.jpg!web)
网络 Augmented Traffic Control
使用Facebook的 Augmented Traffic Control ,使用启用了ATC网络的用户,都可以轻松选择控制自己的上网速度设置。
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_7.jpg!web)
开发者只需要在浏览器页面上选择自己的网络配置,立即生效。
这个工具要赞一个FB,FB还设立了2G Tuesdays项目,在周二的时候就弹出使用2G网络的提示,让开发者切身感受用户的使用体验。
自制ATC-enabled路由器设备:Netgear R7000,某东就有售
步骤:
刷DD-WRT详细指南 DD-WRT on R7000 ,下载 刷机文件 ,使用Netgear Web Tool的Update Tool上传文件。
使用路由器Web管理界面的用户名和密码SSH到路由器。
刷机命令:
ddup --flash-latest 配置ATC存储开启USB存储
把U盘格式化为ext3,此处先让U盘自动加载,不要填UUID到/opt,刷新页面后会出现UUID,填到/opt并保存。重新拔插U盘后刷新页面。
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_8.jpg!web)
安装opkg包管理器 cd /tmp wget http://qnapware.zyxmon.org/binaries-armv7/installer/entware_install_arm.sh chmod +x entware_install_arm.sh ./entware_install_arm.sh
验证安装:
opkg updateopkg安装成本,继续安装其它依赖。
安装其它依赖 opkg install ca-certificates python-base python-crypto python-logging nanoeasy_setup
curl https://bootstrap.pypa.io/ez_setup.py -k > ez_setup.py python ez_setup.pypip
curl https://bootstrap.pypa.io/get-pip.py -k > get-pip.py python get-pip.py 安装ATC依赖 pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage 创建一个Django项目 mkdir /opt/var/django cd /opt/var/django django-admin startproject atcui cd atcui 配置ACT编辑atcui/settings.py添加ATC到INSTALLED_APPS
INSTALLED_APPS = ( ... # Django ATC API 'rest_framework', 'atc_api', # Django ATC Demo UI 'bootstrap_themes', 'django_static_jquery', 'atc_demo_ui', # Django ATC Profile Storage 'atc_profile_storage', )编辑atcui/urls.py将ACT路由添加以urlpatterns
from django.views.generic.base import RedirectView urlpatterns = patterns('', ... # Django ATC API url(r'^api/v1/', include('atc_api.urls')), # Django ATC Demo UI url(r'^atc_demo_ui/', include('atc_demo_ui.urls')), # Django ATC profile storage url(r'^api/v1/profiles/', include('atc_profile_storage.urls')), url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)), )django-bootstrap-themes patch:详见 issue
编辑/opt/lib/python2.7/site-packages/atc_demo_ui/templates/atc_demo_ui
更新Django DB
python manage.py migrate 启动ACT启动守护进程
sudo atcd启动UI
python manage.py runserver 0.0.0.0:8000测试 http://192.168.18.1:8000,当然要换成你的路由器地址。
Bonus###全员参与
设置一个nocatsplash到act的web ui, http://192.168.1.1:8000/atc_demo_ui/,用网的时候自动跳转的ACT配置界面。
###ACTD开机自启
在/opt/start下加一个startup.sh
#!/bin/sh atcd --atcd-wan vlan2 --atcd-lan br0 --atcd-mode unsecure --atcd-iptables /usr/sbin/iptables --daemon nohup python /opt/var/django/atcui/manage.py runserver 0.0.0.0:8000 &然后在DD-WRT的Web管理界面设置为startup script.
SAASWebPageTest 是一个在线服务,可以指定不同的浏览器版本和所在地,进行测试并提供详细的加载时间报表,用来优化页面访问。
![[工具资源] 利器系列 - Web 网络模拟工具,测试应用在低速不稳定网络中的表现](http://www.codesec.net/app_attach/201608/25/20160825_422_460804_9.jpg!web)
WebPageTest还提供OpenAPI访问,用以把异地网络加载测试集成到整个构建测试流程中。
#小结
现实世界遵循二八原理,为20%的用户开发的同时,也不要忘了还有更大的80%的用户君体,让你的Web产品提供最好的用户体验给最多的人,可以让这些工具来帮助我们。欲善其事,先利其器!