#1. Bản chất
- Manual Testing (Thủ công): Cần thiết cho UX/UI, các luồng nghiệp vụ phức tạp, các edge case mà logic máy tính khó bao phủ.
- Automation Testing (Tự động): “Tấm khiên” bảo vệ hệ thống khi refactor. Giúp phát hiện lỗi ngay khi vừa save code.
#2. Kim tự tháp Testing (Testing Pyramid)
- Unit Test (Đáy): Test từng class/method. Số lượng nhiều nhất, chạy nhanh nhất.
- Integration Test (Giữa): Test sự kết hợp của nhiều component (VD: Test Service gửi mail + DB).
- End-to-End (E2E) Test (Đỉnh): Test toàn bộ hệ thống qua trình duyệt (Browser). Chạy chậm, dễ vỡ, chỉ test các flow quan trọng nhất.
#3. Khi nào dùng cái gì?
- Manual: Chỉ dùng khi cần “cảm nhận” sản phẩm hoặc khi tính năng thay đổi quá nhanh chưa kịp viết test.
- Automation: BẮT BUỘC cho các luồng nghiệp vụ cốt lõi (Core Business) như: Thanh toán, Đăng ký, Đặt hàng.
#4. Câu hỏi nhanh
Q: Tại sao đừng lạm dụng E2E Test? A: E2E rất dễ bị “dính” (brittle) – chỉ cần đổi 1 cái class CSS, cả test suite bị fail. E2E tốn thời gian chạy (CI/CD chậm). Chỉ nên test 5-10% luồng quan trọng nhất qua E2E.