Một trong số ít những điều mà hầu hết các nhà phát triển phần mềm đồng ý là bạn không nên dựa vào mã để hoạt động chính xác trừ khi bạn kiểm tra nó. Nếu bạn không kiểm tra nó, nó có thể có các lỗi ẩn chỉ khiến bạn phải làm việc nhiều hơn.
Tôi hiểu cách kiểm tra mã thông thường của mình, nhưng tôi nên kiểm tra mã kiểm tra của mình như thế nào để đảm bảo mã có thể tìm và báo cáo lỗi một cách hiệu quả khi chúng có mặt? Cá nhân tôi đã đủ ngu ngốc để viết các trường hợp kiểm tra sai lầm sẽ vượt qua khi họ không nên có, do đó đánh bại mục đích kiểm tra viết của tôi ngay từ đầu. May mắn thay, tôi đã tìm thấy và sửa lỗi kịp thời, nhưng theo câu thần chú thử nghiệm, có vẻ như không có bộ kiểm thử nào được hoàn thành nếu không có bộ kiểm tra riêng để đảm bảo nó hoạt động.
Dường như với tôi, cách tốt nhất để làm điều này là đảm bảo kiểm tra không thành công cho mã lỗi. * Nếu tôi dành 2 phút xen kẽ thêm lỗi vào mã và đảm bảo nó thất bại, tôi nên có mức độ tin cậy chấp nhận được các bài kiểm tra 'làm việc'. Điều này đưa tôi đến câu hỏi thứ hai của tôi: các cách tốt để giới thiệu các lỗi để đảm bảo rằng chúng bị bắt bởi các trường hợp thử nghiệm? Tôi có nên bình luận ngẫu nhiên các câu lệnh, đảm bảo nhánh sai của một lệnh if-else
được chạy bằng cách phủ định điều kiện của nó và thay đổi thứ tự thực thi mã với các tác dụng phụ, v.v., cho đến khi tôi hài lòng các bài kiểm tra của mình sẽ nắm bắt được hầu hếtlỗi thường gặp? Làm thế nào để các nhà phát triển chuyên nghiệp xác nhận rằng các thử nghiệm của họ thực sự làm những gì họ phải làm? Họ chỉ cho rằng các bài kiểm tra hoạt động, hay họ cũng dành thời gian để kiểm tra chúng? Nếu vậy làm thế nào để họ kiểm tra các bài kiểm tra?
Tôi không đề nghị mọi người nên dành quá nhiều thời gian để kiểm tra các bài kiểm tra của họ và sau đó kiểm tra các bài kiểm tra cho các bài kiểm tra của họ rằng họ không bao giờ thực sự viết mã thực sự, nhưng tôi đã làm những điều ngu ngốc đến mức tôi cảm thấy mình có thể hưởng lợi từ một chút về 'thử nghiệm meta', và tò mò về cách tốt nhất để thực hiện nó. : D
* Tôi có thể kiểm tra xem thử nghiệm có vượt qua khi kiểm tra mã 'không có lỗi' hay không, nhưng sử dụng mã làm thông số kỹ thuật cho thử nghiệm có vẻ khá ngược ...