Mmaiqai.com
🔗 API Testing · Chương 3 · Mục 3.1

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ã TCNội dungKỳ vọng
TC-FLOW-01Chạ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ã TCNội dungKỳ vọng
TC-FLOW-02Bướ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-03Bước 3 thất bại, sau đó kiểm tra tồn khoTồ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ã TCNội dungKỳ vọng
TC-FLOW-04Gọ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ã TCNội dungKỳ vọng
TC-FLOW-05Gọi lại Bước 3 (thanh toán) 2 lần cho cùng 1 đơn hàngKhô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ã TCNội dungKỳ vọng
TC-FLOW-06Giỏ hàng/đơn hàng hết hạn giữa lúc người dùng đang ở Bước 3Bướ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 workflowLuồ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 actionHành động bù trừ — hoàn tác một bước đã xử lý khi bước sau đó thất bại
Data inconsistencyDữ 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.