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

> Hai khái niệm smoke test vs sanity test nghe na ná nhau khiến rất nhiều bạn mới học Manual Testing lẫn lộn. 🙂 Cách nhớ đơn giản nhất: smoke là "rộng mà nông", sanity là "hẹp mà sâu". Bài này tôi tóm gọn sự khác biệt bằng một bảng, kèm ví dụ thực tế và thời điểm áp dụng từng loại.

- **URL canonical**: https://itlearn.edu.vn/blog/smoke-test-vs-sanity-test
- **Published**: 2026-06-21T19:40:00+07:00
- **Modified**: 2026-06-21T22:34:46+07:00
- **Author**: Anh Tuấn
- **Category**: Manual Testing (https://itlearn.edu.vn/blog/cat/manual-testing)
- **Reading time**: 6 phút
- **Source site**: IT LEARN — Học viện Software Testing tiếng Việt

---

## 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ử](/blog/cac-loai-kiem-thu) để có bức tranh đầy đủ, và tra nhanh khái niệm lạ ở [thuật ngữ kiểm thử](/blog/thuat-ngu-kiem-thu/).

## Câu hỏi thường gặp

### Smoke test khác sanity test thế nào?

Smoke test kiểm tra rộng và nông trên 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 và sâu vào một chức năng hoặc bản sửa cụ thể. Nói gọn: smoke lo "build có sống không", sanity lo "vùng vừa đụng vào có còn đúng không".

### Smoke test có tự động hóa được không?

Rất nên. Vì smoke test lặp lại trên mỗi build với cùng các luồng cốt lõi, nó là ứng viên lý tưởng để tự động hóa và gắn vào pipeline CI/CD. Tự động hóa smoke test giúp phát hiện build hỏng ngay lập tức, tiết kiệm thời gian cho cả đội trước khi bước vào các vòng test sâu hơn.

### Sanity test có cần test case không?

Thường là không bắt buộc. Sanity test hay được thực hiện nhanh, ad-hoc, dựa vào kinh nghiệm của tester quanh vùng vừa thay đổi. Tuy nhiên, ghi lại những điểm đã kiểm tra vẫn hữu ích để truy vết. Nếu vùng đó quan trọng và lặp lại nhiều, bạn có thể chuẩn hóa thành một bộ kiểm tra ngắn.

### Smoke test chạy khi nào?

Smoke test chạy ngay khi đội test nhận một build mới từ dev, trước khi bắt đầu bất kỳ vòng test chi tiết nào. Nó đóng vai trò cổng kiểm soát đầu vào: nếu các luồng cốt lõi đã gãy, build sẽ bị trả lại để sửa, tránh lãng phí công sức test trên một bản không dùng được.

### Regression khác smoke/sanity ra sao?

Regression test (theo chuẩn quốc tế ISTQB) là kiểm thử để chắc rằng một thay đổi không làm hỏng các phần đang chạy tốt — phạm vi rộng và sâu, thường chạy sau smoke và sanity. Smoke chỉ xác nhận build ổn, sanity xác nhận một vùng hẹp ổn; còn regression mới rà soát toàn diện ảnh hưởng của thay đổi. Muốn nắm vững các loại kiểm thử và áp dụng đúng lúc trên dự án thật, bạn có thể tham khảo [khóa Manual Testing](/newtester.html) của IT LEARN.

