Smoke Testing
Bộ kiểm tra nhanh vài chức năng xương sống ngay sau khi nhận build, để quyết định build này có đáng test tiếp hay trả lại cho dev. Thường chạy trong 15 tới 60 phút.
Định nghĩa
Nhận build lúc 9h sáng, QC bấm thử: đăng nhập được, mở được trang chủ, tạo được một đơn hàng. Mười lăm phút, xong, build này dùng được. Đó là smoke test. Nếu đăng nhập đã hỏng thì trả build về ngay, đỡ tốn cả ngày của ba người.
Smoke test là cửa gác: build không qua được thì không ai mất thời gian test sâu.
Smoke, sanity và regression
| Tiêu chí | Smoke | Sanity | Regression |
|---|---|---|---|
| Phạm vi | Rộng, nông — chạm mọi chức năng chính | Hẹp, sâu — vào đúng phần vừa sửa | Rộng, phủ nhiều chức năng cũ |
| Mục đích | Build có dùng được không | Chỗ vừa sửa có hợp lý không | Thay đổi có làm hỏng cái cũ không |
| Thời gian | 15–60 phút | 30 phút tới vài giờ | Nửa ngày tới vài ngày |
| Tài liệu | Có kịch bản cố định | Thường không cần, chạy theo hiểu biết | Có bộ case được duy trì |
| Ai chạy | QC hoặc chạy tự động | QC | QC, phần lớn nên tự động |
Chỗ hay nhầm: nhiều nơi gọi lẫn smoke và sanity, thậm chí coi là một. Về mặt vận hành cũng chẳng chết ai, miễn cả team hiểu giống nhau. Nhưng khi viết vào tài liệu chính thức hoặc đi phỏng vấn thì nên dùng đúng nghĩa như bảng trên.
Bộ smoke gồm những gì
Chọn theo nguyên tắc: nếu cái này hỏng thì mọi thứ khác không test được nữa.
- Đăng nhập, phân quyền cơ bản
- Trang chủ và menu chính tải được
- Tạo mới bản ghi chính của hệ thống, ví dụ tạo đơn hàng hoặc tạo hồ sơ khách
- Một luồng nghiệp vụ end-to-end ngắn nhất
- Kết nối tới các hệ thống bên ngoài còn sống
Giữ dưới 20 case. Bộ smoke phình lên 80 case là mất luôn chức năng gác cổng: tới lần nhận build thứ ba trong ngày, kiểu gì cũng có người lặng lẽ bỏ bớt bước.
Smoke test trên PROD sau khi deploy
Đây là lúc smoke test có giá trị cao nhất và cũng dễ bị quên nhất. Deploy xong 23h30, ai cũng buồn ngủ, mọi người nhìn log thấy service chạy là về.
Gần nửa đêm chủ nhật, bản cập nhật POS vừa lên cho 76 cửa hàng của một chuỗi siêu thị mini. Bộ smoke sau deploy có 9 bước, mất 12 phút, trong đó có bước "quét một sản phẩm thật và in một hóa đơn thử". Chính bước in hóa đơn lòi ra máy in nhiệt bị lệch dòng do đổi template. Sửa xong lúc 0h kém, khách hàng không hề biết có chuyện gì. Chờ tới 6h sáng lúc cửa hàng mở cửa thì 76 điểm bán gọi lên tổng đài cùng một lúc.
Bộ smoke trên PROD nên có kịch bản riêng, ghi rõ dùng tài khoản nào, dữ liệu nào, và cách dọn dẹp dữ liệu thử sau khi chạy. Đơn hàng test để quên trong hệ thống thật sẽ được kế toán lôi ra hỏi vào đúng ngày chốt sổ.
Mẹo khi đi làm
Đưa smoke test vào quy trình nhận build như một điều kiện, chứ đừng để nó thành thiện chí. Viết vào entry criteria: build chưa pass smoke thì QC không nhận. Ban đầu dev sẽ càu nhàu, sau vài tuần chính họ sẽ chạy smoke trước khi giao build vì không ai muốn bị trả về hai lần trong một ngày.
