Test luồng nghiệp vụ đa bước (multi-step workflow)
🎯 Mục tiêu học: hiểu vì sao test từng API riêng lẻ (Chương 2) là chưa đủ — nhiều lỗi chỉ xuất hiện khi 1 chuỗi API được gọi liên tiếp theo đúng luồng nghiệp vụ thật.
Ví dụ minh hoạ: luồng "Đặt hàng hoàn chỉnh"
Bước 1: POST /v1/cart/items → thêm sản phẩm vào giỏ hàng
Bước 2: POST /v1/orders → tạo đơn hàng từ giỏ (status: PENDING)
Bước 3: POST /v1/payments → thanh toán đơn hàng vừa tạo
Bước 4: GET /v1/orders/{orderId} → xác nhận status đã chuyển PENDING → PAID
Từng API ở trên có thể PASS khi test riêng lẻ (đúng chuẩn Chương 2), nhưng luồng vẫn có thể sai nếu — ví dụ — Bước 3 thất bại mà Bước 2 đã trừ tồn kho, để lại dữ liệu "rác" không nhất quán.
Checklist test cho luồng đa bước
Luồng chạy đúng (happy path đa bước)
Mã TC
Nội dung
Kỳ vọng
TC-FLOW-01
Chạy tuần tự đủ 4 bước với dữ liệu hợp lệ
Mỗi bước trả đúng kết quả; trạng thái cuối cùng của đơn hàng là PAID
Một bước giữa chừng thất bại
Mã TC
Nội dung
Kỳ vọng
TC-FLOW-02
Bước 3 (thanh toán) thất bại (vd thẻ bị từ chối)
Đơn hàng ở Bước 2 phải được rollback hoặc chuyển sang trạng thái rõ ràng (vd PAYMENT_FAILED), không treo mãi ở PENDING
TC-FLOW-03
Bước 3 thất bại, sau đó kiểm tra tồn kho
Tồn kho đã trừ ở Bước 2 phải được hoàn lại (compensating action), không bị mất hàng oan
Gọi sai thứ tự hoặc bỏ bước
Mã TC
Nội dung
Kỳ vọng
TC-FLOW-04
Gọi thẳng Bước 3 (thanh toán) khi chưa có đơn hàng (bỏ qua Bước 2)
Bị từ chối với lỗi rõ ràng, không tạo giao dịch thanh toán 'mồ côi'
Gọi lại 1 bước giữa luồng
Mã TC
Nội dung
Kỳ vọng
TC-FLOW-05
Gọi lại Bước 3 (thanh toán) 2 lần cho cùng 1 đơn hàng
Không bị trừ tiền 2 lần — liên quan trực tiếp tới tính không-idempotent của POST (Mục 2.3)
Timeout/hết hạn giữa các bước
Mã TC
Nội dung
Kỳ vọng
TC-FLOW-06
Giỏ hàng/đơn hàng hết hạn giữa lúc người dùng đang ở Bước 3
Bước 3 phải từ chối hợp lý (vd 409 Conflict), không cho thanh toán vào đơn đã hết hạn
📌 Ghi nhớ
Test đơn lẻ trả lời câu hỏi "API này đúng không". Test luồng đa bước trả lời câu hỏi khác hẳn: khi 1 bước ở giữa thất bại, hệ thống có giữ được dữ liệu nhất quán không. Đây là loại lỗi chỉ xuất hiện ở tầng integration, không bao giờ bắt được nếu chỉ test từng API tách rời.
📖 Thuật ngữ Anh–Việt (mục này)
Đề thi dùng thuật ngữ tiếng Anh — nhớ đúng cụm bên trái. Bấm 🔊 để nghe từng từ, hoặc "Đọc tất cả" để nghe lần lượt Anh → (vài giây) → Việt.
Thuật ngữ (EN)
Nghĩa & ghi nhớ nhanh
Multi-step workflow
Luồng nghiệp vụ nhiều bước — chuỗi API được gọi tuần tự để hoàn thành 1 tác vụ
Compensating action
Hành động bù trừ — hoàn tác một bước đã xử lý khi bước sau đó thất bại
Data inconsistency
Dữ liệu không nhất quán — trạng thái dữ liệu giữa các bước bị lệch nhau
📎 Nội dung do maiqai.com biên soạn — luồng nghiệp vụ và dữ liệu trong ví dụ chỉ mang tính minh hoạ, không thuộc hệ thống thật nào.