
Mục lục bài viết 10 phần
Automation chỉ an toàn khi thay đổi có thể validate, áp dụng, xác minh và quay lại trạng thái đã biết. Một RPC/HTTP response thành công không chứng minh running configuration, operational state và dịch vụ cùng đúng. Bài kiểm thử cần tạo chuỗi bằng chứng từ intent/YANG tới traffic end-to-end.
Bài viết giúp bạn
- Câu hỏi transaction cần trả lời
- Topology và datastore cần quan sát
- Biến số phải kiểm soát
Câu hỏi transaction cần trả lời
#RFC 6241 định nghĩa NETCONF với RPC, datastore và capability; RFC 8040 định nghĩa RESTCONF trên dữ liệu YANG. Thiết bị có thể hỗ trợ writable-running, candidate, confirmed-commit, rollback-on-error hoặc validate theo tổ hợp khác nhau. Bước đầu tiên là đọc capability/runtime schema, không suy từ tên giao thức.
Bài đo phải trả lời: request có đúng model/version; thay đổi có atomic trong phạm vi đã định; lỗi giữa chuỗi để lại state nào; confirmed commit có tự rollback khi mất xác nhận; và traffic/service có trở về baseline sau rollback hay không.
Phân biệt giao thức: candidate, lock, validate, confirmed-commit và rollback-on-error là các capability/operation NETCONF theo RFC 6241, không phải tập thao tác mặc định của RESTCONF. RESTCONF cơ sở theo RFC 8040 không cung cấp thao tác lock hoặc chuỗi candidate–commit do client điều khiển; cần kiểm tra semantics của từng HTTP edit và tương tác với NETCONF trên cùng thiết bị.
Topology và datastore cần quan sát
#Topology gồm automation client/controller, bastion/AAA, một hoặc nhiều DUT, out-of-band management, traffic generator, telemetry/syslog và kho artifact. Dùng thiết bị dự phòng hoặc lab tách biệt cho failure injection. Với multi-device change, xác định rõ không có transaction phân tán mặc định giữa các thiết bị.
Quan sát request/reply, capability, YANG library/schema, candidate/running/startup nếu tồn tại, operational state theo NMDA, config diff, audit log và traffic. Gắn change ID vào request/comment hoặc artifact để nối automation log với device log và test result.

Biến số phải kiểm soát
#Ghi model/NOS/version, YANG module revision, capability, transport, authN/authZ, datastore, default-operation, error-option, test-option, timeout và retry. Với RESTCONF, khóa method, content type, ETag/conditional request nếu dùng; với NETCONF, khóa lock/unlock, edit-config và commit semantics.
Đóng băng intended config, pre/post diff, traffic profile và success criteria. Tách semantic idempotency khỏi HTTP method: gửi lại cùng payload có thể tạo state khác nếu server/controller dùng generated identifier hoặc merge policy. Không retry mù một commit có trạng thái chưa rõ.
- Capability — Cần ghi: candidate/confirmed/validate/rollback; Rủi ro: Gọi operation không hỗ trợ.
- Schema — Cần ghi: module + revision + deviation; Rủi ro: Payload hợp lệ nhưng sai model.
- Datastore — Cần ghi: intended/running/operational/startup; Rủi ro: Đọc nhầm nguồn sự thật.
- Transaction — Cần ghi: lock, timeout, error-option; Rủi ro: Partial change.
- Concurrency — Cần ghi: session, ETag/version, owner; Rủi ro: Lost update.
- Retry — Cần ghi: idempotency key/decision; Rủi ro: Lặp thay đổi ngoài ý muốn.
KPI và chuỗi bằng chứng
#KPI gồm API/RPC success rate, validation latency, commit latency, service restoration, rollback success/time, config drift, partial-apply count và concurrent-conflict detection. Bổ sung session failure, lock wait, stale candidate, telemetry convergence và traffic loss/latency trong change window.
Bằng chứng cho mỗi run: schema/capability snapshot, request đã lọc secret, reply/error, pre/post config, operational diff, audit identity, traffic sequence và rollback record. Pass chỉ khi desired state, operational state và service đều đạt; <ok> hoặc HTTP 2xx chỉ là một bằng chứng trung gian.
Ma trận thao tác và lỗi
#- Valid change — Thao tác: Validate → commit; Kỳ vọng: Config và service đúng; Nguy cơ: 2xx nhưng state chưa hội tụ.
- Invalid leaf — Thao tác: Sai type/range; Kỳ vọng: Reject, không partial; Nguy cơ: Model/deviation khác.
- Cross-field error — Thao tác: Giá trị riêng hợp lệ, tổ hợp sai; Kỳ vọng: Validation/policy chặn; Nguy cơ: Schema không biểu diễn đủ.
- Confirmed commit — Thao tác: Không gửi confirm; Kỳ vọng: Tự rollback theo timer; Nguy cơ: Mất management.
- Concurrent edit — Thao tác: Hai session cùng object; Kỳ vọng: Conflict/lock rõ; Nguy cơ: Lost update.
- Transport loss — Thao tác: Ngắt sau request; Kỳ vọng: Xác định state trước retry; Nguy cơ: Duplicate/unknown outcome.
- Device group — Thao tác: Một node fail; Kỳ vọng: Orchestrator bù/rollback; Nguy cơ: Fleet không nhất quán.
Test plan theo từng pha
#Pha A inventory capability/YANG revision và baseline. Pha B đọc/ghi một thay đổi không ảnh hưởng dịch vụ, kiểm tra idempotency. Pha C thử invalid input, cross-field policy và authorization. Pha D thử candidate/validate/commit, confirmed commit hết timer và rollback-on-error theo capability thực tế.
Pha E tạo concurrent edit, lock contention, session timeout và transport loss tại nhiều mốc. Pha F áp thay đổi có ảnh hưởng traffic trong lab; đo packet loss và service restoration. Pha G multi-device partial failure và compensating action. Pha H chạy reconciliation, xác nhận không còn stale lock/candidate/drift.
Chỉ chạy nhánh confirmed commit/timeout qua NETCONF khi DUT quảng bá capability tương ứng. Với RESTCONF, thử conditional request nếu hỗ trợ, phản hồi khi datastore bị NETCONF lock và trạng thái sau từng edit; không giả định nhiều HTTP request tạo thành một transaction atomic.

Concurrency, partial failure và recovery
#Hai controller hoặc người vận hành có thể sửa cùng object. Thử lock, optimistic concurrency/version check và policy ownership. Pass khi xung đột được phát hiện hoặc merge có quy tắc đã định; “last writer wins” im lặng có thể phá intent. Audit log phải chỉ ra principal và change ID.
Với fleet, transaction thiết bị A không tự atomic với B. Orchestrator cần pre-check, order, checkpoint, abort threshold và compensating rollback. Recovery phải xác nhận cả control plane và traffic; rollback config nhưng route/FIB/session chưa hồi phục vẫn chưa hoàn tất.
Checklist nghiệm thu
#- Ghi model, NOS/version, YANG module/revision và deviation.
- Lưu capability matrix theo từng thiết bị.
- Xác định datastore và nguồn sự thật cho operational state.
- Lọc secret khỏi request, log và artifact.
- Thử valid, invalid, cross-field và unauthorized change.
- Thử lock, concurrent edit và transport loss.
- Kiểm tra confirmed commit/rollback đúng capability.
- Đo config convergence cùng packet loss/service restoration.
- Thử partial failure nhiều thiết bị và compensating action.
- Kết thúc bằng reconciliation, drift scan và cleanup lock.
Giới hạn của kết luận
#RESTCONF và NETCONF khác transport/encoding/operation nhưng cùng phụ thuộc YANG và implementation. Một API pass trên một NOS không chứng minh behavior trên NOS khác, ngay cả khi module có cùng tên. Vendor augmentation/deviation và feature flag có thể thay semantics.
Không gọi workflow là atomic nếu chỉ một thiết bị atomic còn fleet có thể partial. Automation test không thay change governance, access control, backup và out-of-band recovery. Mọi số liệu commit/rollback phải gắn scale, payload, session và load.
Khái niệm cần nhớ
#- YANG: Ngôn ngữ mô hình hóa dữ liệu cấu hình/trạng thái.
- Datastore: Kho logic như candidate, running hoặc startup.
- Confirmed commit: Commit cần xác nhận, nếu không sẽ rollback theo timer.
- Rollback-on-error: Capability quay lại khi edit gặp lỗi theo semantics hỗ trợ.
- NMDA: Kiến trúc datastore phân biệt intended và operational state.
- Idempotency: Lặp cùng intent không tạo kết quả ngoài ý muốn.
- Drift: Sai khác giữa intent và state thực tế.
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.
