PineLab
API & SQL

Postman cho tester: hướng dẫn test API từ request đầu tiên đến bộ test tự động

Postman là công cụ đầu tiên gần như mọi tester chạm vào khi bắt đầu kiểm thử API. Phần lớn người dùng dừng ở mức bấm Send và nhìn kết quả — trong khi giá trị thật nằm ở biến môi trường, script kiểm tra tự động và khả năng chạy cả bộ test bằng một cú bấm.

10 phút đọc Cập nhật 08/09/2026 PineLab

Request đầu tiên và ba thứ phải kiểm tra

Một lời gọi API gồm bốn phần: method, URL, headers và body. Sau khi bấm Send, luôn kiểm tra đủ ba thứ ở phản hồi — rất nhiều người chỉ nhìn thứ nhất.

  1. Status code — có đúng mã mong đợi không (201 khi tạo mới, không phải 200).
  2. Response body — đủ trường chưa, kiểu dữ liệu đúng chưa, giá trị có đúng nghiệp vụ không.
  3. Response time và headers — chậm bất thường không, Content-Type có đúng không.

Biến và môi trường — thứ tách người mới khỏi người dùng thạo

Nếu bạn đang dán cứng URL và token vào từng request, mỗi lần đổi môi trường hoặc token hết hạn là một lần sửa tay hàng chục chỗ. Biến môi trường giải quyết việc đó.

Environment "Staging"
  base_url  = https://staging-api.example.com
  token     = (để trống, sẽ được script điền tự động)
  user_id   = 1024

Request:  GET {{base_url}}/v1/orders/{{user_id}}
Header:   Authorization: Bearer {{token}}

Tự động lấy token sau khi đăng nhập

Đặt đoạn script này ở tab Scripts (Post-response) của request đăng nhập. Từ đó mọi request khác dùng {{token}} sẽ luôn có token mới nhất.

const body = pm.response.json();
pm.environment.set('token', body.accessToken);

Viết script kiểm tra tự động

Đây là bước biến Postman từ công cụ gửi request thủ công thành bộ test chạy được. Script đặt ở tab Scripts (Post-response) của mỗi request.

// 1. Kiểm tra mã trạng thái
pm.test('Trả về 201 Created', () => {
  pm.response.to.have.status(201);
});

// 2. Kiểm tra thời gian phản hồi
pm.test('Phản hồi dưới 800ms', () => {
  pm.expect(pm.response.responseTime).to.be.below(800);
});

// 3. Kiểm tra cấu trúc và giá trị body
pm.test('Đơn hàng được tạo đúng dữ liệu', () => {
  const data = pm.response.json();
  pm.expect(data).to.have.property('id');
  pm.expect(data.status).to.eql('pending');
  pm.expect(data.quantity).to.eql(3);
  pm.expect(data.total).to.be.a('number');
});

// 4. Lưu id để request sau dùng lại
pm.environment.set('order_id', pm.response.json().id);

Chạy cả bộ test với Collection Runner và dữ liệu CSV

Collection Runner chạy toàn bộ request trong một Collection theo thứ tự. Kết hợp với file dữ liệu, bạn kiểm thử nhiều bộ đầu vào mà không phải sửa request — đây chính là kiểm thử dựa trên dữ liệu.

login-data.csv
email,password,expected_status,mo_ta
test@pinelab.vn,DungMatKhau1,200,Đăng nhập hợp lệ
test@pinelab.vn,SaiMatKhau1,401,Sai mật khẩu
khongton tai@pinelab.vn,BatKy123,401,Email không tồn tại
,DungMatKhau1,400,Thiếu email
test@pinelab.vn,,400,Thiếu mật khẩu
test@pinelab.vn,Ngan1,400,Mật khẩu dưới 8 ký tự
// Trong request, dùng dữ liệu từ CSV
// Body: { "email": "{{email}}", "password": "{{password}}" }

pm.test(`${pm.iterationData.get('mo_ta')} -> ${pm.iterationData.get('expected_status')}`, () => {
  pm.response.to.have.status(Number(pm.iterationData.get('expected_status')));
});

Lỗi người mới hay mắc

  • Dán cứng URL và token vào từng request thay vì dùng biến môi trường.
  • Chỉ kiểm tra status code, không kiểm tra nội dung phản hồi.
  • Các request phụ thuộc lẫn nhau theo thứ tự chạy mà không lưu id qua biến — chạy lại là hỏng.
  • Không dọn dữ liệu sau khi test, khiến lần chạy sau gặp lỗi trùng dữ liệu.
  • Quên test nhóm phân quyền: gọi API bằng token của người dùng khác, hoặc không gửi token.
  • Đẩy file Collection có chứa token thật lên kho mã nguồn công khai.
HỎI ĐÁP

Câu hỏi thường gặp

Postman là gì và dùng để làm gì?

Postman là công cụ gửi và kiểm thử API. Nó cho phép bạn tạo request với method, URL, header và body tuỳ ý, xem phản hồi trả về, lưu request thành bộ sưu tập tái sử dụng, viết script kiểm tra tự động và chạy cả bộ test với nhiều bộ dữ liệu khác nhau.

Dùng Postman có cần biết lập trình không?

Không cần cho việc gửi request và kiểm tra thủ công. Nếu muốn viết script kiểm tra tự động thì cần JavaScript ở mức cơ bản: biến, hàm, truy cập thuộc tính của object. Khoảng một tuần học là đủ để viết được các kiểm tra thường dùng.

Làm sao để token không hết hạn giữa chừng khi chạy bộ test?

Đặt request đăng nhập ở đầu Collection và thêm script post-response lưu token vào biến môi trường bằng pm.environment.set. Mọi request sau dùng biến đó, nên mỗi lần chạy bộ test đều lấy token mới thay vì dùng token dán cứng đã hết hạn.

Postman và Newman khác nhau thế nào?

Postman là ứng dụng có giao diện, dùng để xây dựng và chạy thủ công. Newman là công cụ dòng lệnh chạy chính những Collection đó mà không cần giao diện, nên nó là cách để đưa bộ test API vào pipeline CI và chạy tự động mỗi lần có thay đổi mã nguồn.