Mmaiqai.com
🧭 API Testing · Chương 2 · Mục 2.1

Ngữ nghĩa HTTP Method: Idempotent, Safe, Side-effect

🎯 Mục tiêu học: hiểu 3 khái niệm nền quyết định cách test một API — Safe (an toàn), Idempotent (bất biến khi lặp) và Side-effect (tác dụng phụ ngoài ý muốn) — trước khi liệt kê bất kỳ test case cụ thể nào.

💡 Ý cốt lõi: HTTP method không đơn thuần là "cách gọi API" — mỗi loại mang một cam kết riêng theo chuẩn REST. Test đúng theo cam kết này giúp phát hiện đúng loại lỗi thường gặp trong thực tế, thay vì chỉ dừng ở "API có chạy không".

5 loại HTTP Method và cam kết ngữ nghĩa

MethodSafe? (không đổi dữ liệu)Idempotent? (gọi nhiều lần = 1 lần)Thường có body?
GETKhông
POSTKhôngKhông
PUTKhông
PATCHKhôngKhông (theo chuẩn)
DELETEKhôngTuỳ hệ thống

Khung 7 nhóm kịch bản — dùng để tự suy ra checklist đầy đủ cho bất kỳ API nào

Thay vì nhớ từng ví dụ test case rời rạc, hãy nhớ 7 nhóm kịch bản dưới đây — với bất kỳ API nào (không riêng ví dụ trong bài), lần lượt đi qua từng nhóm sẽ giúp checklist bao phủ đầy đủ thay vì bỏ sót theo cảm tính. 4 mục tiếp theo (2.2–2.5) đều tổ chức checklist theo đúng 7 nhóm này.

#Nhóm kịch bảnCâu hỏi cần tự đặt ra
1Happy pathVới dữ liệu hợp lệ, đúng luồng, kết quả có đúng như mong đợi không?
2Dữ liệu bắt buộcField/tham số bắt buộc mà thiếu, rỗng, hoặc null thì sao?
3Định dạng & kiểu dữ liệuSai kiểu (số thay chuỗi...), sai định dạng, vượt biên độ dài thì sao?
4Quy tắc nghiệp vụ & dữ liệu tham chiếuTham chiếu tới dữ liệu không tồn tại, hoặc vi phạm ràng buộc nghiệp vụ thì sao?
5Đặc thù ngữ nghĩa của method đóCó đúng safe/idempotent như cam kết ở bảng trên không? (xem riêng từng method)
6Bảo mật & phân quyềnCó truy cập/thao tác được dữ liệu của người khác không? Có injection được không?
7Response contractStatus code, header, cấu trúc body trả về có đúng chuẩn đã thống nhất không?

📌 Ghi nhớ

Safe = gọi không làm thay đổi dữ liệu (chỉ GET/HEAD)

Idempotent = gọi nhiều lần cho cùng 1 kết quả cuối (GET, PUT, DELETE — không gồm POST)

Với tester: trước khi test bất kỳ API nào, xác định đúng method và đối chiếu hành vi thật của hệ thống với bảng trên — nếu lệch, đó tự thân đã là một phát hiện đáng báo lại cho dev.

📖 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
Safe methodPhương thức an toàn — không gây thay đổi dữ liệu phía server
IdempotentBất biến khi lặp — gọi nhiều lần cho cùng 1 kết quả cuối
Side-effectTác dụng phụ — thay đổi ngoài ý muốn xảy ra khi gọi API
ResourceTài nguyên — đối tượng dữ liệu mà API thao tác lên (vd 1 đơn hàng)
RESTRepresentational State Transfer — kiểu kiến trúc API phổ biến dựa trên HTTP method

📎 Nội dung do maiqai.com biên soạn dựa trên nguyên tắc REST phổ biến (tham khảo tinh thần RFC 7231/RFC 9110) và kinh nghiệm test API thực tế — không phải chương trình chứng chỉ chính thức.