Postman và kiểm thử API trong phỏng vấn QA: cần biết gì và luyện thế nào
Câu hỏi về Postman nhanh chóng cho thấy bạn chỉ biết thuật ngữ API hay thật sự biết gửi request và đọc response.
- Method và URL
- Auth và headers
- Body và params
- Status, schema và dữ liệu
Cần làm được gì trong Postman
Tạo request, chọn GET/POST, thêm query params, gửi JSON body, thêm Authorization header và đọc status code cùng response body.
Điều này quan trọng hơn automation nâng cao trong phỏng vấn junior.
Những kiểm tra được mong đợi
Mỗi API response có bốn lớp: status code, cấu trúc, giá trị và side effect.
- Status code đúng tình huống.
- Field bắt buộc tồn tại và đúng kiểu.
- Giá trị quan trọng khớp yêu cầu.
- Lỗi không lộ stack trace.
- Request lặp lại không tạo bản sao ngoài ý muốn.
Kiểm auth trong API
Gửi request với token đúng, không token, token sai và token của người dùng khác.
Nếu endpoint trả dữ liệu, hãy hỏi: đây là dữ liệu của ai?
Lỗi thường gặp khi dùng Postman ở phỏng vấn
Chỉ gửi happy path, thấy 200 là dừng, quên headers và không lưu lại request đã tái hiện lỗi.
Sau response đáng ngờ, ghi ngay method, path, body và response.
Bài luyện trước phỏng vấn
Kiểm một endpoint với dữ liệu đúng, thiếu field bắt buộc, sai kiểu, giá trị biên, không token và id của object người khác.
Nếu bạn giải thích được expected response và viết một bug report, bạn đã sẵn sàng cho phần lớn câu hỏi junior về Postman.
Assertion thật trong tab Tests
Mỗi test nên nói rõ promise nào đang được bảo vệ. Assertion riêng giúp định vị lỗi nhanh hơn một block lớn. Kiểm status và response type trước, rồi schema, business value, cuối cùng mới lưu id cho request sau.
Script dưới đây chưa chứng minh toàn bộ order đúng, nhưng tạo signal tối thiểu tốt: JSON đọc được, field bắt buộc đúng type, total dương và id có thể dùng tiếp.
pm.test("order created", () => pm.response.to.have.status(201));\n\nconst body = pm.response.json();\npm.test("contract and values", () => {\n pm.expect(body).to.have.property("id").that.is.a("number");\n pm.expect(body).to.have.property("status", "new");\n pm.expect(body.total).to.be.a("number").and.above(0);\n});\n\npm.collectionVariables.set("orderId", body.id);
Variable, chaining, Runner và CI
Dùng scope nhỏ nhất: local cho secret tạm, data variable cho một row Runner, environment cho host, collection cho scenario data. Không commit token thật trong collection export. Đánh dấu record test bằng prefix riêng và cleanup nếu được phép.
- Pre-request script tạo data unique hoặc refresh token.
- Tests chỉ lưu response id sau khi contract đã pass.
- Request sau dùng {{orderId}} và kiểm đúng object đó.
- Collection Runner lặp flow bằng CSV/JSON, gồm cả negative row.
- Postman CLI hoặc Newman chạy collection trong CI và trả exit code khác 0 khi fail.
Câu hỏi đào sâu trong phỏng vấn
Hãy giải thích vì sao chỉ kiểm 200 là yếu, secret nên lưu đâu, 401 khác 403 thế nào, điều gì xảy ra khi retry POST sau timeout và cách kiểm pagination, rate limit, object id của user khác.
Ứng viên mạnh nêu test oracle: OpenAPI, acceptance criterion, RFC, GET tiếp theo, database state hoặc business rule đã thống nhất. Không có oracle, script đẹp chỉ đóng băng behaviour hiện tại.
Câu hỏi thường gặp về Postman
Manual QA có cần học JavaScript cho phỏng vấn không?
Thường chỉ cần đọc JSON, khai báo const, truy cập field và viết pm.test với pm.expect. Giải thích assertion bảo vệ gì quan trọng hơn. Vị trí cụ thể có thể yêu cầu cao hơn.
Postman có thay thế kiểm database không?
Không. API cho external contract. Side effect quan trọng có thể cần GET tiếp theo, event, database record hoặc integration check.
Collection Runner khác Newman hoặc Postman CLI thế nào?
Runner chạy tương tác trong Postman. CLI chạy collection trong terminal và CI, nơi environment, reporter và exit code quan trọng. Assertion nên giữ nguyên.
Postman không phải mục tiêu. Mục tiêu là thấy server đã hứa gì và thật sự làm gì.