
Mục lục bài viết 10 phần
1. Câu hỏi kiểm thử cần trả lời 2. Topology và điểm quan sát 3. Biến số phải kiểm soát 4. KPI và bằng chứng đầu ra 5. Ma trận tình huống 6. Test plan theo từng pha 7. Retry amplification và stream recovery 8. Runbook thực hành 9. Giới hạn kết luận
Bài viết giúp bạn
- Câu hỏi kiểm thử cần trả lời
- Topology và điểm quan sát
- Biến số phải kiểm soát
Câu hỏi kiểm thử cần trả lời
#Test phải trả lời dịch vụ hoàn tất bao nhiêu RPC trong deadline, error code nào xuất hiện, mỗi logical call tạo bao nhiêu attempt và stream mất bao lâu để phục hồi sau lỗi. Tách application success khỏi transport success: HTTP/2 connection còn mở không có nghĩa message cuối đã được xử lý.
Mỗi method cần traffic profile riêng. Unary nên đo request/response size và concurrency; streaming cần message rate, lifetime, direction, flow control và reconnect behavior. Gắn request ID để đối chiếu client, proxy và server.
Topology và điểm quan sát
#Lab gồm client generator, DNS/service discovery, L4/L7 load balancer hoặc proxy, nhiều backend và dependency giả lập. Thu client metrics, proxy access log, server interceptor log, HTTP/2 connection/stream counter và telemetry tài nguyên.
Đồng bộ thời gian giữa các điểm. Với TLS/mTLS, ghi certificate chain, ALPN và session reuse. Khi kiểm tra client-side load balancing, quan sát subchannel và resolver update; khi dùng proxy, ghi thuật toán phân phối và connection pooling.

Biến số phải kiểm soát
#Khóa version client/server library, protocol buffer schema, compression, message size, concurrency, connection count, max concurrent streams và keepalive. Ghi deadline theo method, retryable status, max attempts, backoff, hedging và retry throttling.
Với backend, kiểm soát worker/thread pool, queue, autoscaling, database latency và health-check policy. Với mạng, thay RTT, jitter, packet loss, bandwidth và connection reset theo từng bước; không đổi nhiều biến trong baseline đầu tiên.
KPI và bằng chứng đầu ra
#KPI · Cách đo · Bằng chứng Logical success ratio · Call hoàn tất trong deadline · Client result + request ID Attempt amplification · Attempt/logical call · Client/proxy/server log Latency · p50/p95/p99 theo method · Raw histogram Stream continuity · Gap, duplicate, out-of-order · Message sequence Load distribution · RPC/stream theo backend · Backend counters Recovery time · Fault → success ổn định · Timeline sự kiện
Pass/fail phải theo method và phase tải. Báo cả status code như DEADLINE_EXCEEDED, UNAVAILABLE, RESOURCE_EXHAUSTED và CANCELLED; không gom tất cả thành “error”.
Ma trận tình huống
#Tình huống · Mục tiêu · Rủi ro Backend chậm · Deadline/cancel · Work tiếp tục sau client timeout Backend reset · Retry/failover · Retry storm Proxy restart · Stream recovery · Mất hoặc lặp message Resolver đổi endpoint · Rebalance · Stale subchannel Message lớn · Flow control · Head-of-line/queue Một backend quá tải · Load balancing · Hot spot Dependency timeout · Error propagation · Deadline không truyền xuống
Chạy cả failover và failback. Lặp nhiều lần, báo percentile và min/median/max; giữ request ID để phát hiện double execution với operation không idempotent.
Test plan theo từng pha
#Pha functional xác minh schema, metadata, auth, status và deadline propagation. Pha load tăng request rate, stream count và message rate theo bậc. Pha fault làm chậm backend, reset connection, restart proxy và thay resolver endpoint.
Pha saturation đẩy worker/queue/dependency tới ngưỡng; pha soak tìm memory leak, stream drift và reconnect accumulation. Mỗi run lưu client config, service config, proto hash, raw result, proxy/server log và resource telemetry.
Retry amplification và stream recovery
#Đo logical calls và physical attempts riêng. Khi lỗi tăng, retry có thể làm backend nhận tải lớn hơn offered load ban đầu. Thử retry có/không throttling, backoff có jitter và deadline còn lại; xác nhận server không xử lý hai lần operation thiếu idempotency.
Với stream, định nghĩa recovery là transport reconnect, application resume hay dữ liệu đủ từ checkpoint. Kiểm tra message sequence, ack/checkpoint và replay. Một stream mới mở nhanh nhưng mất khoảng dữ liệu vẫn là fail.

Runbook thực hành
#- [ ] Chốt method mix, message size, rate, concurrency và duration.
- [ ] Ghi deadline, retry, keepalive và load-balancing policy.
- [ ] Đồng bộ request ID và clock ở client–proxy–server.
- [ ] Chạy baseline unary và từng loại stream.
- [ ] Tăng tải từng bậc; theo dõi queue/resource headroom.
- [ ] Tiêm backend delay, reset, proxy restart và resolver change.
- [ ] Đối chiếu logical call với attempt và server execution.
- [ ] Kiểm tra message gap/duplicate/out-of-order sau recovery.
- [ ] Lưu config, proto hash, log và raw result.
Giới hạn kết luận
#Kết quả chỉ áp dụng cho library, schema, method mix, deadline, retry policy, backend và topology đã thử. Một latency trung bình thấp không loại trừ tail latency; success ratio cao có thể che retry amplification.
Không so hai phương án nếu khác connection pooling, compression, TLS reuse hoặc autoscaling state. Hành vi retry và load balancing phụ thuộc ngôn ngữ/library/version, cần xác nhận bằng tài liệu tương ứng.
Khái niệm cần nhớ
#- RPC: Lời gọi thủ tục từ xa.
- Deadline: Thời điểm cuối caller chấp nhận kết quả.
- Attempt: Một lần thử vật lý của logical RPC.
- Streaming RPC: RPC trao đổi chuỗi message thay vì một request/response.
- Backoff: Khoảng chờ tăng dần trước retry.
- Subchannel: Kết nối logic từ gRPC client tới endpoint.
- Retry amplification: Tải tăng do nhiều attempt cho một call.
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.
