Trong một thế giới ngày càng kết nối, việc giả định rằng mọi người đều có kết nối internet tốc độ cao có thể dẫn đến việc phát triển các ứng dụng kém chất lượng. Một cuộc thảo luận ngày càng sôi nổi trong cộng đồng công nghệ đang nhấn mạnh tầm quan trọng của việc kiểm thử ứng dụng trong điều kiện mạng khó khăn, cho thấy nhiều ứng dụng phổ biến không thể xử lý tốt khi kết nối kém.
Thực tế về kết nối kém
Không phải ai cũng được hưởng internet tốc độ cao ổn định. Từ đường hầm tàu điện ngầm đến vùng nông thôn, từ khu vực thiên tai đến các vùng đang phát triển, kết nối chậm hoặc không ổn định vẫn là thực tế hàng ngày. Đáng ngạc nhiên, Đức là một ví dụ điển hình cho thách thức này, khi người dùng thường xuyên báo cáo các vấn đề về kết nối ngay cả trên các tuyến đường sắt. Tình huống này càng trở nên quan trọng hơn trong các tình huống khẩn cấp, khi việc liên lạc đáng tin cậy là thiết yếu bất chấp các hạn chế về mạng.
Kiểm thử trong điều kiện bất lợi
Các lập trình viên có thể sử dụng nhiều công cụ để mô phỏng điều kiện mạng kém. Người dùng Linux có thể sử dụng lệnh 'tc' (traffic control) để mô phỏng giới hạn băng thông và mất gói tin, trong khi các lập trình viên macOS có thể sử dụng Network Link Conditioner thông qua Xcode. Đối với lập trình web, các trình duyệt như Firefox cung cấp khả năng điều chỉnh tốc độ trong công cụ phát triển.
Các công cụ kiểm thử hiện có:
- Linux: tc (điều khiển lưu lượng)
- macOS: Network Link Conditioner
- Android: Giới hạn băng thông trong Tùy chọn nhà phát triển
- Trình duyệt: Điều chỉnh băng thông trong Công cụ dành cho nhà phát triển
- Doanh nghiệp: Toxiproxy (của Shopify )
Cái giá của sự thờ ơ
Hậu quả của việc bỏ qua điều kiện mạng kém có thể rất nghiêm trọng. Nhiều ứng dụng thể hiện các hành vi có vấn đề, từ việc Discord hay bị đứng đến mất hoàn toàn chức năng. Như một thành viên cộng đồng nhận xét:
Thật đáng bực mình khi nhiều ứng dụng điện thoại thông minh sẽ hiển thị cho bạn màn hình đầy đủ thông tin cần thiết khi trực tuyến, nhưng khi mất kết nối internet do điểm chết trong vùng phủ sóng di động, chúng lại xóa sạch mọi thứ, chỉ để lại một màn hình trống với biểu tượng quay vòng.
Các Thông Số Kiểm Tra Mạng Thông Dụng:
- Băng thông: 40-200 kbps
- Độ trễ: 200-1000ms
- Tỷ lệ mất gói tin: 2-10%
- Độ giật: Lên đến 2000ms
Giải pháp doanh nghiệp và thực tiễn tốt nhất
Một số tổ chức đã nghiêm túc đối mặt với thách thức này. Toxiproxy của Shopify đại diện cho một cách tiếp cận sáng tạo, cung cấp REST API để tạo các máy chủ proxy có thể mô phỏng các điều kiện mạng khác nhau. Điều này cho phép kiểm thử có định hướng trong các kịch bản khác nhau, giúp các lập trình viên tạo ra các ứng dụng bền vững hơn.
Con đường phía trước
Giải pháp không chỉ là xử lý kết nối chậm – mà còn là thiết kế cho trường hợp không có kết nối. Các ứng dụng nên duy trì chức năng khi có thể, lưu trữ thông tin quan trọng và giảm dần chức năng một cách nhẹ nhàng thay vì ngừng hoạt động hoàn toàn. Điều này đặc biệt quan trọng trong các thảm họa thiên nhiên hoặc ở những khu vực có cơ sở hạ tầng hạn chế, nơi không thể đảm bảo kết nối đáng tin cậy.
Cộng đồng công nghệ ngày càng nhận ra rằng việc kiểm thử trong điều kiện mạng bất lợi không nên là một suy nghĩ sau này mà phải là một phần không thể thiếu của quá trình phát triển. Khi các ứng dụng ngày càng trở nên thiết yếu trong cuộc sống hàng ngày, độ tin cậy của chúng trong mọi điều kiện không chỉ là sự tiện lợi mà còn là một nhu cầu thiết yếu.
Nguồn tham khảo: Making your connection bad