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

Test API loại GET — query param, phân trang, không side-effect

🎯 Mục tiêu học: test đúng trọng tâm của GET — tham số truy vấn, phân trang, và đảm bảo việc gọi API không làm thay đổi bất kỳ dữ liệu nào.

Ví dụ minh hoạ

GET https://api.example.com/v1/orders?customerId=CUS1001&page=1&limit=20

Response 200 OK:
{
  "data": [
    { "orderId": "ORD1001", "customerId": "CUS1001", "status": "PAID", "total": 350000 },
    { "orderId": "ORD1002", "customerId": "CUS1001", "status": "PENDING", "total": 120000 }
  ],
  "page": 1,
  "limit": 20,
  "totalItems": 2
}

Checklist test cho GET — nhóm theo 7 kịch bản (xem Mục 2.1)

1. Happy path

Mã TCNội dungKỳ vọng
TC-GET-01customerId, page, limit hợp lệTrả đúng dữ liệu, đúng totalItems

2. Dữ liệu bắt buộc

Mã TCNội dungKỳ vọng
TC-GET-02Gọi hoàn toàn không có customerId (nếu đây là tham số bắt buộc)Trả lỗi rõ ràng, hoặc mặc định lọc theo user đang đăng nhập — tuỳ thiết kế, cần xác nhận với dev

3. Định dạng & kiểu dữ liệu

Mã TCNội dungKỳ vọng
TC-GET-03limit âm hoặc bằng 0Trả lỗi validate rõ ràng, không mặc định trả toàn bộ dữ liệu
TC-GET-04page không phải số (vd page=abc)Trả lỗi 400, không crash 500

4. Quy tắc nghiệp vụ & dữ liệu tham chiếu

Mã TCNội dungKỳ vọng
TC-GET-05page vượt quá tổng số trang thực tếTrả data rỗng (mảng []), không lỗi 500
TC-GET-06Filter theo status không tồn tại trong hệ thống (vd status=HELLO)Trả data rỗng hoặc lỗi rõ ràng, không trả nhầm toàn bộ dữ liệu

5. Đặc thù GET (safe, idempotent)

Mã TCNội dungKỳ vọng
TC-GET-07Gọi liên tiếp 5 lần cùng tham sốDữ liệu trả về không đổi, không phát sinh side-effect nào ở DB

6. Bảo mật & phân quyền

Mã TCNội dungKỳ vọng
TC-GET-08Đổi customerId trên query param sang của khách hàng khácChỉ trả đơn hàng của đúng khách đang đăng nhập (theo token), không theo customerId tuỳ ý truyền vào

7. Response contract

Mã TCNội dungKỳ vọng
TC-GET-09Kiểm tra response ở mọi case trênLuôn có đủ data/page/limit/totalItems kể cả khi data rỗng; Content-Type luôn application/json

📌 Ghi nhớ

Test GET không chỉ dừng ở "dữ liệu có đúng không" — case dễ bỏ sót nhất trong 7 nhóm với GET thường là nhóm 6 (bảo mật qua query param) vì tester hay nghĩ "chỉ xem thôi không nguy hiểm".

📖 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
Query parameterTham số truy vấn — dữ liệu truyền qua URL sau dấu ?
PaginationPhân trang — chia nhỏ danh sách kết quả thành nhiều trang
IDORInsecure Direct Object Reference — lỗi truy cập được dữ liệu của người khác qua ID/tham số
FilterBộ lọc — điều kiện thu hẹp kết quả trả về

📎 Nội dung do maiqai.com biên soạn — endpoint và dữ liệu trong ví dụ chỉ mang tính minh hoạ, không thuộc hệ thống thật nào.