Tầng 1: Unit & contract test trước khi commit
🎯 Mục tiêu học: hiểu tầng đầu tiên trong mô hình 3 tầng test thực tế — chạy cục bộ, cực nhanh, trước cả khi code được đẩy lên hệ thống chung.
🔗 Liên hệ với các chương trước: Chương 7 không phải 1 nhóm kịch bản test mới — đây là cách tổ chức và tự động hoá toàn bộ những gì đã học ở Chương 1-6 (checklist theo method, integration, bảo mật OWASP, hiệu năng, contract) thành 1 quy trình chạy được lặp lại, thay vì làm thủ công từng lần.
Đặc điểm Tầng 1
Chạy ngay trên máy dev, thường qua pre-commit hook — tự động chạy trước khi lệnh git commit hoàn tất. Ở tầng này chỉ nên có: unit test cho logic xử lý (validate, tính toán), và chạy lại contract test đã có (Chương 6) — KHÔNG chạy integration test đầy đủ vì cần môi trường/service phụ thuộc chưa chắc có sẵn trên máy dev.
# Ví dụ pre-commit hook đơn giản (.git/hooks/pre-commit hoặc qua tool # như pre-commit/husky) #!/bin/sh pytest tests/unit/ -q # unit test logic, chạy trong vài giây pytest tests/contract/ -q # xác nhận vẫn khớp hợp đồng đã có (Chương 6) # KHÔNG chạy tests/integration/ ở đây — quá chậm cho vòng lặp mỗi lần commit
Vì sao tầng này quan trọng
Phản hồi tức thì — dev biết ngay lỗi trong vài giây, thay vì chờ pipeline CI/CD chạy xong (có thể mất nhiều phút).
Chặn lỗi rẻ nhất có thể — sửa lỗi ngay lúc code còn "nóng" trong đầu dev luôn rẻ hơn nhiều so với phát hiện ở Tầng 2 hay Tầng 3.
📌 Ghi nhớ
Nguyên tắc chọn test cho Tầng 1: nếu 1 test case cần môi trường phức tạp, gọi service ngoài, hoặc chạy quá vài giây — nó không thuộc Tầng 1, hãy đẩy xuống Tầng 2 (Mục 7.2).
📖 Thuật ngữ Anh–Việt (mục này)
Đề thi dùng thuật ngữ tiếng Anh — nhớ đúng cụm bên trái. Bấm 🔊 để nghe từng từ, hoặc "Đọc tất cả" để nghe lần lượt Anh → (vài giây) → Việt.
| Thuật ngữ (EN) | Nghĩa & ghi nhớ nhanh |
|---|---|
| Pre-commit hook | Script tự động chạy trước khi hoàn tất lệnh commit trong Git |
| Unit test | Kiểm thử đơn vị — test 1 phần nhỏ logic độc lập, không phụ thuộc hệ thống ngoài |
| Fast feedback loop | Vòng phản hồi nhanh — phát hiện lỗi càng sớm càng tốt trong quá trình phát triển |
📎 Nội dung do maiqai.com biên soạn dựa trên mô hình 3 tầng test phổ biến trong thực hành CI/CD, không sao chép nguyên văn từ nguồn nào.