💨 Smoke Test là gì?
Thử nhanh vài thứ sống còn xem có chạy nổi không.
1
Hiểu nó là gì
Smoke Test là bộ test ngắn kiểm tra các chức năng quan trọng nhất, chạy ngay khi có bản build mới trước khi test sâu.
Nói theo đời thường:
Như nổ máy xe trước khi lên đường: chưa cần kiểm tra kỹ, chỉ cần biết nó còn nổ được hay chết hẳn.
Như nổ máy xe trước khi lên đường: chưa cần kiểm tra kỹ, chỉ cần biết nó còn nổ được hay chết hẳn.
⚠ Chỗ ẩn dụ này hỏng
Xe nổ máy được thì ít ra còn chạy. Nhưng smoke test xanh không có nghĩa bản build dùng được — chỉ nghĩa là nó chưa chết hẳn.
Nguy hiểm khi có người nhìn smoke test xanh rồi kết luận “ổn rồi, phát hành thôi”. Nó chỉ trả lời đúng một câu: có đáng bỏ công test tiếp không.
2
Code trông thế nào
// Chỉ 5-10 ca, chạy dưới 2 phút test('@smoke trang chủ mở được', ...) test('@smoke đăng nhập được', ...) test('@smoke tìm kiếm ra kết quả', ...)
Tiêu chí chọn: hỏng cái này thì mọi ca test khác đằng nào cũng đỏ.
3
Khi nào bạn dùng nó
✓ Dùng khi
- Ngay sau khi có bản build mới
- Sau khi deploy lên môi trường test
- Trước khi cho cả đội bắt đầu test tay
✗ Đừng dùng khi
- Thay cho bộ hồi quy đầy đủ
- Đưa vào quá nhiều ca, mất luôn tính “nhanh”
Chưa cần biết: cổng chặn tự động trong pipeline, tự rollback khi smoke đỏ.
Để dành tới Mốc 3 — Tự sửa được khi nó hỏng: Test đỏ trên CI mà xanh ở máy bạn, và bạn biết bắt đầu tìm từ đâu.
Dấu hiệu bạn đã cần học nó: Khi bạn đã ba lần ngồi chờ bộ test đầy đủ chạy 40 phút chỉ để phát hiện trang chủ không mở nổi.
4
Đi đâu tiếp
- Sanity TestAnh em gần nhất, hay bị nhầm lẫn với smoke.
- Regression TestBộ lớn chạy sau khi smoke đã xanh.
- DeployThời điểm smoke test hay được kích hoạt nhất.
🧪 Thử 2 phút, không cần cài gì
Liệt kê ra giấy 5 chức năng mà nếu hỏng thì sản phẩm coi như chết. Đó là bộ smoke test của bạn. Nếu liệt kê quá 10 cái, bạn đang nhầm nó với hồi quy.⚖ Hay bị nhầm với thuật ngữ khác
- Smoke Test và Sanity Test khác nhau thế nào?Sanity Test