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ũ

Sửa lần cuối: Thứ Tư, 25 tháng 2 2026, 4:26 PM