1. Vì sao chuyển test API thủ công sang tự động
Trong một ngân hàng số, mỗi ngày đội QA phải kiểm thử hàng trăm endpoint: mở tài khoản, chuyển khoản, tra cứu số dư, khóa thẻ. Ở giai đoạn đầu, kiểm thử viên thường mở Postman, bấm Send từng request, rồi mắt thường so sánh phản hồi với đặc tả. Cách làm này rất chậm, dễ bỏ sót và không lặp lại được: khi lập trình viên sửa một API lúc nửa đêm, không ai chạy lại toàn bộ. Bài viết này đi từ thao tác thủ công đó tới một quy trình chạy collection tự động, có cổng kiểm định trong CI, để mỗi lần đẩy code là toàn bộ API được gác cửa.
- Lặp lại được: cùng một collection chạy giống nhau trên máy dev và trên CI
- Nhanh: hàng trăm assertion chạy trong vài giây thay vì vài giờ bấm tay
- Có bằng chứng: report HTML/JUnit lưu lại kết quả cho audit ngân hàng
- Gác cửa: pipeline fail khi có assertion sai, chặn code lỗi vào nhánh chính
2. Mô hình Collection, Folder và Request
Đơn vị tổ chức trong Postman là collection: một cây chứa các folder và request. Với hệ core-banking, ta thường tạo một collection cho từng miền nghiệp vụ, ví dụ Accounts, Transfers, Cards. Bên trong mỗi folder là các request cụ thể như POST /accounts, GET /accounts/:id. Cấu trúc rõ ràng giúp Newman chạy đúng thứ tự và giúp người mới đọc hiểu luồng nghiệp vụ. Một collection được lưu dưới dạng file JSON theo chuẩn Collection Format v2.1, nhờ đó có thể đưa vào Git và review như mã nguồn.
- Collection: đơn vị chạy của Newman, tương ứng một bộ kiểm thử
- Folder: nhóm logic (ví dụ luồng đăng nhập, luồng chuyển khoản)
- Request: một lời gọi HTTP với method, URL, header, body
- Collection JSON: đưa vào Git, review như code, so sánh diff qua các bản
# Cấu trúc thư mục kiểm thử trong repo ngân hàng
banking-api-tests/
├── collections/
│ ├── accounts.postman_collection.json
│ └── transfers.postman_collection.json
├── environments/
│ ├── dev.postman_environment.json
│ └── staging.postman_environment.json
├── data/
│ └── transfer-cases.csv
└── package.json # scripts newman + reporters3. Test Script và pm.* trong Postman Sandbox
Mỗi request có hai ô script chạy trong Postman Sandbox (một môi trường JavaScript): Pre-request Script chạy trước khi gửi, và Tests chạy sau khi có phản hồi. Đối tượng trung tâm là pm. Ta dùng pm.test để khai báo một ca kiểm thử có tên, pm.response để đọc phản hồi, và pm.expect (thư viện Chai) để viết khẳng định. Đây chính là cách biến việc "nhìn bằng mắt" thành assertion tự động, chạy được cả trên Newman.
// Tab "Tests" cho request GET /accounts/:id
pm.test("Status code là 200", function () {
pm.response.to.have.status(200);
});
pm.test("Thời gian phản hồi dưới 800ms", function () {
pm.expect(pm.response.responseTime).to.be.below(800);
});
const body = pm.response.json();
pm.test("Trả về đúng accountId đã yêu cầu", function () {
pm.expect(body.accountId).to.eql(pm.collectionVariables.get("accountId"));
pm.expect(body).to.have.property("balance");
pm.expect(body.currency).to.be.oneOf(["VND", "USD"]);
});
💬 Bình luận (0)
Chưa có bình luận nào. Hãy là người đầu tiên!