1. Scripting nâng cao: khi request tĩnh là chưa đủ
Một nền tảng SaaS đa người thuê (multi-tenant) có API rất động: token hết hạn, mỗi tenant có gói dịch vụ khác nhau, dữ liệu tạo ở bước này lại cần cho bước sau. Nếu chỉ dùng request tĩnh với giá trị cố định, bộ kiểm thử sẽ giòn và không phản ánh hành vi thật. Bài viết này đi sâu vào khả năng lập trình của Postman qua đối tượng pm: tính toán trong pre-request, khẳng định linh hoạt trong test, nối các bước bằng biến, kiểm định lược đồ, và đặc biệt là kiểm thử dựa trên dữ liệu với nhiều ca gồm cả ca lỗi.
- Pre-request Script: sinh dữ liệu, ký request, chuẩn bị biến trước khi gửi
- Test Script: khẳng định phản hồi, trích giá trị, quyết định luồng
- pm.variables/environment/collection: chia sẻ trạng thái giữa các bước
- pm.iterationData: đọc dữ liệu từng dòng khi chạy data-driven
2. Đối tượng pm: bản đồ các API hay dùng
Trước khi viết logic phức tạp, cần nắm chắc các nhánh chính của đối tượng pm. Đây là API do Postman cung cấp, không nên tự bịa tên hàm. Nắm đúng những nhánh này giúp bạn viết script gọn và chạy được cả trên Newman.
// Các nhánh pm hay dùng (tham chiếu nhanh)
pm.request // request sắp gửi (đọc/sửa header, url, body)
pm.response.code // mã trạng thái, ví dụ 200
pm.response.json() // parse body JSON
pm.response.headers.get() // đọc header phản hồi
pm.response.responseTime // thời gian phản hồi (ms)
pm.test(name, fn) // khai báo một test case có tên
pm.expect(value) // chai expect
pm.environment.set/get() // biến environment
pm.collectionVariables.set/get()
pm.variables.get() // đọc biến theo thứ tự phạm vi hiện hành
pm.iterationData.get() // dữ liệu của iteration hiện tại
pm.sendRequest() // gửi request phụ trong script (ví dụ lấy token)3. Pre-request Script: sinh dữ liệu và ký request
Pre-request Script chạy trước khi gửi, là nơi lý tưởng để chuẩn bị dữ liệu động. Với SaaS, ta thường cần một email duy nhất cho mỗi lần tạo tài khoản, một dấu thời gian, hoặc một chữ ký HMAC cho webhook. Ta tính giá trị rồi lưu vào biến để body của request tham chiếu bằng {{...}}. Nhờ vậy mỗi lần chạy dùng dữ liệu mới, tránh lỗi trùng và phản ánh đúng cách hệ thống thật hoạt động.
// Pre-request Script cho POST /signup
const unique = Date.now();
pm.collectionVariables.set("signupEmail", `qa+${unique}@tenant.io`);
pm.collectionVariables.set("requestedAt", new Date().toISOString());
// Ký HMAC cho webhook bằng CryptoJS có sẵn trong sandbox
const secret = pm.environment.get("webhookSecret");
const payload = pm.collectionVariables.get("signupEmail");
const sig = CryptoJS.HmacSHA256(payload, secret).toString();
pm.request.headers.upsert({ key: "X-Signature", value: sig });4. Luồng xác thực: token, refresh và pm.sendRequest
API SaaS thường dùng OAuth2 với access token ngắn hạn. Thay vì dán token bằng tay, ta để pre-request tự lấy token nếu chưa có hoặc đã hết hạn. pm.sendRequest cho phép gửi một request phụ ngay trong script rồi xử lý phản hồi qua callback. Ta lưu access token và thời điểm hết hạn vào biến, và chỉ gọi lại khi cần. Cách này giữ collection tự chủ, chạy được trên Newman mà không cần thao tác tay.
💬 Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!