微信开发工具模拟弱网_微信模拟开发工具 - CSDN
  • 微信测试工程师手把手教你做弱网络模拟测试 Posted by 腾讯优测 | 3,152 views 小优有话说: app研发不同于实验室里做研究,哪里有“理想环境”。 理想里,用户用着性能卓越的手机,连着畅通无阻的...

    微信测试工程师手把手教你做弱网络模拟测试

     | 3,152 views
    小优有话说:

    app研发不同于实验室里做研究,哪里有“理想环境”。
    理想里,用户用着性能卓越的手机,连着畅通无阻的wifi网络。
    “哇塞!这个app好用到飞起!”
    现实是,他们可能正用着你闻所未闻的机型,穿梭于地铁、公交、火车、乡间、大山….. 信号“若隐若现,扑朔迷离”
    “我去!又crash了!”
    “唉,怎么又连不上网了,其他app好好的啊。”
    这大概就是理想与现实之间的差距吧。

    机型碎片化的问题,腾讯优测已经帮你解决了(广告就是这么硬)。
    弱网络引发的crash,anr,丢包等各种问题,除了亲身到各个网络崩溃的地方测试,祈求问题重现外,还有弱网络模拟测试工具可以助你一臂之力哦!
    微信测试团队的开发工程师亲身实践,为你详解弱网络模拟测试工具的那些事儿。

    *

    ———–我是正文分割线———–

    特约供稿人:微信测试团队 CoderZh

    *

    背景

    移动互联网时代,用户会在各种网络状况下使用我们的APP。他们使用3G或4G 网络,甚至还在用2G,他们也许正在商场闲逛,也许正在地铁奔波,飞速的汽车穿过一个又一个基站,簇拥的人群挤在演唱会现场。
    在弱网络下,你的APP表现还好吗?你的手游还能玩吗?
    所以,我们需要一款能够模拟弱网络的软件,用来测试我们的APP在弱网络下的表现。

    分析

    市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(ATC),以及WANem。

    NEWT

    NEWT是基于Windows的,通过图形化的界面,可以对该机器的网络参数进行设置,且模型较为丰富。

    参数设置:

    优点:
    使用起来比较简单,网络模拟的参数也很丰富,模拟的准确性也比较高。

    缺点:
    基于 Windows。想在手机上测试时,需在 PC 上使用 USB 无线网卡建立 WIFI 热点,使用方式为独占式,且必须在 PC 上进行控制,不适用于长期开放热点供多人使用。

    WANem

    WANem 的实现原理基于 iptables 和 tc。它推出的年份较早,可以看出并不是针对现在的移动互联网设计的。他提供了一个可安装的 Linux 系统镜像文件,安装后可在一个网页里对该机器的网络流量进行控制。其他被测机器通过修改路由表,将网络流量引向装好 WANem 的机器从而实现对网络的模拟。

    设置页面:

    优点:
    提供了安装镜像,解决了安装配置复杂的问题。

    缺点:
    需手工配置路由表,用户体验非常不友好,对移动端通过 WIFI 接入支持不好。

    ATC

    ATC 是 Facebook 开源的弱网络模拟工具,实现原理基于 iptables 和 tc。

    服务启动后,通过手机可以对网络参数进行设置:

    6.jpg

    优点:
    可多人使用,在手机端对网络参数进行设置且互不影响。

    缺点:
    部署起来不太方便,在 Linux 上使用 USB 无线网卡建立 WIFI 热点也是很头疼的事。当然这些都不算什么,关键是实际体验 ATC 时出现了网络模拟非常不准确的情况,比如基本的上传下载的速度控制都极为不准。在 Github 上关于这点的 Issue 非常多,最后给出的解决方案是启动 atcd 时加 –atcd-dont-drop-packets 参数,即使这样也给人留下这丫怎么那么不准的印象。

    ATC 的 Web 页面在某些手机的浏览器里显示不出来,这么明显的 BUG,不知道他们现在修好了没。

    网络模拟原理

    NEWT 在 Windows 里进行网络模拟的原理我们不得而知,但是像 ATC 和 WANem 基于 Linux 的 iptables 和 tc 的实现原理我们倒是可以一窥究竟。

    网卡

    首先,有个基本的前提必须清楚,即我们只能对网卡的出口流量(egress)进行精确控制。这也比较好理解,比如我们频繁的往互联网发送数据,路由器可以轻易的控制数据往外发的速度。但如果别人频繁发送数据给你,发送速度的控制权不在你,数据来了路由器就会被动的接收,所以控制起来就会更困难。

    那是不是没法对入口流量(ingress,可以理解为下载的流量)进行控制呢?其实不是的。我们只需要有两个网卡,让他们互为出口流量即可。

    其中一个网卡(eth0)接入互联网,另一个网卡(eth1)接入内网。这对应到路由器的 WAN 口和 LAN 口上。

    假设在 PC 上只有一个物理网卡的情况下,也可以虚拟出一个网卡,从而实现对出口和入口流量的控制。比如我需要创建一个名为 wtc 的虚拟网卡:

    如果是正式使用,建议还是直接使用路由器的物理网卡。

    通常,内网 eth1 通过 NAT 的方式将流量引入 eth0 进行上网。设置 NAT 的方式很简单,首先开启内核中的 IP 转发:


    为了永久生效,修改 [/etc/sysctl.conf]文件,修改下行内容:

    然后执行该命令使其生效:

    配置 NAT 的方法:(假设 192.168.1.0/24 是你的内网 IP 段)

    局域网内的机器只要将网关设置成该台机器(192.168.1.1)即可通过 NAT 上网。

    通过 vagrant,可以很容易的在一台机器上模拟出上述的网络结构用于本地调试。

    流量控制

    什么是流量控制?流量控制就是在路由器上通过一系列队列,对数据包进行排序以控制它们的发送顺序,并通过一系列策略控制收到的和发送的数据包是否应该被丢弃,同时还要对数据包的发送速率进行控制。

    Linux 下的流量控制可以通过 tc 命令来实现的。

    qdisc

    首先说说调度器 qdisc,也被称为排队规则。它提供了对数据包不同的调度策略,比如最常见的 FIFO(先入先出队列)、SFQ(随机公平队列)、TBF(令牌桶),以及我们接下来需要使用的 HTB(分层令牌桶)。

    HTB 的一个重要特性就是租借模型。当子分类的流量超过了 rate 时,它们就会向父分类借用令牌,直到子分类借到的令牌数量满足能让其达到 ceil 指定的速度为止,与此同时,它会暂缓发送数据包,直到有了足够多的令牌(token 或 ctoken)。

    简单理解:通过 qdisc 的 HTB 模型可以准确的对网络流量的速度进行控制。

    class

    qdisc 提供可分类和不可分类两种调度器。可分类的意思是,是在某个 qdisc 调度器之下,能否再分出多个子调度器。理论上,类能无限扩展,一个类可以仅包含一个排队规则,也可以包含多个各自排队规则的子类。一个类之下可以包含多个分类的排队规则。这就给 Linux 流量控制系统予以了极大的可扩展性和灵活性。

    简单理解:通过 class 可以将调度器分成多个子类。

    filter

    过滤器是 Linux 流量控制系统中最复杂的对象,它是连接各个流量控制核心组件的纽带。过滤器最简单和最常见的用法就是对数据包进行分类。Linux 允许用户使用一个或多个过滤器将出站数据包分类并送到不同的出站队列上。

    简单理解:既然前面可以分不同的 class,那流量具体要去到哪个 class,就要通过 filter 来控制了。

    网络模拟

    首先,qdisc 我们选用 HTB 模型,因为它可以分类,而且流量控制的比较精确。接着是 class,由于我们希望流量控制是针对具体某个 IP 的,所以每个 class 对应的是不同的用户。过滤(filter)的规则是用户的 IP 地址。

    那么问题来了,如何根据用户的 IP 对流量进行分类呢?这就需要用到 iptables 的 mark 功能,通过 –set-xmark 给不同 IP 的数据打上标记,在 tc 的 filter 里可以识别这些标记,从而进入不同的分类。

    不同 IP 用户的流量进入到不同分类之后,就可以针对具体的用户进行流量控制了。通过 htb 模型可以对流量进行限速,那丢包、延迟、乱序、重包等等,要怎样模拟呢?

    tc 里提供了一个 netem 模块,可以对延迟(delay)、丢包(loss)、重包(duplication)、乱序(re-ordering)等进行控制,比如,给 eth0 网卡设置 100ms 的延迟:

    详尽的 netem 用法请参考:
    http://www.linuxfoundation.org/collaborate/workgroups/networking/netem

    基于 IP 的网络模拟实现如下:

    如果手工执行命令的话,大概是这样的:

    实践

    有了以上理论基础,熟读几遍 iptables 和 tc 的文档,实现一个基于 IP,通过手机直接设置网络参数的弱网络模拟工具就不是那么难了。

    我实现了一个版本:WTC(We Traffic Control),是 ATC 更加轻量级的实现,为了把它塞进路由器里,尽量选用了体积小轻量级的框架,比如:web.py、vuejs。所有文件加起来只有几百K,已经成功在路由器(刷 openwrt)上部署。

    演示:

    为了在 openwrt 上方便部署,我制作了一个安装好 WTC 依赖环境的 ROM(基于最新的 openwrt 15.05.1),想要使用WTC,只需要以下几步:

    申请一个支持刷 openwrt 的路由器。
    刷配好 WTC 环境的 ROM。
    做一定手工配置。

    然后手机连上该 WIFI 后直接访问:http://w.tc 就可以进行网络模拟了。

    当然,你也可以在你的 openwrt 环境手工配置并跑起来:
    (-wan 为外网网卡接口,默认为 eth0,-lan 为内网网卡接口,默认为 eth1)

    推荐直接在路由器上搭配 lighttpd 部署, wsgi 方式运行使用 wsgi.py。

    (小优注:原作者已将WTC的具体实现放置在腾讯内网,因为“你懂的”原因不方便对外公开。稍后有可能会开源哦,感兴趣的同学可以关注作者私人公众账号hacker-thinking,私下交流。
    或者,大牛们看过文章可以亲自动手实践一番哦!)

    *

    腾讯优测

    腾讯优测是专业的移动云测试平台,为应用、游戏,H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供「全面兼容测试」、「缺陷分析」、「云手机」等多种质量检测工具,同时在线下为VIP客户配备专家团队,提供定制化综合测试解决方案。真机实验室配备上千款手机,覆盖亿级用户,7*24小时在线运行,为各类测试工具提供支持。

    展开全文
  • 为了抢得先机许多人开始吧目标瞄准了小程序,开始利用开发工具开发小程序,那么微信官方的小程序开发工具怎么使用?1. 获取微信小程序的 AppID首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并...

    小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用,也体现了“用完即走”的理念。为了抢得先机许多人开始吧目标瞄准了小程序,开始利用开发工具开发小程序,那么微信官方的小程序开发工具怎么使用?

    1. 获取微信小程序的 AppID

    首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号。注意不可直接使用服务号或订阅号的 AppID。 利用提供的帐号,登录https://mp.weixin.qq.com,就可以在网站的「设置」-「开发者设置」中,查看到微信小程序的 AppID 了。

    微信小程序开发工具怎么使用

    注意:如果我们不是用注册时绑定的管理员微信号,在手机上体验该小程序。那么我们还需要操作「绑定开发者」。即在「用户身份-开发者」模块,绑定上需要体验该小程序的微信号。本教程默认注册帐号、体验都是使用管理员微信号。

     2. 创建项目

    我们需要通过开发者工具,来完成小程序创建和代码编辑。开发者工具安装完成后,打开并使用微信扫码登录。选择创建「项目」,填入上文获取到的 AppID,设置一个本地项目的名称(非小程序名称),比如「我的第一个项目」,并选择一个本地的文件夹作为代码存储的目录,点击「新建项目」就可以了。 

    为方便初学者了解微信小程序的基本代码结构,在创建过程中,如果选择的本地文件夹是个空文件夹,开发者工具会提示,是否需要创建一个 quick start 项目。选择「是」,开发者工具会帮助我们在开发目录里生成一个简单的 demo。


    微信小程序开发工具怎么使用


    项目创建成功后,我们就可以点击该项目,进入并看到完整的开发者工具界面,点击左侧导航,在「编辑」里可以查看和编辑我们的代码,在「调试」里可以测试代码并模拟小程序在微信客户端效果,在「项目」里可以发送到手机里预览实际效果。

    3. 编写代码

    点击开发者工具左侧导航的「编辑」,我们可以看到这个项目,已经初始化并包含了一些简单的代码文件。最关键也是必不可少的,是 app.js、app.json、app.wxss 这三个。其中,.js 后缀的是脚本文件,.json 后缀的文件是配置文件,.wxss 后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例。

    4.创建页面

    每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js、index.wxml、index.wxss、index.json。.js 后缀的文件是脚本文件,.json 后缀的文件是配置文件,.wxss 后缀的是样式表文件,.wxml 后缀的文件是页面结构文件。在这个小程序开发教程里,我们有两个页面,index 页面和 logs 页面,即欢迎页和小程序启动日志的展示页,他们都在 pages 目录下。微信小程序中的每一个页面的【路径+页面名】都需要写在 app.json 的 pages 中,且 pages 中的第一个页面是小程序的首页。

    页面的样式表是非必要的。当有页面样式表时,页面的样式表中的样式规则会层叠覆盖 app.wxss 中的样式规则。如果不指定页面的样式表,也可以在页面的结构文件中直接使用 app.wxss 中指定的样式规则。index.json是页面的配置文件,页面的配置文件是非必要的。当有页面的配置文件时,配置项在该页面会覆盖app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用app.json 中的默认配置。

    微信小程序开发工具是小程序诞生的基础,所有要上线的小程序都要在微信官方平台审核,开发者工具为开发者提供了开发环境,只需要开发者对技术有把握就可以开发出需要的小程序。


    本文转载于小程序开发教程,更多视频教程关注小程序培训

    展开全文
  • 一、微信小程序web开发工具下载地址 1.1 在微信公众平台-小程序里边去下载开发工具下载地址。 1.2 下载后安装一下就可以使用了: 二、创建项目 2.1 微信小程序web开发工具...

    一、微信小程序web开发工具下载地址


    1.1 在微信公众平台-小程序里边去下载开发工具下载地址


    1.2 下载后安装一下就可以使用了:


    二、创建项目


    2.1 微信小程序web开发工具需要扫码登陆,所以必须先绑定开发者才可以:



    2.2 已经绑定的开发者可以创建项目,需要填写AppID、项目名称、本地开发目录。





    AppID需要去设置里边获取,如果不填的话官方给的提示是部分功能受限:




    三、开发工具界面介绍:





    1. 编辑:开发的时候,需要到编辑区去写代码 

    2. 调试:开发完需要调试程序的时候需要切换到这个区域,调试区有很多工具可供使用。

    3. 项目:在这里可以上传或者预览项目

    4. 编译:就相当于运行项目的意思

    5. 关闭:关闭当前工程

    6. 微信小程序web开发工具提供实时预览的功能,界面的效果会在这个区域显示

    7. 这个区域可以看到整个项目的文档目录结构

    8. 这个区域是编码区

    9. 这里是选择屏幕尺寸的地方

    10. 模拟网络环境:2G/3G/4G/WiFi



    四、调试区六大工具介绍:


    在调试区开发工具提供了6种调试模式:


    4.1 Console

    Console的意思是控制台,做过开发的都知道几乎每个IDE都会有控制台,可以显示错误信息和打印变量的信息等。


     

    4.2 Sources

    Sources显示了当前项目的所有脚本文件,微信小程序框架会对这些脚本文件进行编译。

    Source下边还有一个区域,做过软件开发的都知道,一般下边是控制台会显示一些log信息、断电调试等等。



    4.3 Network

    Network顾名思义:这个区域显示的是与网络相关的信息,我这里暂时没有进行网络请求。



    4.4 Storage

    官方的解释是显示当前项目的使用wx.setStorage或者wx.setStorageSync后的数据存储情况。这个后续用到再慢慢研究


     

    4.5 AppData

    AppData是显示当前项目显示的具体数据,可以在这里编译,并且会在页面实时显示。



    4.6 Wxml


    Wxml调试区:把他的名字换一下的话大家就好理解了,其实他的实质就是HTML+CSS,微信只是把HTML改成了Wxml而已。学过HTML的人一看就明白,左侧的区域是HTML语言+CSS的一些标签属性。右侧可以便捷的设置CSS的属性。




    转自:http://lib.csdn.NET/article/5/52864?knId=1796#focustext

    展开全文
  • 为什么80%的码农都做不了架构师?>>> ...

    小优有话说:

    app研发不同于实验室里做研究,哪里有“理想环境”。
    理想里,用户用着性能卓越的手机,连着畅通无阻的wifi网络。
    “哇塞!这个app好用到飞起!”
    现实是,他们可能正用着你闻所未闻的机型,穿梭于地铁、公交、火车、乡间、大山….. 信号“若隐若现,扑朔迷离”
    “我去!又crash了!”
    “唉,怎么又连不上网了,其他app好好的啊。”
    这大概就是理想与现实之间的差距吧。

    机型碎片化的问题,腾讯优测已经帮你解决了(广告就是这么硬)。
    弱网络引发的crash,anr,丢包等各种问题,除了亲身到各个网络崩溃的地方测试,祈求问题重现外,还有弱网络模拟测试工具可以助你一臂之力哦!
    微信测试团队的开发工程师亲身实践,为你详解弱网络模拟测试工具的那些事儿。

    *

    —————-我是正文分割线—————-

    特约供稿人:微信测试团队 CoderZh

    *

    背景

    移动互联网时代,用户会在各种网络状况下使用我们的APP。他们使用3G或4G 网络,甚至还在用2G,他们也许正在商场闲逛,也许正在地铁奔波,飞速的汽车穿过一个又一个基站,簇拥的人群挤在演唱会现场。
    在弱网络下,你的APP表现还好吗?你的手游还能玩吗?
    所以,我们需要一款能够模拟弱网络的软件,用来测试我们的APP在弱网络下的表现。

    分析

    市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(ATC),以及WANem。

    NEWT

    NEWT是基于Windows的,通过图形化的界面,可以对该机器的网络参数进行设置,且模型较为丰富。

    参数设置:

    优点:
    使用起来比较简单,网络模拟的参数也很丰富,模拟的准确性也比较高。

    缺点:
    基于 Windows。想在手机上测试时,需在 PC 上使用 USB 无线网卡建立 WIFI 热点,使用方式为独占式,且必须在 PC 上进行控制,不适用于长期开放热点供多人使用。

    WANem

    WANem 的实现原理基于 iptables 和 tc。它推出的年份较早,可以看出并不是针对现在的移动互联网设计的。他提供了一个可安装的 Linux 系统镜像文件,安装后可在一个网页里对该机器的网络流量进行控制。其他被测机器通过修改路由表,将网络流量引向装好 WANem 的机器从而实现对网络的模拟。

    设置页面:

    优点:
    提供了安装镜像,解决了安装配置复杂的问题。

    缺点:
    需手工配置路由表,用户体验非常不友好,对移动端通过 WIFI 接入支持不好。

    ATC

    ATC 是 Facebook 开源的弱网络模拟工具,实现原理基于 iptables 和 tc。

    服务启动后,通过手机可以对网络参数进行设置:

    6.jpg

    优点:
    可多人使用,在手机端对网络参数进行设置且互不影响。

    缺点:
    部署起来不太方便,在 Linux 上使用 USB 无线网卡建立 WIFI 热点也是很头疼的事。当然这些都不算什么,关键是实际体验 ATC 时出现了网络模拟非常不准确的情况,比如基本的上传下载的速度控制都极为不准。在 Github 上关于这点的 Issue 非常多,最后给出的解决方案是启动 atcd 时加 —atcd-dont-drop-packets 参数,即使这样也给人留下这丫怎么那么不准的印象。

    ATC 的 Web 页面在某些手机的浏览器里显示不出来,这么明显的 BUG,不知道他们现在修好了没。

    网络模拟原理

    NEWT 在 Windows 里进行网络模拟的原理我们不得而知,但是像 ATC 和 WANem 基于 Linux 的 iptables 和 tc 的实现原理我们倒是可以一窥究竟。

    网卡

    首先,有个基本的前提必须清楚,即我们只能对网卡的出口流量(egress)进行精确控制。这也比较好理解,比如我们频繁的往互联网发送数据,路由器可以轻易的控制数据往外发的速度。但如果别人频繁发送数据给你,发送速度的控制权不在你,数据来了路由器就会被动的接收,所以控制起来就会更困难。

    那是不是没法对入口流量(ingress,可以理解为下载的流量)进行控制呢?其实不是的。我们只需要有两个网卡,让他们互为出口流量即可。

    其中一个网卡(eth0)接入互联网,另一个网卡(eth1)接入内网。这对应到路由器的 WAN 口和 LAN 口上。

    假设在 PC 上只有一个物理网卡的情况下,也可以虚拟出一个网卡,从而实现对出口和入口流量的控制。比如我需要创建一个名为 wtc 的虚拟网卡:

    如果是正式使用,建议还是直接使用路由器的物理网卡。

    通常,内网 eth1 通过 NAT 的方式将流量引入 eth0 进行上网。设置 NAT 的方式很简单,首先开启内核中的 IP 转发:


    为了永久生效,修改 [/etc/sysctl.conf]文件,修改下行内容:

    然后执行该命令使其生效:

    配置 NAT 的方法:(假设 192.168.1.0/24 是你的内网 IP 段)

    局域网内的机器只要将网关设置成该台机器(192.168.1.1)即可通过 NAT 上网。

    通过 vagrant,可以很容易的在一台机器上模拟出上述的网络结构用于本地调试。

    流量控制

    什么是流量控制?流量控制就是在路由器上通过一系列队列,对数据包进行排序以控制它们的发送顺序,并通过一系列策略控制收到的和发送的数据包是否应该被丢弃,同时还要对数据包的发送速率进行控制。

    Linux 下的流量控制可以通过 tc 命令来实现的。

    qdisc

    首先说说调度器 qdisc,也被称为排队规则。它提供了对数据包不同的调度策略,比如最常见的 FIFO(先入先出队列)、SFQ(随机公平队列)、TBF(令牌桶),以及我们接下来需要使用的 HTB(分层令牌桶)。

    HTB 的一个重要特性就是租借模型。当子分类的流量超过了 rate 时,它们就会向父分类借用令牌,直到子分类借到的令牌数量满足能让其达到 ceil 指定的速度为止,与此同时,它会暂缓发送数据包,直到有了足够多的令牌(token 或 ctoken)。

    简单理解:通过 qdisc 的 HTB 模型可以准确的对网络流量的速度进行控制。

    class

    qdisc 提供可分类和不可分类两种调度器。可分类的意思是,是在某个 qdisc 调度器之下,能否再分出多个子调度器。理论上,类能无限扩展,一个类可以仅包含一个排队规则,也可以包含多个各自排队规则的子类。一个类之下可以包含多个分类的排队规则。这就给 Linux 流量控制系统予以了极大的可扩展性和灵活性。

    简单理解:通过 class 可以将调度器分成多个子类。

    filter

    过滤器是 Linux 流量控制系统中最复杂的对象,它是连接各个流量控制核心组件的纽带。过滤器最简单和最常见的用法就是对数据包进行分类。Linux 允许用户使用一个或多个过滤器将出站数据包分类并送到不同的出站队列上。

    简单理解:既然前面可以分不同的 class,那流量具体要去到哪个 class,就要通过 filter 来控制了。

    网络模拟

    首先,qdisc 我们选用 HTB 模型,因为它可以分类,而且流量控制的比较精确。接着是 class,由于我们希望流量控制是针对具体某个 IP 的,所以每个 class 对应的是不同的用户。过滤(filter)的规则是用户的 IP 地址。

    那么问题来了,如何根据用户的 IP 对流量进行分类呢?这就需要用到 iptables 的 mark 功能,通过 —set-xmark 给不同 IP 的数据打上标记,在 tc 的 filter 里可以识别这些标记,从而进入不同的分类。

    不同 IP 用户的流量进入到不同分类之后,就可以针对具体的用户进行流量控制了。通过 htb 模型可以对流量进行限速,那丢包、延迟、乱序、重包等等,要怎样模拟呢?

    tc 里提供了一个 netem 模块,可以对延迟(delay)、丢包(loss)、重包(duplication)、乱序(re-ordering)等进行控制,比如,给 eth0 网卡设置 100ms 的延迟:

    详尽的 netem 用法请参考:
    http://www.linuxfoundation.org/collaborate/workgroups/networking/netem

    基于 IP 的网络模拟实现如下:

    如果手工执行命令的话,大概是这样的:

    实践

    有了以上理论基础,熟读几遍 iptables 和 tc 的文档,实现一个基于 IP,通过手机直接设置网络参数的弱网络模拟工具就不是那么难了。

    我实现了一个版本:WTC(We Traffic Control),是 ATC 更加轻量级的实现,为了把它塞进路由器里,尽量选用了体积小轻量级的框架,比如:web.py、vuejs。所有文件加起来只有几百K,已经成功在路由器(刷 openwrt)上部署。

    演示:

    为了在 openwrt 上方便部署,我制作了一个安装好 WTC 依赖环境的 ROM(基于最新的 openwrt 15.05.1),想要使用WTC,只需要以下几步:

    申请一个支持刷 openwrt 的路由器。
    刷配好 WTC 环境的 ROM。
    做一定手工配置。

    然后手机连上该 WIFI 后直接访问:http://w.tc 就可以进行网络模拟了。

    当然,你也可以在你的 openwrt 环境手工配置并跑起来:
    (-wan 为外网网卡接口,默认为 eth0,-lan 为内网网卡接口,默认为 eth1)

    推荐直接在路由器上搭配 lighttpd 部署, wsgi 方式运行使用 wsgi.py。

    (小优注:原作者已将WTC的具体实现放置在腾讯内网,因为“你懂的”原因不方便对外公开。稍后有可能会开源哦,感兴趣的同学可以关注作者私人公众账号hacker-thinking,私下交流。
    或者,大牛们看过文章可以亲自动手实践一番哦!)

    *更多精彩内容欢迎关注优测的微信公众号:

    腾讯优测

    腾讯优测是专业的移动云测试平台,为应用、游戏,H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供「全面兼容测试」、「缺陷分析」、「云手机」等多种质量检测工具,同时在线下为VIP客户配备专家团队,提供定制化综合测试解决方案。真机实验室配备上千款手机,覆盖亿级用户,7*24小时在线运行,为各类测试工具提供支持。

    转载于:https://my.oschina.net/bugly/blog/684211

    展开全文
  • 如何模拟弱网测试

    2019-06-24 18:13:44
    浅谈弱网测试 siyu8023关注 2016.12.07 20:38*字数 2970阅读 7994评论 3喜欢 20 【背景】 弱网测试,属于健壮性测试的内容。随着国内移动端迅猛发展,大大增加用户碎片化使用移动端的概率。想象一下,...
  • 弱网测试的背景】 对于某些问题的定位可以使用抓包来看数据。 弱网测试,属于健壮性测试的内容。 1.用户体验 APP使用过程中,弱网的高延迟和高丢包,在实时性要求非常高的场景下,用户体验容易减弱 2.非...
  • 弱网测试主要就是对带宽、丢包、延时等进行模拟弱网环境,属于健壮性测试的内容。目前移动端用户所处的网络环境并非为完全流畅的WiFi环境,并且在WiFi环境下也会有网络波动。在实时性要求非常高的场景,容易伤害用户...
  • 滴滴开源:DoraemonKit来了,程序员的开发工具箱。 DoraemonKit /'dɔ:ra:'emɔn/,简称DoKit,中文名 哆啦A梦,意味着能够像哆啦A梦一样提供给他的主人各种各样的工具。Just Do Kit。 DoraemonKit DoraemonKit是...
  • APP模拟弱网环境测试

    2019-06-29 03:03:27
    测试和开发过程中需要对不同网络环境进行处理和测试,本文介绍几种模拟不同网络环境的方法,先来介绍下iOS设备特有的弱网设置方法,再介绍几个APP(Android和iOS)通用的方法。 一、iOS特有的网络调试工具Network ...
  • 机型碎片化的问题,腾讯优测已经帮你解决了。弱网络引发的crash,anr,丢包等各种问题,除了亲身到各个网络崩溃的地方测试,祈求问题重现外...微信测试团队的开发工程师亲身实践,为你详解弱网络模拟测试工具的那些事儿。
  • whistle是基于Node实现的跨平台web调试代理工具,可以作为普通的http代理或者用来抓包、修改、操作http、https、websocket、tunnel请求,如:修改hosts、请求方法、响应状态码、请求(响应)头、请求(响应)内容等等,...
  • ios真机弱网测试

    2019-07-10 05:26:22
    首先你需要将iPhone和一台Mac电脑相连接,然后在Mac上打开Xcode开发工具,此时你iPhone的设置里就会出现“开发者”这个选项了。 二、进入苹果开发者选项 Instruments可以理解为是一个日志记录工具,可以记录...
  • 微信/支付宝小程序测试大全 小程序测试环境 小程序一般会准备三个环境: 开发版访问测试环境; 体验版访问预发环境,连的是生产的地址,白名单人员可见; 正式版访问生产环境,所有人可见 共同点是:体验版和正式版...
  • 小优有话说: app研发不同于实验室里做研究,哪里有“理想环境”。理想里,用户用着性能卓越的手机,连着畅通无阻的wifi网络。“哇塞!这个app好用到飞起!”现实是,他们可能正用着你闻所未闻的机型,穿梭于地铁、...
  • DoraemonKit(哆啦A梦)一款提供给开发、测试、设计同学的提高工作效率的研发助手类开源产品,目前支持iOS和Android两个平台。每一项功能都解决了我们在研发测试过程中的一个痛点。使用DoraemonKit,您无需使用电脑...
  • 之前转载了一篇用fiddler改变网速的文章,后来发现chrome dev tools 自带有改变网速的功能,方便调试。
  • 每天早上七点三十,准时推送干货Hello,大家好,五一小长假结束,今天开始上班!不过想想,再过三天就又周末,想想还是有点小激动,嘿嘿!前几天的文章,阿粉教了大家如何爬取豆瓣短评数据。爬取...
  • 原创:蔡锐 百度APP技术团队资深网络专家 文章来源:百度APP技术微信公众号 一、前言 网络优化解决的核心问题有三个,第一是安全问题,我们在系列《一》DNS优化进行了详细的讲解。第二是速度问题,我们在系列《二...
  • 本文由腾讯WXG应用研究员breezecheng原创发表于公众号“腾讯技术工程”,原题“微信「扫一扫识物」 的背后技术揭秘”。 一、引言 现在市面上主流的移动端IM应用于都有“扫一扫”功能,看起来好像也就能扫一扫加...
1 2 3 4 5 ... 11
收藏数 203
精华内容 81
关键字:

微信开发工具模拟弱网