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 版