Nguyen Le PhongNguyen Le Phong

AI trong QA: tạo automated test thế nào cho có ích

Một góc nhìn thực tế về AI-assisted QA và automated test generation: AI giúp mở rộng scenario, edge case, fixture và test skeleton ở đâu, và vì sao con người vẫn sở hữu risk, sự thật và niềm tin.

Một QA engineer ngồi trước một checkout test đang fail, với ba tab mở sẵn: acceptance criteria, pull request diff, và một cửa sổ AI chat. Feature không lớn, nhưng các trạng thái có thể xảy ra cứ nhân lên. User mới, user cũ, coupon hết hạn, partial refund, payment provider chậm, mobile viewport. Câu hỏi không còn là AI có viết được test không. Câu hỏi là nó có giúp team nghĩ về rủi ro tốt hơn không, mà không giả vờ hiểu sản phẩm hơn những người đang xây nó.

AI hữu ích trong QA vì testing một phần là bài toán tìm kiếm. Một tester tốt đi tìm những con đường mà demo đẹp không cho thấy. AI có thể giúp tạo candidate test case, edge condition, tổ hợp data, negative flow, accessibility check, API contract example và regression idea. Nó có thể lấy một requirement ngắn và hỏi những câu nhàm nhưng đáng giá: chuyện gì xảy ra khi field rỗng, bị duplicate, quá dài, stale, unauthorized, hoặc bị đổi hai lần?

Độ rộng đó có ích. Nhiều bug sống sót vì không ai đủ thời gian liệt kê những biến thể rất bình thường. Một AI assistant có thể nhanh chóng tạo bản đồ đầu tiên cho login flow, billing rule, import screen hoặc notification workflow. Người review vẫn quyết định scenario nào quan trọng, cái nào trùng, cái nào phi thực tế. Giá trị không nằm ở việc AI đúng. Giá trị nằm ở việc nó cho team nhiều điểm bắt đầu hơn một bộ não mệt lúc 5 giờ chiều.

AI cũng có thể draft test skeleton. Khi có component contract, API schema, hoặc style test hiện có, nó có thể đề xuất unit test, integration test, Playwright flow, fixture data và assertion. Việc này đặc biệt hữu ích khi codebase đã có pattern rõ. Assistant có thể bắt chước hình dạng của test gần đó và giảm chi phí trang trắng. Nhưng test được generate nên được đối xử như code được generate: review, đơn giản hóa, và đặt câu hỏi.

Rủi ro là cảm giác an toàn giả. Một test nhìn rất chuyên nghiệp vẫn có thể assert sai behavior. Nó có thể kiểm implementation detail thay vì outcome mà user thấy. Nó có thể mock đúng phần lẽ ra cần integration. Nó có thể tạo data không bao giờ tồn tại trong production. Nó có thể test bug hiện tại như thể bug đó là requirement. AI rất giỏi tạo cấu trúc có vẻ hợp lý. QA vẫn cần sự thật.

Chất lượng context quyết định rất nhiều. Nếu prompt chỉ nói viết test cho checkout, output sẽ chung chung. Nếu prompt có business rule, user role, incident từng gặp, ví dụ API response, validation rule và convention test hiện tại, output sẽ hữu ích hơn. AI-assisted QA tốt không giống xin phép màu. Nó giống việc brief cho một teammate cẩn thận nhưng cần bằng chứng.

Một workflow thực tế là hỏi AI về risk inventory trước khi hỏi code. Đưa cho nó story, acceptance criteria và diff. Yêu cầu nó liệt kê user flow, boundary case, state transition, permission, data integrity risk và observability question. Sau đó đánh dấu từng mục: đã covered, cần manual test, cần automation, hoặc không liên quan. Chỉ sau đó mới hỏi test code. Cách này giữ cuộc trò chuyện ở chất lượng trước khi đi vào syntax.

Một workflow khác là review test. Dán một test do AI hoặc người viết, rồi hỏi nó thật sự bảo vệ behavior nào, bỏ sót gì, và có fail vì đúng lý do không. Việc này có thể làm lộ assertion giòn hoặc mock quá tay. Nó cũng giúp junior engineer học vì sao một test tạo niềm tin, còn một test khác chỉ tăng line count.

Privacy và security vẫn quan trọng. Production data không nên được dán tùy tiện vào AI tool. Tên khách hàng, access token, private log và regulated data cần cùng mức cẩn thận như trước khi có AI. Synthetic fixture, sample đã anonymized, hoặc local model có thể là lựa chọn tốt hơn tùy sản phẩm. Một testing assistant không nên trở thành lỗ rò mới trong quality process.

AI thay đổi vai trò QA, nhưng không phải bằng cách loại bỏ judgment. Nó chuyển một phần nỗ lực từ việc tự tay gõ mọi scenario sang curate risk, cải thiện prompt, kiểm tra bằng chứng, và quyết định điều gì đáng automation. Human tester vẫn là người hiểu product trust, thiệt hại với khách hàng, nhịp release, và khác biệt tinh tế giữa một test pass với một sản phẩm an toàn để ship.

Những team hưởng lợi nhiều nhất có lẽ là những team giữ AI gần với thói quen quality hiện có. Họ đưa requirement thật vào, so sánh suggestion với bug history, giữ lại prompt hữu ích, review generated test như mọi code khác, và đo xem test suite có bắt được regression có ý nghĩa hơn không. Tool trở thành một phần của vòng lặp, không phải chủ của vòng lặp.

Lần tới khi AI đề xuất hai mươi test, hãy dừng một chút trước khi nhận hết. Mỗi test bảo vệ rủi ro nào cho user? Test nào đã có thể bắt bug gần nhất? Test nào chỉ kiểm rằng implementation vẫn trông như cũ? Automated test generation hữu ích khi nó mở rộng suy nghĩ cẩn thận. Nó nguy hiểm khi thay suy nghĩ cẩn thận bằng một danh sách xanh rất dài.

Bạn thấy bài viết thế nào?