[Hằng béo học testing] Tìm hiểu về smoke test

Bài viết nằm trong series Hằng béo học testing.
— Anh Tèo này, khi nãy họp, em thấy mọi người nói về smoke test gì gì đấy. Thế smoke test là gì? 
— À, smoke test là những test case quan trọng theo nguyên tắc 80/20. Cũng hay phết. Để anh nói chi tiết hơn về lịch sử, các khái niệm cũng như cách triển khai cho em nghe nhé. 
TL; DR
- Smoke test là phương pháp kiểm thử phần mềm, nhằm kiểm tra những phần quan trọng nhất của hệ thống.
- Smoke = khói, xuất phát từ cách thợ ống nước kiểm tra đường ống có rò rỉ không bằng cách bơm khói vào đường ống.
- Hiểu đơn giản thì nếu đường ống có khói bay ra => bị rò => không cần kiểm tra các phần khác vì cái ống quan trọng nhất là không được rò.
- Nguyên tắc Pareto 80/20: khoảng 80% kết quả thường do 20% nguyên nhân gây ra
- Ứng dụng vào đây ý nói là khoảng 20% các test case chính là nguyên nhân gây ra 80% các lỗi. thường gặp.
- Tập trung test 20% test case này trước. Nếu có lỗi thì đi fix đi, không cần test hết toàn bộ làm gì.
- Lợi ích mà smoke test mang lại:
- Phát hiện sớm các lỗi nghiêm trọng ngay từ giai đoạn đầu của quy trình phát triển
- Tối ưu resource (thời gian, nhân sự) vì chỉ focus vào test các mục chính
- Cách xác định smoke test cho hệ thống
- Các test cover luồng chính của hệ thống
- Các test thường xuyên xảy ra lỗi khi hệ thống có thay đổi, side effect lớn
- Các test chỉ ra các lỗi cơ bản và quan trọng, tránh lan man để tiết kiệm thời gian (VD lỗi không checkout được sẽ là smoke test, còn textbox bị lệch 2px thì có thể bỏ qua, không cần bắt trong phase smoke test)
Chém
— Zoo
— Okk, đầu tiên là từ smoke. Smoke nghĩa là khói. Thuật ngữ smoke test bắt nguồn từ việc một nhóm các anh công nhân đập trai
kiểm tra đường ống có bị rò rỉ hay không bằng cách bơm khói vào. Nếu ống không bị rò rỉ thì mới tiếp tục làm.
— Cũng đúng , vì nếu bị rò thì việc làm tiếp cũng không có ý nghĩa mấy; làm xong có khi phải đập ra làm lại.
— Đúng là như zậy
— Cái ống thì nó còn có khói, phần mềm lấy đâu ra khói mà gọi là smoke?? 
— Tượng trưng thôi. Nó chơi chữ kiểu hình ảnh ẩn dụ ấy. Hiểu đơn giản là nếu phần quan trọng nhất của phần mềm mà lỗi, thì test những thứ khác đâu có ý nghĩa gì? 
— Hm, em lấy ví dụ nhé: nếu ứng dụng thương mại điện tử, mà bấm vào nút “Thêm vào giỏ hàng” không được, thì test giao diện trang chi tiết sản phẩm không có ý nghĩa gì, vì người dùng thấy đẹp nhưng đâu có mua được hàng! Em hiểu thế đúng hông anh Tèo. 
— Mày thông minh phết. M đang sắp xác định được cách coi đâu là smoke test đấy 
— Hehe. Ủa còn nguyên tắc 80/20 mà anh nói phía trên, đó là gì?
— À, 80/20, hay nguyên tắc Pareto, là nguyên tắc rút ra từ kinh nghiệm thực tế: 80% vấn đề thường do 20% nguyên nhân gây ra.
— Em chưa hiểu?
— Ý là các lỗi thường lặp lại đó má. Lỗi thường lặp đi lặp lại, và nằm trong khoảng 20% số lượng test cases thôi. 
— Hm… tức là smoke test chỉ nên là khoảng 20% trên tổng số test case?
— Tối đa 20%. Smoke test mà quá nhiều thì hơi overkill, thừa thãi. Các lỗi thường sẽ lặp lại và ảnh hưởng lẫn nhau (side effect) nên tầm 20% là quá đủ rồi. 
— Nói mới nhớ, đúng là hay lặp lại thật. Lúc review code cho mọi người, em thấy hay lặp lại lỗi phết. Okk. Đã hiểu sương sương.
— Ngoài ra thì smoke test còn lợi ích gì không anh zai? 
— Smoke test giúp hệ thống ổn định hơn.
— Chắc là vì nó ít nên cho chạy hằng ngày được à?
— Đúng là như vậy. Ngoài ra smoke test cũng giúp quy trình làm việc lean hơn, hiệu quả hơn do không làm thừa. Cứ tưởng tượng anh test xong 10 test case chi tiết, đến khi gặp lỗi lại test lại từ đầu thì nản vl. Thay vì thế, anh test luôn vào cái case hay lỗi. Ngon lành cành đào hết rồi mới test vào case chi tiết thì đẹp try hơn. 
— Hiểu hiểu. Vậy làm thế nào xác định được test nào mới là smoke test?
— Smoke test thì nên là:
- Các test cover luồng chính của hệ thống
- Các test thường xuyên xảy ra lỗi khi hệ thống có thay đổi, side effect lớn
- Các test chỉ ra các lỗi cơ bản và quan trọng, tránh lan man để tiết kiệm thời gian (VD lỗi không checkout được sẽ là smoke test, còn textbox bị lệch 2px thì có thể bỏ qua, không cần bắt trong phase smoke test)
— Thế thôi à, còn gì không? 
— Tao thấy thế là đủ, còn đâu để bạn đọc góp ý xem thế nào. 
— Okk, để em về thêm smoke test cho team em xem thế nào :vv 
