Ad-hoc, Exploratory, Smoke, Sanity và End-to-End Testing thường xuất hiện trong công việc hằng ngày, nhưng chúng không cùng một hệ phân loại. Có thuật ngữ nói về cách tester làm việc, có thuật ngữ nói về mục tiêu kiểm tra, còn có thuật ngữ mô tả độ dài của luồng nghiệp vụ.
Ad-hoc Testing là gì?
Ad-hoc Testing là cách kiểm thử tự phát, ít cấu trúc, thường không có test case hay kế hoạch chi tiết được chuẩn bị trước. Tester dựa vào kinh nghiệm và trực giác để thử những tình huống có khả năng làm hệ thống hỏng.
Ad-hoc có lợi khi cần kiểm tra rất nhanh hoặc muốn tận dụng kinh nghiệm của tester. Điểm yếu là coverage khó đo, kết quả phụ thuộc người thực hiện và lỗi có thể khó tái hiện nếu không ghi lại bước làm.
Exploratory Testing là gì?
Theo ISTQB, trong Exploratory Testing, tester đồng thời học về test object, thiết kế test, thực thi và đánh giá kết quả. Điều vừa quan sát được sẽ định hướng cho test tiếp theo.
Exploratory Testing có thể được tổ chức theo session:
- Có test charter nêu mục tiêu khám phá.
- Có time-box, chẳng hạn 60 phút.
- Tester ghi lại phạm vi đã thử, phát hiện, câu hỏi và rủi ro.
- Sau session có thể có buổi debrief để trao đổi kết quả.
Exploratory khác Ad-hoc như thế nào?
| Tiêu chí | Ad-hoc Testing | Exploratory Testing |
|---|---|---|
| Cấu trúc | Ít hoặc không có cấu trúc | Có thể có charter, time-box và debrief |
| Định hướng | Chủ yếu dựa vào trực giác tại thời điểm test | Liên tục học và dùng phát hiện mới để thiết kế test tiếp theo |
| Ghi chép | Có thể rất ít | Thường ghi lại coverage, phát hiện và câu hỏi |
| Khả năng quản lý | Khó đánh giá coverage | Dễ quản lý và báo cáo hơn khi tổ chức theo session |
Exploratory: vừa học, vừa thiết kế, vừa chạy test — nhưng vẫn có thể được quản lý bằng charter và session.
Smoke Testing và Sanity Testing
Smoke Testing
Smoke Testing là tập kiểm tra nhanh, phạm vi tương đối rộng nhưng không đi quá sâu, nhằm xác nhận build đủ ổn định để bước vào vòng kiểm thử tiếp theo.
Với website bán hàng, smoke suite có thể kiểm tra: mở được website, đăng nhập, tìm sản phẩm, thêm vào giỏ, tạo đơn cơ bản và đăng xuất. Nếu chức năng đăng nhập còn không chạy thì chưa đáng để team tốn thời gian test chi tiết.
Sanity Testing
Sanity Testing là kiểm tra nhanh nhưng tập trung vào một vùng vừa thay đổi để xem thay đổi đó có hoạt động hợp lý và build có đáng để tiếp tục kiểm thử sâu hơn hay không.
Ví dụ developer vừa sửa cách tính phí vận chuyển. Tester kiểm tra một số tỉnh, ngưỡng miễn phí ship, voucher vận chuyển và tổng tiền. Tester không nhất thiết kiểm tra lại đăng ký tài khoản hay tìm kiếm sản phẩm. Tức là, tester focus vào đúng cái tính năng mà dev nó vừa sửa
| Tiêu chí | Smoke Testing | Sanity Testing |
|---|---|---|
| Câu hỏi chính | Build có đủ ổn để bắt đầu test không? | Vùng vừa thay đổi có đủ ổn để test sâu hơn không? |
| Phạm vi | Rộng, nông | Hẹp, tập trung hơn |
| Thời điểm | Sau build hoặc deployment mới | Sau thay đổi hoặc bản sửa tương đối nhỏ |
End-to-End Testing là gì?
End-to-End Testing (E2E) kiểm tra một luồng nghiệp vụ hoàn chỉnh từ điểm bắt đầu đến kết quả cuối cùng, gần với cách người dùng và hệ thống vận hành ngoài thực tế. Luồng này có thể đi qua nhiều component, database, hệ thống nội bộ và dịch vụ bên ngoài.
E2E test kiểm tra toàn bộ hành trình và dữ liệu đi xuyên suốt các chặng.
E2E khác System Test và SIT thế nào?
| Khái niệm | Trọng tâm | Ví dụ với hệ thống bán hàng |
|---|---|---|
| System Testing | Hành vi và khả năng tổng thể của một hệ thống hoặc sản phẩm hoàn chỉnh; gồm cả functional và non-functional testing | Kiểm tra toàn bộ hệ thống bán hàng theo system specification; dịch vụ ngoài có thể được mô phỏng |
| System Integration Testing (SIT) | Interface và tương tác giữa system under test với hệ thống hoặc dịch vụ bên ngoài | Kiểm tra dữ liệu gửi sang cổng thanh toán, nhận callback và xử lý timeout |
| End-to-End Testing | Luồng nghiệp vụ hoàn chỉnh từ đầu đến cuối, có thể xuyên qua nhiều hệ thống | Đặt hàng từ UI đến thanh toán, kho, vận chuyển và email xác nhận |
Ba khái niệm này có thể chồng lấn:
- Một System Test có thể kiểm tra end-to-end task bên trong phạm vi một hệ thống.
- Một SIT có thể chỉ kiểm tra riêng interface thanh toán, chưa đi hết hành trình người dùng.
- Một E2E test xuyên qua nhiều hệ thống sẽ đồng thời kiểm tra nhiều integration point, nhưng mục tiêu chính vẫn là xác nhận toàn bộ business flow.
Bảng tổng hợp nhanh
| Thuật ngữ | Cách nhớ ngắn gọn |
|---|---|
| Ad-hoc | Thử tự phát, ít cấu trúc, dựa vào kiến thức, kinh nghiệm, trải nghiệm 😎 |
| Exploratory | Vừa học, vừa thiết kế, vừa thực thi và đánh giá |
| Smoke | Kiểm tra rộng và nông xem build có đủ ổn không |
| Sanity | Kiểm tra nhanh, tập trung vào vùng vừa thay đổi |
| E2E | Kiểm tra trọn hành trình nghiệp vụ từ đầu đến cuối |
| System Test | Kiểm tra tổng thể một hệ thống hoàn chỉnh |
| SIT | Kiểm tra interface giữa các hệ thống |
Kết luận
Cách dùng thuật ngữ tốt nhất không phải là tìm một chiếc “hộp” duy nhất cho mỗi test. Một E2E test có thể được thực hiện theo kiểu exploratory; một smoke suite có thể chứa vài E2E flow quan trọng; sanity test có thể là một phần của regression testing. Chỉ cần team thống nhất rõ mục tiêu, phạm vi và cách thực hiện, các thuật ngữ sẽ giúp giao tiếp thay vì gây tranh cãi.




