Backend nền tảng
I5 · Unit Test, Integration Test và Test Pyramid
Unit test: hàm, lớp tách biệt; dùng mock/stub cho phụ thuộc bên ngoài; nhanh, nhiều.
I5 · Junior · cốt lõi
Kiểm tra từng linh kiện (unit), kiểm tra khi lắp ráp (integration), rồi chạy thử cả cỗ máy (end-to-end). Linh kiện được kiểm nhiều nhất vì rẻ và nhanh.
Cốt lõi
- Unit test: hàm, lớp tách biệt; dùng mock/stub cho phụ thuộc bên ngoài; nhanh, nhiều.
- Integration test: chạy với DB, cache, queue thật (ví dụ Testcontainers) – bắt lỗi SQL, migration, cấu hình.
- E2E / API test: chỉ vài luồng quan trọng nhất.
- Test tốt kiểm tra hành vi và trường hợp biên (rỗng, âm, trùng, đồng thời), không chỉ đường đi suôn sẻ.
Đánh đổi
Mock quá nhiều khiến test xanh mà production vẫn lỗi; coverage cao không đồng nghĩa test tốt.
Trong thực tế
Mỗi lỗi production được sửa kèm một test tái hiện lỗi đó để nó không quay lại.
Bug thường gặp
Unit test mock repository nên luôn pass, nhưng câu SQL thật sai chỉ lộ ra trên production.
Tự hỏi lại
Code thế nào thì dễ viết unit test? (liên hệ Dependency Inversion trong SOLID)