⭐️ Trong kiểm thử phần mềm, các ứng dụng truyền thống thường có tính xác định. Nghĩa là, cùng một tập giá trị đầu vào, phần mềm sẽ luôn trả về cùng kết quả.
Ví dụ, với một phần mềm tính tổng như máy tính bỏ túi (calculator) thì khi thực hiện phép tính 2 + 2, kết quả sẽ luôn là 4. Dù bạn lặp lại bao nhiêu lần thì kết quả vẫn là 4. Vì vậy tester có thể viết test case rất rõ ràng bao gồm các thao tác và giá trị nhập đầu vào và kết quả mong đợi.
Khi thực hiện kiểm thử, nếu kết quả thực tế khác kết quả mong đợi, có thể kết luận là phần mềm có lỗi. Trước mắt tester sẽ báo lỗi (hay gọi là post bug) để developer điều tra nguyên nhân và sửa lỗi.
Tuy nhiên, với các hệ thống AI hiện nay như Chat GPT, Google Gemini, câu chuyện lại khác. Đây là các hệ thống sử dụng mô hình AI để tạo ra câu trả lời dựa trên xác suất, thay vì cách xử lý cố định.
Vì vậy, chúng có tính phi xác định. Nghĩa là cùng một thao tác và giá trị nhập đầu vào nhưng kết quả thực tế có thể khác nhau giữa các lần thực hiện. Điều này khiến việc kiểm thử trở nên khó khăn hơn.
Ví dụ bạn hỏi AI: Giải thích kiểm thử hồi quy
- Lần 1, AI có thể trả lời: Kiểm thử hồi quy bảo đảm các thay đổi mới không gây lỗi ở các chức năng hiện có.
- Lần 2, AI có thể trả lời: Kiểm thử hồi quy kiểm tra rằng các chức năng đang hoạt động sẽ vẫn hoạt động sau khi mã nguồn hệ thống bị thay đổi.
Tuy hai câu trả lời trông có vẻ khác nhau, nhưng đều đúng về mặt ý nghĩa. Đây chính là điểm khiến việc kiểm thử hệ thống AI khó hơn so với kiểm thử một hệ thống phần mềm thông thường.
Dưới đây là một số lý do khiến việc kiểm thử mô hình AI hay một hệ thống phần mềm sử dụng AI khó hơn so với kiểm thử hệ thống thông thường.
1. Kết quả thực tế có thể thay đổi
Không giống phần mềm truyền thống, kết quả trả về của mô hình AI có thể không giống nhau giữa các lần chạy.
Điều này khiến tester khó xác định: kết quả nào mới là “đúng”. Trong nhiều trường hợp, nhiều câu trả lời khác nhau đều có thể chấp nhận được.
2. Kết quả mong đợi không được xác định trước
Trong kiểm thử các phần mềm truyền thống, kết quả mong đợi thường được mô tả rõ ràng.
Ví dụ:
- Thao tác: đăng nhập với mật khẩu không đúng
- Kết quả mong đợi: hệ thống hiển thị thông báo lỗi
Nhưng với AI, việc xác định kết quả mong đợi thường không đơn giản như vậy. Thay vì kiểm tra một kết quả cụ thể, tester thường phải đánh giá dựa trên các tiêu chí như:
- Trả lời có đúng không?
- Có liên quan đến câu hỏi không?
- Có gây hiểu nhầm cho người dùng không?
3. Kiểm thử tự động phức tạp hơn
Trong kiểm thử tự động trước đây, việc đánh giá kết quả một trường hợp thường khá đơn giản, chỉ cần so sánh kết quả mong đợi (dựa vào yêu cầu) với kết quả thực tế do chương trình trả về.
Như đã đề cập ở trên, với AI thì điều này không phải lúc nào cũng áp dụng được. Dù hai câu trả lời khác nhau vẫn có thể đều đúng về mặt ý nghĩa. Vì vậy, việc tự động hóa các trường kiểm thử đối với mô hình AI thường phức tạp hơn. Có thể cần chỉ rõ “từ khoá” nào luôn luôn phải có và “điều gì” thì phải không có.
4. Phụ thuộc nhiều vào dữ liệu và ngữ cảnh
Với phần mềm truyền thống, nghiệp vụ thường được định nghĩa rõ ràng. Vì thế, khi các thao tác và giá trị đầu vào giống nhau thì hệ thống sẽ xử lý theo cùng một cách giống nhau.
Nhưng với các hệ thống AI, kết quả không chỉ phụ thuộc vào giá trị đầu vào, mà còn phụ thuộc vào nhiều yếu tố như:
- dữ liệu được sử dụng để huấn luyện mô hình AI
- cách mô hình AI “hiểu ngữ cảnh” của câu hỏi
- cách người dùng “diễn đạt đầu vào” (prompting) cho AI
Ví dụ, hai người dùng có thể hỏi cùng một vấn đề nhưng cách diễn đạt khác nhau:
- Regression testing là gì?
- Giải thích kiểm thử hồi quy
- Giải thích kiểm thử hồi quy cho người mới tìm hiểu về kiểm thử
Điều này khiến phạm vi kiểm thử trở nên khó kiểm soát hơn. Vì rất khó kiểm soát tất cả các biến thể hoặc kết hợp đầu vào. Cùng một ý nghĩa nhưng nhiều cách diễn đạt câu hỏi/câu lệnh khác nhau, v.v… dẫn đến kết quả AI trả về khác nhau.
Do đó, với các hệ thống AI, phạm vi kiểm thử thường rộng hơn rất nhiều so với kiểm thử phần mềm truyền thống.
5. Khó xác định rõ ranh giới đúng – sai
Với phần mềm truyền thống, việc xác định đúng hay sai thường khá rõ ràng. Ví dụ: 2 + 2 = 5 là sai. Hoặc, khi đăng nhập sai mật khẩu nhưng vẫn vào được hệ thống 👉 lỗi.
Nhưng với các hệ thống AI, nhiều trường hợp không có ranh giới rõ ràng giữa đúng và sai.
Ví dụ, AI trả lời đúng về mặt kiến thức, nhưng cách diễn đạt khó hiểu, thiếu thông tin quan trọng, hoặc có thể gây hiểu nhầm nhưng tester không nhận ra (nếu chúng ta không có kiến thức về lĩnh vực cụ thể đó).
Trong trường hợp này, với một vài test case rất khó kết luận: Đây là lỗi hay chỉ là “chưa tốt.” Việc đánh giá chất lượng mang tính chủ quan này, thường dẫn tới việc tranh cãi bug hay không phải bug giữa các bên liên quan như tester và developer hay nhóm phát triển với khách hàng. Hoặc người dùng cho đó là lỗi nhưng chúng ta (là người phát triển phần mềm) cho rằng “có thể chấp nhận được.”
Kết luận
Qua các yếu tố được đề cập ở trên, các bạn có thể thấy việc kiểm thử một mô hình AI hay phần mềm có sử dụng AI, khó hơn kiểm thử phần mềm truyền thống. Một số lý do bao gồm:
- Kết quả thực tế có thể thay đổi
- Kết quả mong đợi không được xác định trước
- Kiểm thử tự động phức tạp hơn
- Phụ thuộc vào dữ liệu và ngữ cảnh
- Khó xác định rõ ranh giới đúng – sai
Vì vậy, khi kiểm thử các hệ thống AI, chúng ta cần thay đổi cách tiếp cận. Thay vì chỉ so sánh với một kết quả mong muốn cụ thể, tester cần tập trung vào đánh giá chất lượng và tính hợp lý của kết quả.
Nói cách khác, tester không còn kiểm tra “đúng hay sai”, mà cần đánh giá “tốt hay chưa đủ tốt”.




