Đang tải...

Lửng Lọc Lõi

Đeo kính để soi Bug cho rõ, nhíu mày để nhắc Dev sửa cho kỹ. Với tôi, 'chạy được' thôi là chưa đủ! 🧐💻


0

API Testing với Postman: Từ gửi request đến kiểm tra dữ liệu cơ bản

Lửng Lọc Lõi
Lửng Lọc Lõi

17 giờ trước · 10 phút đọc

API là gì? Tại sao tester cần test API?

Mình nhớ lần đầu được giao task "test API login", cứ nghĩ phải biết code mới làm được. Ngồi ngó màn hình 20 phút không biết bắt đầu từ đâu. Nhưng thật ra, test API không cần viết một dòng code nào - chỉ cần hiểu nó hoạt động như thế nào và dùng đúng tool.

API (Application Programming Interface) là cầu nối giữa các phần mềm. Hình dung thế này: bạn vào app Grab đặt xe, app đó gửi yêu cầu đến máy chủ để tìm tài xế gần nhất - cái "yêu cầu" đó chính là API call.

Trong dự án web/app, frontend (giao diện người dùng) và backend (máy chủ, database) nói chuyện với nhau qua API. Khi dev backend viết xong một tính năng, họ sẽ expose một API endpoint để frontend gọi vào. Công việc của tester là kiểm tra endpoint đó trả về đúng dữ liệu, đúng status, xử lý đúng trường hợp lỗi không.

347276 API là cầu nối - frontend hỏi, backend trả lời qua endpoint

Tại sao cần test API thay vì chỉ test giao diện? Vì nhiều lỗi nằm ở tầng API mà giao diện không hiển thị ra ngoài. Ví dụ: giao diện hiển thị "Đặt hàng thành công" nhưng backend thực ra lưu sai giá, hoặc trả về dữ liệu thiếu trường. Test API giúp phát hiện lỗi sớm hơn, trước khi frontend kịp hiển thị.

Và một lý do thực tế: nhiều job tester hiện nay yêu cầu biết API testing cơ bản. Nắm được phần này, CV của bạn có thêm một điểm cộng đáng kể khi apply.

Bạn không cần biết code để bắt đầu. Chỉ cần hiểu 3 thứ: request (yêu cầu gửi đi), response (phản hồi nhận về), và status code (mã trạng thái). Mình sẽ giải thích từng thứ theo từng bước trong bài này.


Cài Postman và làm quen giao diện

Postman là tool miễn phí, phổ biến nhất để test API. Không cần tài khoản để bắt đầu dùng, nhưng đăng ký free account sẽ giúp bạn lưu collection trên cloud.

Cách cài:

Tải Postman tại trang chính thức của Postman, chọn phiên bản phù hợp với hệ điều hành (Windows/Mac/Linux), cài như phần mềm thông thường. Sau khi mở lên, bạn có thể bỏ qua phần đăng nhập và nhấn "Skip" để dùng luôn.

347277 Giao diện Postman sau khi cài - chú ý 4 khu vực chính

Giao diện Postman có 4 khu vực chính bạn cần biết:

  • Sidebar trái: danh sách Collections (nhóm API) và Environments (biến môi trường)
  • Request builder (phần trên, giữa): nơi bạn nhập URL, chọn method, thêm params/headers/body
  • Response panel (phần dưới): kết quả trả về sau khi gửi request
  • Tabs: mỗi tab là một request, có thể mở nhiều tab song song

Mở một request mới bằng nút dấu "+" hoặc "New" → "HTTP Request". Nhìn vào thanh URL bạn sẽ thấy dropdown chọn method (GET, POST, PUT, DELETE...) ở bên trái. Đây là điểm xuất phát của mọi API test.

Thấy lạ lẫm ban đầu là bình thường. Mình mất khoảng một buổi chiều để quen với giao diện. Sau 5-10 lần thao tác, mọi thứ sẽ tự nhiên hơn nhiều.


Gửi request GET, POST, PUT, DELETE - Làm quen với 4 method cơ bản

HTTP method là loại hành động bạn muốn thực hiện với API. Có 4 loại dùng nhiều nhất:

Method Dùng để Ví dụ
GET Lấy dữ liệu Lấy danh sách user
POST Tạo mới Tạo tài khoản mới
PUT Cập nhật toàn bộ Cập nhật thông tin user
DELETE Xóa Xóa một bài post

Mình sẽ demo với API mẫu miễn phí từ JSONPlaceholder - không cần server thật, không cần tài khoản, dùng thẳng được.

Thử GET request đầu tiên:

  1. Mở tab mới trong Postman
  2. Chọn method GET
  3. Nhập URL: https://jsonplaceholder.typicode.com/users
  4. Nhấn Send

347278 Kết quả trả về là danh sách 10 user - đây là response JSON

Nhìn xuống phần Response, bạn sẽ thấy một đống text kiểu [{"id": 1, "name": "Leanne Graham", ...}]. Đó là JSON - định dạng dữ liệu phổ biến nhất mà API trả về. Đừng lo nếu chưa quen đọc, mình giải thích ở phần tiếp theo.

Thử POST request - tạo dữ liệu mới:

  1. Chọn method POST
  2. URL: https://jsonplaceholder.typicode.com/posts
  3. Vào tab Body → chọn raw → chọn JSON
  4. Nhập body:
{
  "title": "Bài viết test",
  "body": "Đây là nội dung test của mình",
  "userId": 1
}
  1. Nhấn Send

Response trả về status 201 Created và dữ liệu bạn vừa gửi kèm id được gán. Đây là dấu hiệu POST thành công.

PUT và DELETE hoạt động tương tự - chỉ khác method và đôi khi cần truyền id vào URL (ví dụ /posts/1 để cập nhật hoặc xóa bài có id=1). Bạn sẽ gặp nhiều trong thực tế khi test tính năng chỉnh sửa và xóa.


Đọc response - Hiểu status code và dữ liệu trả về

Gửi request xong nhưng không biết đọc response thì cũng như không. Đây là phần nhiều bạn mới hay bỏ qua, nghĩ "thấy có data là được". Thực ra sai ở đây khá nhiều.

Status code là con số đầu tiên bạn cần nhìn vào. Nó nói lên kết quả của request:

  • 2xx (200, 201, 204): Thành công. 200 = OK, 201 = Tạo mới thành công, 204 = Thành công nhưng không có dữ liệu trả về
  • 4xx (400, 401, 403, 404): Lỗi từ phía client. 400 = Request sai format, 401 = Chưa đăng nhập, 403 = Không có quyền, 404 = Không tìm thấy
  • 5xx (500, 502, 503): Lỗi server. Đây là bug cần báo dev ngay

347279 Đọc status code trước, đọc body sau - đừng nhảy vào body ngay

Sau status code, nhìn vào Response Body - phần dữ liệu thực sự. JSON có cấu trúc dạng key-value:

{
  "id": 1,
  "name": "Nguyễn Văn A",
  "email": "[email protected]",
  "role": "user"
}

Khi test, bạn cần kiểm tra:

  1. Có đủ field không? - id, name, email, role đều có mặt chưa
  2. Kiểu dữ liệu đúng không? - id phải là số nguyên, không phải string
  3. Giá trị hợp lý không? - Email đúng định dạng, role đúng giá trị cho phép
  4. Response time bao lâu? - Postman hiển thị ở góc phải, trên 3 giây là cần note lại

Mình từng nhận xét một API "pass" chỉ vì status 200, mà không để ý field email trả về null. Bug đó lên production và gây lỗi tính năng gửi thông báo. Từ đó mình có thói quen đọc kỹ từng field trong response, không chỉ nhìn status.


Validate dữ liệu - Viết test script cơ bản trong Postman

Đây là bước giúp bạn thoát khỏi kiểu test thủ công "nhìn bằng mắt". Postman cho phép viết script để tự động kiểm tra response - và bạn không cần biết code để làm được việc này.

Vào tab Tests trong request (ngay bên cạnh tab Body, Headers). Postman có sẵn snippets - đoạn code mẫu ở cột phải, chỉ cần nhấn vào là tự chèn vào.

3 loại test hay dùng nhất:

// 1. Kiểm tra status code
pm.test("Status code là 200", function () {
    pm.response.to.have.status(200);
});

// 2. Kiểm tra response time dưới 2000ms
pm.test("Response time hợp lý", function () {
    pm.expect(pm.response.responseTime).to.be.below(2000);
});

// 3. Kiểm tra field trong response body
pm.test("Response có field 'email'", function () {
    const data = pm.response.json();
    pm.expect(data).to.have.property('email');
});

347280 Test script chạy xong - xanh là pass, đỏ là fail, rõ ràng không cần đoán

Sau khi nhấn Send, kéo xuống phần Test Results phía dưới Response. Mỗi test sẽ hiển thị PASS hoặc FAIL kèm tên test bạn đặt. Khi test fail, Postman còn chỉ ra tại sao - rất tiện để viết bug report.

Mình khuyên bạn bắt đầu với 3 test này cho mọi API:

  1. Status code đúng
  2. Response time dưới ngưỡng chấp nhận
  3. Ít nhất 1 field quan trọng có trong response

Không cần viết 20 test ngay. Viết 3 test chạy đúng còn hơn viết 10 test copy-paste không hiểu là làm gì. Dần dần bạn sẽ tự biết cần validate thêm những gì tùy theo tính năng đang test.


Tạo Collection và Environment - Tổ chức API test như pro

Khi test nhiều API trong một dự án, để từng request rời rạc rất khó quản lý. Collection là cách Postman cho bạn nhóm các request lại theo tính năng hoặc module.

Tạo Collection:

  1. Nhấn "New" → "Collection"
  2. Đặt tên theo dự án hoặc module (ví dụ: "API - Hệ thống quản lý user")
  3. Tạo folder con bên trong ("Auth", "User Management", "Orders"...)
  4. Kéo thả hoặc lưu request vào đúng folder

Sau khi có collection, bạn có thể chạy toàn bộ bằng Collection Runner - một lần click chạy hết tất cả request và xem kết quả pass/fail. Cực kỳ tiện cho regression testing.

Environment giúp bạn quản lý biến theo môi trường - dev, staging, production:

Environment: Development
  base_url = https://dev-api.example.com
  token = eyJhbGci...(token dev)

Environment: Staging  
  base_url = https://staging-api.example.com
  token = eyJhbGci...(token staging)

347281 Đổi environment = đổi toàn bộ URL và token - không cần sửa từng request

Thay vì hard-code URL vào từng request, bạn dùng biến: {{base_url}}/api/login. Khi cần test trên staging thay vì dev, chỉ cần đổi environment là xong - tất cả request tự cập nhật.

Tạo Environment: nhấn icon mắt (🌐) góc phải → "Add new environment" → nhập tên và các biến. Sau đó trong request, gõ {{tên_biến}} thay cho giá trị cụ thể.

Mình từng test trên production thay vì staging vì quên đổi URL. Xóa mất vài bản ghi dữ liệu thật. Từ đó mình dùng Environment nghiêm túc và đặt tên màu đỏ cho production để nhìn thấy là biết cẩn thận.