Docs học tập
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)

On this page