1. Mô tả lỗi
Dùng sleep bừa bãi là tình huống test automation chèn các lệnh chờ theo thời gian cố định
(ví dụ: sleep 1s, 3s, 5s…) vào kịch bản thay vì chờ theo trạng thái thực của ứng dụng.
Hậu quả:
-
test chạy chậm không cần thiết
-
vẫn fail khi hệ thống chậm hơn thời gian sleep
-
dễ sinh flaky test
2. Nguyên nhân phổ biến
2.1. Muốn xử lý nhanh lỗi timing
-
test fail do UI load chậm
-
thêm sleep để “cho qua”
2.2. Chưa hiểu rõ trạng thái cần chờ
-
không xác định được:
-
khi nào thì UI thật sự sẵn sàng
-
đâu là dấu hiệu kết thúc xử lý
-
2.3. Thói quen copy–paste
-
thấy test khác có sleep
-
copy sang test của mình
3. Dấu hiệu nhận biết
-
Trong code xuất hiện rất nhiều:
-
sleep
-
delay
-
wait cố định
-
-
Khi đổi môi trường:
-
sleep không còn phù hợp
-
test lại fail
-
4. Cách khắc phục (thực tế nên làm)
4.1. Thay sleep bằng wait theo trạng thái
Chờ:
-
element visible / clickable
-
element disappear
-
dữ liệu hiển thị xong
4.2. Xác định rõ “điểm sẵn sàng” của mỗi màn hình
Không chờ đại.
Phải biết:
-
dấu hiệu kết thúc xử lý là gì
-
element nào đại diện cho trạng thái ready
4.3. Giới hạn và kiểm soát sleep nếu buộc phải dùng
Chỉ dùng sleep khi:
-
không có dấu hiệu UI nào để chờ
-
và phải ghi chú rõ lý do
4.4. Review code để loại bỏ sleep dư thừa
-
đưa sleep vào checklist review
-
refactor các test cũ