办公室里连着千兆网测得好好的功能,一到地铁上就白屏;明明写了 loading 状态,却从没见它转过;断网重连的逻辑,上线之后才发现根本没生效。这些问题的共同点是—— 它们只在网络不好的时候才暴露,而你的工位上从来没有过网络不好的时候。
弱网测试就是为了把这些情况提前搬到桌面上。下面先说清楚"弱网"到底指什么,再看抓包工具这条路能做到哪一步吧。
很多人说弱网,脑子里只有一个"卡"。实际上它至少是四个维度,各自能坑出不同的问题:
真正要在弱网下验证的,是 App 在这些条件下的行为:超时时间设得合不合理、失败了会不会重试、重试有没有上限、loading 和错误提示出不出得来、有没有做好请求合并和缓存。这些逻辑在满速网络里是测不出来的啊。
弱网模拟里最容易上手的是加延迟——给请求或响应人为插一个等待时间,单位是毫秒。
它最直接的用途是 验证超时。客户端一般会设一个超时时间(15 秒、30 秒这一类),但你很难说清"到了 30 秒之后到底会怎样"。把延迟调到比超时略长,就能看着 App 走完那条分支:是弹了错误提示,还是转圈转到天荒地老,还是直接闪退。我第一回这么干的时候才发现,那个转圈是真的能一直转下去的。
延迟还可以只加在响应侧或只加在请求侧,这两种情况能暴露不同的问题——请求侧慢,考验的是等待中的交互设计;响应侧慢,考验的是数据回来之后的处理。
带宽限速是按"单位时间最多过多少数据"来卡。抓包工具里可以直接选 2G / 3G / 4G 这类预设,不用自己去查参数。
几个档次之间的差距比想象中大:4G 下几百毫秒下完的一张图,2G 下可能要几十秒。这个量级下你会看到一批平时完全想不到的问题——首屏一下子塞了七八个请求、大图没有做缩略图、列表接口一次返回了几百条数据。 这些问题在高速网络里被带宽掩盖着,一旦限下来就原形毕露。
做客户端性能优化的时候,这套预设还有一层用处:它给了你一个可复现的基准。“2G 下首屏 12 秒"是个能写进优化单的指标,比"感觉有点慢"有用得多。优化完再跑一遍同一个预设,前后一对比,效果是数字说话。
一个容易被忽略的点:弱网模拟 不该是全局开着的。你只想测某一个业务接口的弱网表现,结果把埋点、心跳、图片 CDN 一起限住了,测出来的现象就混在一起,没法归因。
在 TraceEagle 里,弱网是按规则下发的——规则先匹配流量,再决定对它做什么。所以可以只让延迟和限速命中你关心的那个域名或者那几条路径,其余流量照常跑:
# 只对测试域名加延迟和限速,别的不动 *.test.example.com delay://800 *.test.example.com speed://3g
匹配这一层给得很细:精确域名、通配子域、正则、端口、甚至取反(
! 开头表示"除了这些”)。想省事的话,界面上有一份可点击的动作速查表,点一下把示例插进来改值就行,不用背语法嘛。
这一条的意义不只是"精准"—— 它让弱网测试能跟别的调试手段挂在同一套规则里。同一个域名,可以一条规则限速、另一条规则改响应头、再来一条把它映射到本地开发服务器,互不打架。
调好之后,按这几条对着看,基本能覆盖八成问题:
iOS 上有系统自带的 Network Link Conditioner,Android 模拟器启动参数里也能配延迟和速度,好处是系统级、覆盖全部流量;缺点是粒度粗——只能整体限,而且真机上不一定方便开。想测丢包和抖动的话,还有 clumsy、tc 这类专门做流量整形的工具,能力更强,代价是要额外装和配。
代理工具这一路(Charles 的 Throttle、Fiddler 的规则、mitmproxy 的脚本)和 TraceEagle 的做法接近,都在代理层动手,好处是 不改代码、不改设备设置,还能按域名精确控制。它们的差别主要在规则表达能力上——能不能一条一句地写、能不能按 URL 正则匹配、能不能和改写、Mock、断点这些能力共用一套规则。
选哪条看你的场景:只想快速看一眼 3G 下什么德行,系统工具就够了;要做"只针对某个接口的精确弱网 + 顺便改点响应"这种组合,代理层更顺手。
弱网模拟会影响真实网络吗? 不会。延迟和限速是在代理这一层加的,只作用于经过这个会话的流量,关掉会话就恢复。
能模拟丢包吗? 抓包工具这条路给的主要是延迟和带宽,丢包和抖动属于另一类流量整形,一般交给专门的工具做。两边配合着用就够覆盖了。
手机上也能这么测吗? 能。在 TraceEagle 里,手机流量走同一个抓包会话,一样落在这套规则下,而且不用在手机上装什么额外的弱网开关。
会不会把本地开发服务器也限住了? 规则是按匹配条件走的,只写测试域名就不会波及别处;反过来,如果想让本地调试也模拟弱网,把本地地址一起匹配进去就行。
弱网测试并不难,难的是让它变得 可复现、可归因。延迟调到多少、限速选哪一档、只作用于哪个域名——这几件事定下来,测出来的结果才是能写进单子、能对比改进的数字,而不是"刚才卡了一下,没看清"。挑一个你手边最怕慢的接口,先按 3G 跑一遍试试——大概会有些平时看不到的东西冒出来呢。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70051052/viewspace-3185547/ ,如需转载,请注明出处,否则将追究法律责任。