MidKỹ thuậtKiểm thử tự động
Bạn xử lý các automated test chập chờn (flaky) như thế nào?
Thử trả lời trước
Đáp án mẫu
Test chập chờn (flaky) là test lúc đạt lúc hỏng trên cùng một đoạn code. Nó làm mất lòng tin, vì mọi người bắt đầu phớt lờ các bản build đỏ.
Phát hiện và cô lập. Theo dõi tỉ lệ thất bại của từng test theo thời gian và chạy lại các test nghi ngờ nhiều lần để xác nhận. Chuyển test chập chờn đã xác nhận ra khỏi đường chặn (quarantine) kèm người phụ trách và thời hạn, thay vì lặng lẽ xoá hay thử lại mãi.
Tìm nguyên nhân gốc. Các nguyên nhân phổ biến:
- Thời gian và chờ bất đồng bộ: dùng sleep cố định hoặc kiểm tra khi giao diện chưa sẵn sàng. Hãy chờ một điều kiện hoặc phần tử cụ thể, không chờ theo thời gian.
- Trạng thái dùng chung hoặc còn sót lại: test phụ thuộc thứ tự hoặc dữ liệu từ test khác. Làm cho mỗi test độc lập với phần thiết lập và dọn dẹp riêng.
- Môi trường: server kiểm thử không ổn định, tài nguyên dùng chung chậm và gọi mạng tới bên thứ ba thật. Dùng stub hoặc container.
- Đầu vào không xác định: thời gian, ngẫu nhiên và đồng thời. Kiểm soát đồng hồ và seed.
- Xung đột dữ liệu kiểm thử khi chạy song song.
Thử lại có thể giảm nhiễu nhưng che giấu vấn đề, nên hãy báo cáo các lần đạt sau khi thử lại và giữ chúng hiển thị.
Cuối cùng, thêm quy tắc review cho test mới và theo dõi tỉ lệ flaky như một chỉ số.
Ý chính
- Đo độ chập chờn của từng test và cách ly các test đã xác nhận, kèm người phụ trách
- Thay sleep cố định bằng việc chờ các điều kiện tường minh
- Làm các test độc lập: dữ liệu, thiết lập và dọn dẹp riêng
- Kiểm soát thời gian, tính ngẫu nhiên và các phụ thuộc bên ngoài
- Thử lại che giấu sự chập chờn; hãy giữ chúng hiển thị
Câu hỏi nối tiếp thường gặp
- Bạn tìm test nào làm bẩn trạng thái dùng chung như thế nào?
- Khi nào việc xoá một test chập chờn là hợp lý?
Lỗi thường gặp
- Thêm tự động thử lại rồi bỏ qua
- Tăng thời gian sleep thay vì chờ một điều kiện