
Mục lục bài viết 9 phần
Pipeline chạy “success” không chứng minh mạng đạt desired state. Kiểm thử phải xác minh tính idempotent, pre/post-check, transaction boundary, partial failure, rollback và drift — cùng bằng chứng forwarding chứ không chỉ diff cấu hình.
Bài viết giúp bạn
- Tự động hóa cần được kiểm thử như một hệ thống
- Topology và điều kiện đo
- Biến số phải kiểm soát
Tự động hóa cần được kiểm thử như một hệ thống
#RFC 8342 mô tả Network Management Datastore Architecture, giúp phân biệt intended và operational state. Một tool có thể đẩy cấu hình thành công nhưng protocol không hội tụ hoặc phần cứng không hiện thực state như mong muốn. Vì vậy validation phải đọc operational state và đo traffic.
Idempotency nghĩa là chạy lại cùng intent không tạo thay đổi ngoài dự kiến. Rollback không chỉ trả text config; route, neighbor, policy, session và forwarding phải trở về trạng thái chấp nhận được.
Topology và điều kiện đo
#Lab cần controller/runner, source repository, secrets store, inventory, telemetry collector, traffic generator và nhóm DUT đại diện version/role. Tạo ít nhất một thiết bị không reachable, một thiết bị trả lỗi validation và một dependency chậm để thử partial failure.
Ghi baseline config hash, intended/operational state, protocol neighbor, RIB/FIB và traffic. Đồng bộ clock để nối commit, device log, state transition và packet loss.

Biến số phải kiểm soát
#Khóa tool/module/collection version, device OS, model/schema, transport, concurrency, timeout, retry, ordering và secret scope. Ghi candidate/running datastore, confirmed commit hoặc rollback mechanism thực tế; không giả định mọi hãng có transaction giống nhau.
Phân loại change: additive, modifying, destructive, cross-device và dependency-ordered. Một VLAN đơn lẻ khác thay route policy trên nhiều PE; test gate và rollback phải theo blast radius.
KPI và bằng chứng
#KPI gồm change success, state convergence, config drift, unintended diff, idempotent second-run changes, packet loss, rollback time và audit completeness. Pass/fail phải nêu “không có change ở lần chạy thứ hai” cùng ngoại lệ hợp lệ như timestamp/counter.
Lưu commit ID, inventory snapshot, plan/diff, approval, per-device result, post-check và traffic timeline. Che secret; log đầy đủ không đồng nghĩa ghi credential.
- Failure mode: device unreachable · Expected behavior: dừng/tiếp tục theo policy, không bỏ qua im lặng · Bằng chứng: per-device status
- Failure mode: validation reject · Expected behavior: không commit invalid config · Bằng chứng: RPC/error + unchanged state
- Failure mode: lỗi giữa batch · Expected behavior: giới hạn blast radius · Bằng chứng: transaction/rollback log
- Failure mode: chạy lại cùng intent · Expected behavior: zero unintended change · Bằng chứng: second-run diff
- Failure mode: manual drift · Expected behavior: detect, alert, reconcile theo phê duyệt · Bằng chứng: drift report
- Failure mode: rollback · Expected behavior: state và traffic phục hồi · Bằng chứng: config/state/packet timeline
Ma trận thay đổi và failure mode
#Mỗi change class cần positive, negative và recovery case. Với cross-device change, thử thứ tự đúng/sai, một node fail giữa chừng và rollback không đồng đều. Xác định rõ all-or-nothing hay eventual convergence; không dùng từ “transaction” nếu hệ thống chỉ lần lượt cấu hình từng thiết bị.
Drift test gồm sửa tay ngoài pipeline, thay đổi được phép khẩn cấp và dữ liệu operational thay đổi tự nhiên. Tool phải phân biệt config drift với counter/state động để tránh false positive.
Test plan pipeline
#- Chụp version, inventory, config và operational baseline.
- Chạy dry-run/plan, đối chiếu diff với intent.
- Apply change nhỏ; xác minh state và traffic.
- Chạy lại cùng intent, yêu cầu zero unintended change.
- Chèn invalid value để thử schema/device validation.
- Làm một DUT unreachable giữa batch, đo blast radius.
- Sửa tay có kiểm soát, kiểm tra drift detection.
- Rollback tự động/thủ công, đo thời gian và forwarding.
- Khôi phục lab, đối chiếu hash và artifact.
Checklist phát hành và rollback
#- Pin version tool/module/schema và device OS.
- Inventory và credential scope đã review.
- Plan/diff được owner phê duyệt.
- Pre-check capacity, redundancy và dependency.
- Canary trước khi chạy toàn bộ.
- Post-check gồm operational state và traffic.
- Có stop condition, rollback owner và out-of-band access.
- Second-run idempotency và drift test đạt.

Giới hạn của kết luận
#Kết quả phụ thuộc model/schema, OS, API, module và scale đã thử. NETCONF/YANG support không đảm bảo semantics giống giữa hãng. Lab không mô phỏng đầy đủ latency controller, rate limit hoặc hàng nghìn thiết bị.
Rollback config không luôn khôi phục session/state cũ; một số thay đổi cần reload hoặc reconvergence. Báo cáo phải ghi phần nào tự động, phần nào cần người quyết định và điều kiện phải dừng.
Khái niệm cần nhớ
#- Desired state: Trạng thái mục tiêu do intent/policy định nghĩa.
- Operational state: Trạng thái thiết bị thực sự đang vận hành.
- Idempotency: Chạy lại cùng đầu vào không tạo thay đổi ngoài dự kiến.
- Drift: Sai khác giữa trạng thái được quản lý và trạng thái thực tế.
- Confirmed commit: Commit cần được xác nhận trong thời hạn hoặc tự hoàn tác.
- Blast radius: Phạm vi hệ thống bị ảnh hưởng bởi thay đổi/lỗi.
Khái niệm cần nhớ
- DUT / SUT
- Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
- Steady state
- Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
- Pass / fail
- Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo4 nguồn +
Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.
NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.
