Smoke Test Vs Sanity Test Là Gì? Phân Biệt Dễ Nhớ

Smoke vs Sanity — bảng phân biệt nhanh

Smoke test và sanity test khác nhau ở phạm vi và mục đích: smoke test kiểm tra rộng–nông các chức năng cốt lõi để xác nhận build đủ ổn định mà test tiếp; sanity test kiểm tra hẹp–sâu một chức năng hoặc bản sửa cụ thể. Smoke thường chạy mỗi khi nhận build mới; sanity chạy sau một thay đổi nhỏ.

Tiêu chí | Smoke Test | Sanity Test
Mục đích | Xác nhận build có chạy được, đủ ổn để test | Kiểm tra nhanh một chức năng/bản sửa
Phạm vi | Rộng & nông (các luồng cốt lõi) | Hẹp & sâu (một vùng cụ thể)
Khi nào chạy | Mỗi khi nhận build mới từ dev | Sau một thay đổi nhỏ hoặc sửa bug
Kịch bản | Thường có sẵn, dễ tự động hóa | Thường ad-hoc, không cần kịch bản chi tiết
Quyết định mở ra | Build pass → mới test sâu hơn | Bản sửa ổn → mới chạy regression đầy đủ

Một câu để nhớ: Smoke = bật máy lên xem có "bốc khói" không (kiểm tra tổng thể, hời hợt). Sanity = kiểm tra xem một điểm cụ thể có còn "tỉnh táo" sau khi đụng vào không (kiểm tra một vùng, kỹ).

Smoke test là gì

Smoke test (đôi khi gọi là build verification test) là một bộ kiểm thử rộng nhưng nông, chạy nhanh trên các chức năng cốt lõi để xác nhận build mới có "sống" được hay không. Nếu một luồng quan trọng đã hỏng, build sẽ bị trả lại dev ngay, khỏi mất công test sâu.

Ví dụ với "Hệ thống đặt phòng họp nội bộ", smoke test sau mỗi build có thể gồm: mở được ứng dụng, đăng nhập thành công, xem được danh sách phòng, mở được form đặt phòng. Chỉ cần một trong các luồng "xương sống" này gãy là build chưa đủ điều kiện để test tiếp. Vì các bước lặp lại mỗi build, smoke test rất hợp để tự động hóa.

Sanity test là gì

Sanity test là một bài kiểm tra hẹp nhưng sâu, tập trung vào một chức năng cụ thể hoặc một bản sửa lỗi vừa được thực hiện, nhằm xác nhận thay đổi đó hoạt động đúng trước khi bỏ công chạy regression đầy đủ.

Ví dụ: dev vừa sửa lỗi "đăng nhập sai mật khẩu không hiển thị thông báo". Trước khi test diện rộng, tester chạy sanity: nhập sai mật khẩu xem thông báo đã hiện đúng chưa, thử thêm vài biến thể gần đó (bỏ trống, sai định dạng). Nếu vùng này "tỉnh táo" thì mới mở rộng ra. Sanity thường làm nhanh, ad-hoc, không nhất thiết cần bộ test case chi tiết.

Khi nào dùng cái nào

Hai loại này không loại trừ nhau — chúng đứng ở hai cửa khác nhau trong quy trình:

Smoke test: ngay khi nhận build mới, như một cánh cổng đầu tiên. Build chưa pass smoke thì không nên tốn thời gian test sâu.

Sanity test: sau một thay đổi nhỏ hoặc một bản vá, như một cánh cổng trước khi chạy regression đầy đủ.

Trên thực tế, một đợt test thường đi theo trình tự: smoke (build có ổn không?) → sanity (vùng vừa sửa có ổn không?) → test sâu/regression. Hiểu rõ ba "cánh cổng" này giúp bạn không bỏ sót bước, cũng không phí công test trên một build hỏng. Xem thêm các loại kiểm thử để có bức tranh đầy đủ, và tra nhanh khái niệm lạ ở thuật ngữ kiểm thử.