CYBERSOFT
Đăng nhập

Kiểm thử API tự động cơ bản cho người mới: request, response, status code (có code chạy được)

Chuyên công nghệNền tảngNgười mớiChuẩn SEO
🗓 1 tháng trước19 phút đọc·👁 1,236 lượt xem👤 72 người đọc

Bài cho người mới: kiểm thử API tự động qua app TMĐT ShopEasy bằng Playwright request. Status code thường gặp, cách viết GET/POST, kiểm body/schema, header & token xác thực, hai tình huống thật (status 200 nhưng dữ liệu sai, script bỏ qua status code khiến bug 500 lọt qua), nhiều mockup giao diện, FAQ và trắc nghiệm 5 câu. Chuẩn SEO, dẫn về khóa Tester CyberSoft.

1. Tóm tắt nhanh & màn hình bạn sẽ test

⭐ TL;DR — Kiểm thử API là gọi trực tiếp vào các endpoint của server (không qua giao diện) để kiểm tra status code, dữ liệu trả về (body) và các trường hợp xác thực (token) có đúng như tài liệu API mô tả hay không. Bài này dùng app TMĐT ShopEasy: API xem chi tiết sản phẩm (GET) và API tạo đơn hàng (POST). Bạn sẽ học các status code thường gặp, cách viết request bằng Playwright request, kiểm body/schema, header/token, và 2 tình huống thực tế khi bug lọt qua vì chỉ kiểm status code mà bỏ qua body. Kiểm thử API tự động thường nhanh hơn kiểm UI hàng chục lần vì không cần tải giao diện.

Chào bạn mới! Nếu bạn từng test bằng cách bấm nút trên giao diện, chờ trang tải, rồi mới nhìn kết quả — kiểm thử API sẽ là một trải nghiệm hoàn toàn khác: bạn gọi thẳng vào 'cửa sau' của hệ thống, nơi giao diện lấy dữ liệu để hiển thị. ShopEasy có hai API tiêu biểu ta sẽ dùng xuyên suốt bài: GET /products/{id} trả chi tiết một sản phẩm, và POST /orders tạo một đơn hàng mới. Cả hai đều trả về một mã trạng thái (status code) và một khối dữ liệu JSON (body). Học cách kiểm cả hai phần này chính là kỹ năng nền tảng đầu tiên của kiểm thử API tự động.

◭ Postman GET https://api.shopeasy.vn/products/1024 Send RESPONSE 200 ⏱ 86 ms⬇ 1.4 KB Body · JSON { "id": 1024, "name": "Ao thun ShopEasy", "price": 199000, "stock": 42}
Kết quả gọi GET /products/1024: status 200, thời gian phản hồi 86ms, body JSON trả về chi tiết sản phẩm
📖 API: cách để hai phần mềm 'nói chuyện' với nhau qua các endpoint (địa chỉ) cố định, gửi request và nhận về response, không cần thông qua giao diện người dùng.

CyberSoft Academy dạy kiểm thử API & automation bài bản từ zero tới đi làm — nếu muốn có lộ trình đầy đủ hơn bài viết này, có thể tham khảo khóa Software Testing chuyên nghiệp tại https://cybersoft.edu.vn/software-testing-chuyen-nghiep-tu-zero-toi-duoc-nhan-viec-manual-automation-testing/ .

2. Vấn đề: chỉ kiểm qua giao diện là chưa đủ

Nhiều bạn mới học tester chỉ quen kiểm tra qua giao diện: mở trình duyệt, bấm nút 'Xem sản phẩm', chờ trang tải, rồi nhìn xem giá tiền hiển thị có đúng không. Cách này chạy được, nhưng có hai vấn đề. Thứ nhất, nó CHẬM — mỗi lần kiểm tra phải tải cả trang, hình ảnh, CSS, JavaScript, dù bạn chỉ cần biết đúng một con số: giá sản phẩm. Thứ hai, nó GIÁN TIẾP — nếu giao diện có lỗi hiển thị (ví dụ CSS che mất giá), bạn không phân biệt được lỗi nằm ở API trả sai dữ liệu, hay chỉ do giao diện vẽ sai.

Kết quả chạy bộ test API ShopEasy bằng Playwright request Tổng request 48 GET + POST + xác thực Pass 45 93.7% đúng status + body Fail 3 Sai status code mong đợi Thời gian TB 92 ms nhanh hơn UI hàng chục lần
Kết quả một lần chạy bộ test API ShopEasy: 48 request, thời gian trung bình chỉ 92ms — nhanh hơn kiểm qua giao diện rất nhiều
💡 Kiểm thử API không thay thế hoàn toàn kiểm thử UI, mà bổ sung một tầng nhanh và chính xác hơn để bắt lỗi dữ liệu sớm. Nếu muốn học lộ trình automation đầy đủ (UI lẫn API), tham khảo khóa học tại CyberSoft: https://cybersoft.edu.vn/software-testing-chuyen-nghiep-tu-zero-toi-duoc-nhan-viec-manual-automation-testing/
📖 Endpoint: một địa chỉ (URL) cố định trên server, đại diện cho một tài nguyên hoặc hành động cụ thể, ví dụ /products/1024 hay /orders.

3. Request/response cơ bản: method, header, body

Mỗi lần gọi API, bạn gửi đi một REQUEST gồm 4 phần: phương thức (method — GET để lấy dữ liệu, POST để tạo mới, PUT/PATCH để sửa, DELETE để xoá), địa chỉ (URL/endpoint), phần đầu (header — thường chứa thông tin xác thực), và phần thân (body — dữ liệu gửi kèm, chỉ có ở POST/PUT/PATCH). Server xử lý xong sẽ trả về một RESPONSE, cũng gồm 3 phần chính: mã trạng thái (status code) cho biết yêu cầu có thành công không, header, và body chứa dữ liệu trả về (thường là JSON). Kiểm thử API tức là kiểm tra cả request bạn gửi lẫn response bạn nhận có đúng như mong đợi.

💡 GET dùng để LẤY dữ liệu, không nên làm thay đổi gì trên server. Nếu một API GET lại tạo ra đơn hàng mới mỗi lần gọi, đó là dấu hiệu thiết kế sai — hãy báo lại cho đội phát triển.
📖 JSON body: định dạng dữ liệu dạng cặp khoá-giá trị mà hầu hết API hiện đại dùng để gửi/nhận dữ liệu, ví dụ {"id": 1024, "price": 199000}.

4. Status code — mã trạng thái nói gì trước cả khi đọc body

Mã trạng thái (status code) là con số 3 chữ số nằm ngay đầu response, cho bạn biết kết quả tổng quát của request mà chưa cần đọc body. Đây thường là thứ đầu tiên một test API kiểm tra, vì nó rẻ, nhanh và ít gây nhầm lẫn. Nhóm 2xx là thành công, 4xx là lỗi do phía người gửi request (client), 5xx là lỗi phía server.

Bảng mã trạng thái HTTP thường gặp khi test API ShopEasy Status codeÝ nghĩaKhi nào gặp ở ShopEasy200 OKYêu cầu thành công, server trả đúng dữ liệuGET /products/1024 trả chi tiết sản phẩm201 CreatedTạo mới tài nguyên thành côngPOST /orders tạo đơn hàng mới400 Bad RequestDữ liệu gửi lên sai định dạng/thiếu trườngPOST /orders thiếu quantity hoặc sai kiểu dữ liệu401 UnauthorizedThiếu hoặc sai token xác thựcGọi POST /orders mà không có header Authorization403 ForbiddenCó token nhưng không đủ quyềnToken khách xem không được phép tạo đơn ưu đãi404 Not FoundKhông tìm thấy tài nguyênGET /products/999999 — sản phẩm không tồn tại500 Internal Server ErrorLỗi phía server, không phải lỗi của người gọiServer ShopEasy gặp sự cố khi xử lý đơn hàngNhóm 2xx = thành công, 4xx = lỗi phía client, 5xx = lỗi phía server.
Bảng các mã trạng thái HTTP thường gặp khi test API sản phẩm & đơn hàng ShopEasy
⚠️ ⚠️ Lỗi người mới hay gặp: Chỉ nhớ '200 là tốt, còn lại là xấu' rồi bỏ qua sự khác biệt giữa 400/401/403/404/500. Mỗi mã kể một câu chuyện khác nhau — 401 là 'chưa xác thực', 403 là 'đã xác thực nhưng không đủ quyền', hoàn toàn khác nhau về cách xử lý.

5. Viết request GET đầu tiên bằng Playwright (thực hành)

Playwright không chỉ điều khiển trình duyệt — nó có sẵn fixture 'request' để gọi thẳng API mà không cần mở trình duyệt, chạy nhanh hơn nhiều so với việc mô phỏng người dùng bấm chuột. Ta sẽ viết test đầu tiên: gọi GET /products/1024 và kiểm cả status code lẫn dữ liệu trả về.

🔒

Nội dung bị khoá

Bạn đang xem bản xem trước. Đăng nhập để mở khoá toàn bộ bài viết và tất cả tài liệu Tester/QA.

Đã xem 25% nội dung
  • Đọc trọn vẹn mọi bài viết
  • Lưu bài & ghi chú cá nhân
  • Theo dõi tiến độ đã đọc
  • Luyện phỏng vấn, ISTQB, Mock
Đăng nhập để đọc tiếp

Chưa có mã? Lấy mã qua Fanpage / Zalo CyberSoft.

0

💬 Bình luận (0)

Bạn có thể đọc mọi bình luận. Đăng nhập để bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!