インターネットなしでアプリをテストする
ネットワークケーブルを抜いて確かめられるのは、ネットワークのないマシンという1つのことだけです。オフラインのバグの多くはそうではありません。アダプターは有効で、Wi-Fiのアイコンも問題なさそうなのに、アプリが必要とするものにだけ到達できないときに起きます。
3種類の「オフライン」
| オンにするもの | アプリに何が見えるか | 見つかるバグ |
|---|---|---|
| LANモード | ローカルネットワークは動きます。その先はどこにも届きません。 | ログインする前のホテルのWi-Fi、切れたアップリンク、外への経路がない社内ネットワーク。 |
| アドレスのブロック | 1台のサーバーに到達できません。ほかはすべて動きます。 | アプリ自体は正常なのに依存先が1つ落ちている状態。ヘルスチェックがたいてい見逃すケースです。 |
| ポート53のブロック | 名前が解決されなくなりますが、アドレス指定での接続は動き続けます。 | 壊れたDNS。ユーザーには「インターネットが落ちた」ように見え、ログには全然別のものに見えます。 |
コマンドラインから
1つのアプリだけインターネットを失い、ローカルネットワークはそのままの状態を2分間:
BeanNetworkTester.exe --lan-mode --target myapp.exe --duration 120
1つのサービスが到達不能で、ほかは正常:
BeanNetworkTester.exe --block-ip 203.0.113.10
名前が解決されなくなる:
BeanNetworkTester.exe --block-port 53 --target myapp.exe
DNSを壊し、自動で元に戻す用意済みタイムラインもあります。プログラムの隣の scenarios フォルダーにある failing-dns.json です。時間で変わるシナリオを参照してください。
実際に確認すること
- メッセージ。アプリは何が起きたかを伝えますか、それともスピナーを永遠に回し続けますか?
- 再試行。間隔を空けますか、それとも同じアドレスをループで叩き続けますか?
- キュー。オフライン中にユーザーが行った作業は保持されて後で送られますか、それとも失われますか?
- 回復。STOPでネットワークが戻ります。アプリは自分で気づきますか、それとも再起動が必要ですか?
最後の点にこそ、価値の大半があります。オフラインになるのは、下手に扱いやすく、テストもしやすいものです。戻ってくるときに、状態がおかしくなります。
これではないもの
アダプターは有効なままでマシンはアドレスを保っているため、Windowsに「ネットワークはあるか」とだけ尋ねるアプリは、それでも「はい」という答えを得ます。これは意図的で、よりおもしろいテストです。実際のユーザーが完全に切断されることはまれで、必要なものに届かない何かにつながっているのです。特に「アダプターなし」のケースが欲しいなら、アダプターを無効にしてください。ツールは要りません。