Không viết test cho toàn bộ codebase. Bắt đầu ở nơi lỗi gây thiệt hại lớn nhất và code dễ test nhất.
Thứ tự thực tế:
1. Dựng hạ tầng test trước — cài runner (Vitest/Jest), 1 lệnh pnpm test chạy được, gắn vào CI. Nếu test không chạy trong CI thì sau vài tuần sẽ không ai chạy.
2. Viết test cho bug vừa xảy ra. Mỗi lần fix bug production, thêm 1 test tái hiện bug đó. Bộ test lớn dần theo đúng những chỗ hay hỏng thật.
3. Phủ luồng sinh tiền — thanh toán, tạo đơn, tính giá, phân quyền. Đây là chỗ lỗi tốn tiền thật.
4. Phủ hàm thuần logic — tính toán, parse, validate, format. Không cần mock gì, viết nhanh, chạy nhanh.
Cái không làm lúc mới bắt đầu: đặt mục tiêu coverage %, viết test cho getter/setter, hay dừng feature 2 tuần để "viết test cho cả hệ thống". Mục tiêu là code tự kiểm tra được (self-testing) chứ không phải một con số.