在這個日益互聯的世界中,假設使用者總是能享有高速網路連線可能會導致應用程式設計不當。技術社群中越來越多的討論強調了在具有挑戰性的網路條件下測試應用程式的重要性,這揭示了許多流行應用在處理糟糕的網路連線時表現不佳。
網路連線不佳的現實
並非每個人都能享受到可靠的高速網際網路。從地鐵隧道到農村地區,從災區到發展中地區,網路連線緩慢或不穩定仍是日常現實。令人驚訝的是, Germany 就是這種挑戰的典型例子,使用者經常報告在火車路線上遇到連線問題。在緊急情況下,這種情況變得更加嚴重,因為即使在網路受限的情況下,可靠的通訊也是至關重要的。
不利條件下的測試
開發者可以使用各種工具來模擬糟糕的網路條件。 Linux 使用者可以使用 'tc'(流量控制)命令來模擬頻寬限制和資料包丟失,而 macOS 開發者可以透過 Xcode 使用 Network Link Conditioner 。對於網頁開發者來說, Firefox 等瀏覽器的開發者工具中提供了內建的網路限速功能。
可用的測試工具:
- Linux :tc(流量控制)
- macOS :Network Link Conditioner
- Android :開發者選項中的頻寬限制
- 瀏覽器:開發者工具網路節流功能
- 企業級: Toxiproxy ( Shopify 開發)
忽視的代價
忽視糟糕的網路條件可能會帶來嚴重後果。許多應用程式都表現出問題行為,從 Discord 容易崩潰到完全喪失功能。正如一位社群成員指出:
令人惱火的是,許多智慧手機應用在線上時會顯示你需要的所有資訊,但當它們因為手機訊號覆蓋死角而失去網際網路連線時,就會把資訊撤走,只留下一個空白螢幕和旋轉的進度指示器。
常見網路測試引數:
- 頻寬:40-200 kbps
- 延遲:200-1000毫秒
- 丟包率:2-10%
- 抖動:最高2000毫秒
企業解決方案和最佳實踐
一些組織已經認真對待這個挑戰。 Shopify 的 Toxiproxy 代表了一種創新方法,它提供了一個 REST API 來建立可以模擬各種網路條件的代理伺服器。這使開發者能夠在不同場景下進行確定性測試,幫助建立更具彈性的應用程式。
未來發展方向
解決方案不僅僅是處理慢速連線,而是要為完全沒有連線的情況做設計。應用程式應該在可能的情況下保持功能,快取關鍵資訊,並優雅地降級而不是完全失敗。這在自然災害期間或基礎設施有限的地區變得特別重要,因為在這些情況下無法保證可靠的連線。
技術社群越來越認識到,在不利網路條件下進行測試不應該是事後考慮,而應該是開發過程中不可或缺的一部分。隨著應用程式在日常生活中變得越來越重要,它們在各種條件下的可靠性不僅僅是一種便利,而是一種必需。