Làm sao biết một unit test do AI viết thật sự có tác dụng?
Gợi ý trả lời
Người phỏng vấn muốn biết bạn có coi test như một thứ cần được kiểm tra, hay chỉ thấy xanh là yên tâm. Câu trả lời tốt cho thấy bạn hiểu test có giá trị khi nó đỏ lúc code sai.
Ý chính: một test xanh với code đúng chưa chứng minh được gì. Cách kiểm tra là làm hỏng code có chủ đích. Bạn sửa một chỗ nhỏ, như đảo một điều kiện, bỏ một dòng, đổi một hằng số, rồi chạy lại test. Nếu test vẫn xanh thì nó chưa bảo vệ chỗ đó. Kỹ thuật này gọi là mutation testing, và có công cụ làm tự động như Stryker cho JavaScript.
Có thể nêu thêm bốn thói quen:
- Nói rõ điều cần bảo vệ khi nhờ AI viết test, ví dụ "hai người dùng không dùng chung dữ liệu", thay vì chỉ nói "viết test cho file này".
- Đừng tin độ phủ (coverage) một mình. Độ phủ chỉ cho biết dòng code đã chạy qua, không cho biết kết quả có được kiểm tra hay không. Hai bộ test có thể cùng độ phủ 100% mà một bộ bắt được ít lỗi hơn hẳn.
- Đọc từng câu assert. Kiểm tra kiểu "có trả lời" hay "chứa chữ này" rất lỏng. So sánh với kết quả đầy đủ chặt hơn nhiều.
- Thử đúng các lỗi đã từng xảy ra. Mỗi lỗi từng gặp nên có ít nhất một test sẽ đỏ nếu nó quay lại.
Điểm cộng: kể một ví dụ cụ thể, chẳng hạn một bot có test cho tính năng ghi chi tiêu nhưng chỉ thử với một người dùng, nên khi code vô tình dùng chung một danh sách cho mọi người, test vẫn xanh. Chỉ khi thêm test với hai người dùng thì lỗi mới lộ ra.