Bài toán data phụ thuộc test trước là một trong những nguyên nhân phổ biến nhất làm cho automation test trở nên khó bảo trì và rất dễ bị flaky.

Về bản chất, đây là tình huống mà một test chỉ có thể chạy đúng khi một hoặc nhiều test khác đã được chạy trước đó để tạo sẵn dữ liệu. Nói cách khác, test không còn độc lập mà phụ thuộc vào trạng thái dữ liệu do test trước để lại.

Ví dụ rất điển hình là một test kiểm tra chức năng chỉnh sửa đơn hàng, nhưng bản thân test này không tự tạo đơn hàng, mà giả định rằng test “Tạo đơn hàng” đã được chạy và thành công trước đó. Nếu test tạo đơn hàng bị fail, bị skip, hoặc không chạy trong một số pipeline, thì toàn bộ các test phía sau sẽ fail theo.

Nguyên nhân chính thường đến từ việc thiết kế test theo luồng end-to-end dài, trong đó mỗi bước được tách thành một test riêng nhưng lại dùng chung dữ liệu trung gian. Ngoài ra, trong nhiều dự án, dữ liệu test không được chuẩn bị trước một cách có kiểm soát, dẫn đến việc test phải “tận dụng” dữ liệu do test khác sinh ra.

Hệ quả rõ ràng nhất là bộ test không thể chạy độc lập từng test, rất khó chạy song song, và khi có một test fail ở đầu chuỗi, các test phía sau sẽ fail dây chuyền, dù bản thân chúng không hề có lỗi logic.

Hướng xử lý quan trọng nhất đối với bài toán này là làm cho mỗi test có khả năng tự chuẩn bị dữ liệu cần thiết cho chính nó, thay vì phụ thuộc vào kết quả của test khác.

Trong trường hợp không thể tạo dữ liệu động, một hướng khác là chuẩn bị sẵn bộ dữ liệu test cố định và có cơ chế reset hoặc làm sạch dữ liệu trước mỗi lần chạy. Tuy nhiên, cần đảm bảo rằng dữ liệu đó không bị thay đổi bởi các test khác trong cùng một lần chạy.

Ngoài ra, nếu bắt buộc phải kiểm thử theo chuỗi nghiệp vụ dài, nên thiết kế ở mức scenario hoặc flow test riêng, tách biệt với các test chức năng độc lập. Như vậy, các test chức năng vẫn có thể chạy độc lập, còn các bài test theo luồng chỉ dùng để xác nhận tổng thể.

 Kết luận: khi dữ liệu của test phụ thuộc vào test trước, bộ automation sẽ mất tính độc lập, khó mở rộng và khó chạy ổn định. Cách tiếp cận đúng là thiết kế test theo hướng tự chủ dữ liệu - tạo và dọn dữ liệu, đồng thời chỉ sử dụng các test theo luồng cho mục đích kiểm thử end-to-end, không dùng chúng làm nền tảng cho toàn bộ bộ test.

Sửa lần cuối: Thứ Hai, 2 tháng 3 2026, 11:16 AM