Những hệ thống đƣợc kiểm thử có chứa những form nhập dữ liệu và cần kiểm thử hệ thống đối với dữ liệu đƣợc nhập. Với những kịch bản kiểm thử nhƣ vậy thì việc chuẩn bị dữ liệu kiểm thử trƣớc khi thực hiện kiểm thử là rất cần thiết. Thông thƣờng, chúng ta thƣờng phải thiết kế dữ liệu kiểm thử một cách thủ công. Nếu việc sinh dữ liệu kiểm thử chỉ là những bản ghi tƣơng tự nhau thì thật đơn giản bằng việc sử dụng công cụ Selenium hoặc kéo dữ liệu trên excel. Tuy nhiên, với những bản ghi dữ liệu khác nhau, cần phải suy luận, tính toán để đƣa ra các bản ghi mà ngƣời dùng có thể nhập và có khả năng sinh ra lỗi. Điều này là khó đối với các kiểm thử viên để có thể tạo ra hết các trƣờng hợp, lƣờng trƣớc hết đƣợc các trƣờng hợp có khả năng sinh lỗi với một thời gian kiểm thử bị giới hạn. Đặc biệt với những dữ liệu khó nhƣ SQL Injection, XSS thì phải những ngƣời có kinh nghiệm mới nghĩ và có đƣợc những tập dữ liệu nhƣ vậy. Do vậy rất cần đến những công cụ hỗ trợ việc sinh dữ liệu kiểm thử, có thể đƣa ra cho các kiểm thử viên những tập dữ liệu kiểm thử nhỏ và có khả năng bao phủ đƣợc tập lỗi của hệ thống. Một trong những phƣơng pháp đƣợc biết đến là sinh dữ liệu kiểm thử dựa trên giải thuật di truyền (Genetic algorithm – GA). Có rất nhiều thuật toán khác đƣợc sử dụng để giải quyết bài toán sinh dữ liệu kiểm thử tự động nhƣ các thuật toán tìm kiếm không có thông tin/ vét cạn hoặc các thuật toán tìm kiếm có thông tin sử dụng phƣơng pháp giải quyết vấn đề dựa trên kinh nghiệm, áp dụng các tri thức về cấu trúc của không gian tìm kiếm nhằm giảm thời gian cần thiết
cho việc tìm kiếm. Tuy nhiên, những phƣơng pháp này chỉ áp dụng cho những không gian tìm kiếm nhỏ, nó không hiệu quả cho không gian tìm kiếm lớn. Mà trong thực tế đa số các bài toán cần đƣợc giải quyết trong không gian tìm kiếm lớn. Giải thuật di truyền là một trong những kỹ thuật tìm kiếm lời giải tối ƣu vẫn đáp ứng đƣợc nhu cầu này [3, tr.1-2].