Bean Network Tester

Kiểm thử hỗn loạn mạng trên Windows

Kiểm thử hỗn loạn nghĩa là cố ý làm hỏng một thứ, trong lúc bạn theo dõi, để biết phần mềm của bạn làm gì khi đó. Ở tầng mạng, đó chính xác là công cụ này: cách chèn một lỗi vào một ứng dụng và xem nó có sống sót không.

Những lỗi bạn có thể chèn

LỗiNó mô phỏng gì
Mất, hỏng, nhân đôiMột đường truyền suy giảm. Gói tin biến mất, đến nơi bị hỏng hoặc đến hai lần.
Độ trễ, jitter, cú giậtMột đường truyền chậm hoặc bất ổn, kể cả cú khựng nhiều giây làm hỏng các timeout.
Đặt lại kết nốiMột tường lửa hay bộ cân bằng tải giết kết nối giữa chừng khi đang truyền.
Mất đường truyềnĐường truyền biến mất rồi quay lại, theo chu kỳ.
Chặn địa chỉ hoặc cổngMột phụ thuộc không với tới được trong khi mọi thứ khác vẫn chạy.
Mất internet, LAN vẫn sốngHình dạng của captive portal: mạng nội bộ chạy, thế giới bên ngoài thì không.

Điều phân biệt hỗn loạn với nhiễu: khả năng lặp lại

Một lỗi ngẫu nhiên không thể phát lại chỉ tạo ra một câu chuyện, không phải một báo cáo lỗi. Mọi quyết định ngẫu nhiên ở đây đều đến từ một seed, nên cùng một lệnh tái hiện cùng một lần chạy: cùng những gói bị mất, cùng jitter, theo cùng thứ tự:

BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120

Đó là khác biệt giữa “thứ Ba tuần trước nó sập một lần” và một bài kiểm tra thất bại mà người khác chạy lại được.

Trong pipeline

Dòng lệnh báo kết quả qua mã thoát, nên một bản build phân biệt được “ứng dụng thất bại” với “công cụ không khởi động được”, và phiên tự kết thúc, nên không có bước dọn dẹp nào để quên:

BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson

Một chuỗi lỗi thay vì một lỗi là một tệp kịch bản, và những tệp đó cũng lặp lại được. Xem kịch bản theo thời gian và kiểm thử mạng trong CI để biết mã thoát và runner cần dùng.

Phạm vi ảnh hưởng dừng ở đâu

Hai giới hạn, và cả hai đều có chủ ý. Sự suy giảm chỉ đến được một tiến trình, PID, địa chỉ hoặc cổng khi bạn nhắm vào đó, nên máy bạn đang làm việc vẫn chạy. Và nó chỉ là một máy: đây là chèn lỗi cho một ứng dụng khách và kết nối của nó, không phải cho một cụm máy. Nếu bạn cần hỗn loạn xuyên các dịch vụ và nút, đó là một loại công cụ khác, còn công cụ này là phần làm hỏng mạng dưới một ứng dụng Windows đơn lẻ.

Mọi thứ đều hoàn tác được ngay. STOP khôi phục mạng, giới hạn thời gian cũng làm vậy, và một watchdog bên trong công cụ sẽ tắt việc bắt gói nếu chính công cụ chết: một lỗi bạn đã chèn không bao giờ được sống lâu hơn lần chạy đã chèn nó.

Tiếp theo

Sẵn sàng cố ý phá mạng của chính bạn chưa?

Tải về cho Windows