HTTP Status Code Cho Tester: Bảng Tra 2xx–5xx
Khi test API, một trong những thứ Tester cần kiểm tra đầu tiên là HTTP Status Code.
Status Code giúp chúng ta biết request đã được xử lý như thế nào: thành công, lỗi từ phía client hay lỗi từ phía server.
Dưới đây là các HTTP Status Code Tester nên nhớ.
1. Nhóm 2xx – Success
Request được server xử lý thành công.
200 OK
Request thành công.
Tester thường gặp khi:
GET data thành công
UPDATE data thành công
API trả về response bình thường
Ví dụ:
GET /api/users/123
→ 200 OK
201 Created
Tạo resource mới thành công.
Thường dùng với:
POST
Create User
Create Booking
Create Event
Ví dụ:
POST /api/users
→ 201 Created
204 No Content
Request thành công nhưng server không trả về response body.
Thường gặp khi:
Delete thành công
Update thành công nhưng không cần trả data
DELETE /api/users/123
→ 204 No Content
👉 Tester cần kiểm tra thêm: status đúng nhưng response body không được trả về là behavior expected hay không.
2. Nhóm 3xx – Redirection
Request cần được chuyển hướng hoặc sử dụng cached data.
301 Moved Permanently
Resource đã được chuyển sang URL khác vĩnh viễn.
302 Found
Resource tạm thời được chuyển sang URL khác.
304 Not Modified
Resource chưa thay đổi nên client có thể sử dụng cached version.
👉 Với API Tester, nhóm 3xx ít gặp hơn 2xx/4xx/5xx nhưng vẫn nên biết để tránh nhầm 3xx với lỗi.
3. Nhóm 4xx – Client Error
Đây là nhóm Tester gặp rất thường xuyên.
Ý nghĩa chung: Request có vấn đề từ phía client/request gửi lên.
400 Bad Request
Request không hợp lệ.
Ví dụ:
{
"email": "abc",
"age": "invalid"
}
Có thể xảy ra khi:
Missing required field
Sai data type
Invalid format
Invalid request parameters
👉 Khi test API, đây là status code rất quan trọng để test validation.
401 Unauthorized
Client chưa được xác thực hoặc authentication không hợp lệ.
Ví dụ:
Không gửi token
Token expired
Token invalid
GET /api/profile
Authorization: invalid-token
→ 401 Unauthorized
👉 Nhớ đơn giản:
401 = Tôi chưa xác thực được bạn.
403 Forbidden
Server hiểu request và xác thực user nhưng không cho phép thực hiện action.
Ví dụ:
User có role:
Member
nhưng cố gắng gọi API dành cho:
Admin
→ 403 Forbidden
👉 Nhớ:
401 = Chưa xác thực
403 = Đã xác thực nhưng không có quyền
404 Not Found
Resource không tồn tại.
Ví dụ:
GET /api/users/999999
→ 404 Not Found
Có thể xảy ra khi:
ID không tồn tại
URL sai
Resource đã bị xóa
405 Method Not Allowed
HTTP method không được API hỗ trợ.
Ví dụ API chỉ cho:
POST /api/users
nhưng Tester gửi:
GET /api/users
→ 405 Method Not Allowed
👉 Đây là case Tester nên đưa vào API negative testing.
409 Conflict
Request gây conflict với trạng thái hiện tại của resource.
Ví dụ:
User đã tồn tại với email:
test@gmail.com
Tester tiếp tục tạo user với cùng email.
→ 409 Conflict
422 Unprocessable Content
Request có format hợp lệ nhưng dữ liệu không hợp lệ về mặt nghiệp vụ/validation.
Ví dụ:
{
"age": -10
}
JSON hợp lệ nhưng giá trị không hợp lệ.
👉 Một số framework/API sử dụng 400 thay cho 422, vì vậy Tester nên kiểm tra theo API specification của project.
429 Too Many Requests
Client gửi quá nhiều request trong một khoảng thời gian.
Ví dụ:
100 requests / 1 minute
nhưng API chỉ cho phép:
10 requests / 1 minute
→ 429 Too Many Requests
👉 Rất quan trọng khi test:
Rate limiting
Load testing
Performance testing
Brute-force protection
4. Nhóm 5xx – Server Error
Nhóm này thường cho biết vấn đề xảy ra phía server.
500 Internal Server Error
Server gặp lỗi không xác định khi xử lý request.
Ví dụ:
POST /api/booking
→ 500 Internal Server Error
👉 Tester nên kiểm tra:
Request data
Response body
Server logs
Database
Related API
501 Not Implemented
Server chưa hỗ trợ functionality được yêu cầu.
Ví dụ client gọi một API mà backend chưa implement.
502 Bad Gateway
Server đóng vai trò gateway/proxy nhưng nhận response không hợp lệ từ upstream server.
Có thể gặp trong hệ thống có:
Client
↓
API Gateway
↓
Backend Service
503 Service Unavailable
Server hiện không thể xử lý request.
Có thể xảy ra khi:
Server đang down
Service quá tải
Maintenance
Dependency service unavailable
504 Gateway Timeout
Gateway/proxy không nhận được response kịp thời từ upstream server.
Ví dụ:
Client
↓
API Gateway
↓
Backend
↓
Database
Backend xử lý quá lâu → Gateway timeout.
5. Tester Nên Nhớ Những Code Nào?
Không cần học thuộc tất cả.
Nếu bạn mới bắt đầu API Testing, hãy ưu tiên:
200 → Success
201 → Created
204 → Success, No Content
400 → Bad Request
401 → Authentication issue
403 → Permission issue
404 → Resource not found
405 → Method not allowed
409 → Conflict
422 → Validation/semantic error
429 → Too many requests
500 → Server error
502 → Bad Gateway
503 → Service unavailable
504 → Gateway timeout
6. Một Tip Quan Trọng Cho Tester
Đừng chỉ kiểm tra Status Code.
Ví dụ API trả:
200 OK
không có nghĩa API chắc chắn đúng.
Tester nên kiểm tra ít nhất:
1. Status Code
Expected: 200
Actual: 200
2. Response Body
Data có đúng không?
3. Response Schema
Field có đúng type và structure không?
4. Business Logic
API có thực hiện đúng nghiệp vụ không?
5. Database
Data có được lưu/update/delete đúng không?
6. Error Handling
Khi gửi invalid data, API có trả lỗi phù hợp không?
Kết luận
HTTP Status Code là kiến thức nền tảng mà Tester làm API nên nắm.
Thay vì học thuộc tất cả mã, hãy nhớ theo nhóm:
2xx → Thành công
3xx → Redirect / Cache
4xx → Request/Client có vấn đề
5xx → Server có vấn đề
Khi test API, hãy tập thói quen đặt câu hỏi:
Status Code có đúng không? Response có đúng không? Và quan trọng nhất: Business Logic có đúng không?
Đó mới là cách sử dụng HTTP Status Code hiệu quả trong công việc Testing.
