Bean Network Tester

在没有互联网的情况下测试应用

拔掉网线只测试了一件事:一台没有网络的机器。大多数离线 bug 并不是这样的。它们出现在网卡是启用的、Wi-Fi 图标看起来正常,而应用需要的东西就是访问不到的时候。

三种不同的“离线”

你开启的是什么应用会看到什么它能发现的 bug
局域网模式本地网络正常,超出本地网络的一切都不通。登录之前的酒店 Wi-Fi、断掉的上行链路、没有出口路由的公司网络。
阻断地址某一台服务器无法访问,其余一切正常。一个依赖挂了而应用本身一切正常,这是健康检查通常会漏掉的情况。
阻断 53 端口域名无法解析,但按地址连接仍然可用。DNS 故障,在用户看来是“互联网断了”,在日志里看起来却完全是另一回事。

从命令行运行

对一个应用断开互联网,本地网络不受影响,持续两分钟:

BeanNetworkTester.exe --lan-mode --target myapp.exe --duration 120

一个服务无法访问,其余一切正常:

BeanNetworkTester.exe --block-ip 203.0.113.10

域名无法解析:

BeanNetworkTester.exe --block-port 53 --target myapp.exe

还有一条现成的时间线,会破坏 DNS 并自行恢复,就是程序旁边 scenarios 文件夹里的 failing-dns.json。参见定时场景。

该实际观察什么

最后一点正是价值最大的地方。离线很容易处理不好,也很容易测试。恢复联网时,状态才最容易出错。

这不是什么

网卡保持启用,机器保留着自己的地址,所以只向 Windows 询问“有没有网络”的应用仍会得到“有”。这是刻意为之,也是更有意思的测试:真实用户很少是完全断开的,他们是连接到了某个够不到所需资源的网络上。如果你特别想要“没有网卡”的情形,禁用网卡即可,不需要任何工具。

接下来

准备好故意搞坏自己的网络了吗?

下载 Windows 版