1. Mô tả lỗi
Wait không đủ là tình huống automation tiếp tục bước tiếp theo trong khi ứng dụng chưa ở trạng thái sẵn sàng
(dữ liệu chưa load xong, element chưa sẵn sàng để thao tác, UI chưa ổn định).
Hậu quả:
-
không tìm thấy element
-
element chưa clickable
-
hoặc kiểm tra kết quả bị sai
→ làm test bị fail ngẫu nhiên (flaky).
2. Nguyên nhân phổ biến
2.1. Timeout cấu hình quá ngắn so với thực tế
Thời gian chờ mặc định:
-
không đủ cho môi trường chậm
-
không đủ khi backend / network phản hồi lâu
2.2. Chờ sai điều kiện
Ví dụ:
-
chỉ chờ element tồn tại
-
nhưng:
-
dữ liệu chưa hiển thị
-
chưa enable
-
chưa sẵn sàng để click
-
2.3. Dùng sleep cố định
Ví dụ:
-
sleep 1–2 giây
→ không đảm bảo trạng thái thật của UI.
2.4. Ứng dụng có nhiều bước xử lý ngầm
Ví dụ:
-
load page xong
-
nhưng còn:
-
gọi thêm API
-
render table
-
validate dữ liệu
-
load component phụ
-
2.5. Chạy song song / máy test yếu
Khi chạy nhiều test cùng lúc:
-
CPU, RAM bị chiếm
-
browser phản hồi chậm
→ thời gian thực tế dài hơn so với lúc thiết kế wait.
3. Dấu hiệu nhận biết
-
Test fail không ổn định
-
Chạy lại thì pass
-
Fail nhiều hơn khi:
-
chạy ban đêm
-
chạy CI
-
chạy song song
-
Các lỗi thường gặp:
-
element not clickable
-
verify sai dữ liệu
4. Cách khắc phục (thực tế nên làm)
4.1. Dùng wait theo trạng thái, không dùng sleep
Không chờ theo thời gian.
Chờ theo điều kiện:
-
element visible
-
element clickable
-
data hiển thị xong
-
spinner biến mất
4.2. Chọn đúng loại wait
Không phải lúc nào cũng dùng một loại wait.
Ví dụ:
-
chờ load xong trang
-
chờ component hiển thị
-
chờ request xử lý xong
4.3. Tăng timeout có kiểm soát
Không tăng bừa.
Chỉ tăng khi:
-
môi trường thực sự chậm
-
đã xác nhận logic chờ là đúng
4.4. Chờ đúng “điểm kết thúc” của xử lý
Không chờ “bắt đầu có element”.
Phải chờ:
-
dữ liệu hiển thị hoàn chỉnh
-
trạng thái cuối của màn hình
4.5. Tạo wait dùng chung cho các pattern phổ biến
Ví dụ:
-
wait page ready
-
wait loading xong
-
wait table load xong
→ tránh mỗi test viết một kiểu.