🔌 API Testing là gì?
Test thẳng vào phần lõi, bỏ qua giao diện.
1
Hiểu nó là gì
API Testing gửi request trực tiếp tới backend rồi kiểm tra response, nên chạy nhanh và ổn định hơn hẳn so với test qua giao diện.
Nói theo đời thường:
Thay vì đi vòng ra quầy gọi món, mình hỏi thẳng nhà bếp xem có làm đúng đơn không: nhanh hơn và ít khâu hỏng vặt.
Thay vì đi vòng ra quầy gọi món, mình hỏi thẳng nhà bếp xem có làm đúng đơn không: nhanh hơn và ít khâu hỏng vặt.
⚠ Chỗ ẩn dụ này hỏng
Hỏi thẳng nhà bếp thì nhanh thật, nhưng bếp làm đúng không có nghĩa khách nhận đúng.
API trả về dữ liệu chuẩn mà giao diện hiển thị sai định dạng ngày, hoặc nút bị che mất — API test không bắt được. Nó rẻ và ổn định, nên nên chiếm phần lớn bộ test; nhưng vẫn cần vài ca E2E để chắc phần khách nhìn thấy cũng đúng.
2
Code trông thế nào
const res = await request.post('/api/dang-nhap', { data: { email:'na@vd.com', matKhau:'sai' } }) expect(res.status()).toBe(401) expect(await res.json()).toMatchObject({ loi: 'Sai thông tin đăng nhập' })
Chạy trong vài chục mili giây, không mở trình duyệt. Rẻ hơn E2E khoảng 100 lần.
3
Khi nào bạn dùng nó
✓ Dùng khi
- Kiểm tra logic nghiệp vụ và các trường hợp lỗi
- Cần test nhanh và ổn định
- Giao diện chưa làm xong nhưng API đã có
✗ Đừng dùng khi
- Cần kiểm tra thứ người dùng nhìn thấy
- Vấn đề nằm ở bố cục hoặc thao tác trên giao diện
Chưa cần biết: kiểm tra schema, contract testing, test chuỗi nhiều bước có trạng thái.
Để dành tới Mốc 3 — Tự sửa được khi nó hỏng: Test đỏ trên CI mà xanh ở máy bạn, và bạn biết bắt đầu tìm từ đâu.
Dấu hiệu bạn đã cần học nó: Khi backend đổi kiểu một trường và test của bạn vẫn xanh vì chỉ kiểm tra status 200.
4
Đi đâu tiếp
- APIHiểu API là gì trước đã.
- Integration TestAPI test là dạng phổ biến nhất của nó.
- MockMặt còn lại: giả lập API thay vì gọi thật.
🧪 Thử 2 phút, không cần cài gì
F12 → Console, trên trang bất kỳ:await fetch('/api/khong-ton-tai').then(r => r.status)
Bạn vừa gọi API và kiểm tra mã trạng thái — đúng việc mà API test làm.