Khi sửa lỗi, trước tiên tôi nên viết một bài kiểm tra không thành công với lỗi đã cho, sau đó sửa mã cho đến khi kiểm tra vượt qua. Điều này tuân theo các thực tiễn TDD, và được cho là thực hành tốt, nhưng tôi nhận thấy nó có xu hướng tạo ra các bài kiểm tra mật mã thực sự gần với việc thực hiện.
Chẳng hạn, chúng tôi gặp vấn đề khi một công việc được gửi đi, đạt đến một trạng thái nhất định, bị hủy bỏ và thử lại. Để tái tạo lỗi này, một bài kiểm tra lớn đã được viết với sự đồng bộ hóa luồng trong đó, rất nhiều lời chế giễu và công cụ ... Nó đã thực hiện được, nhưng bây giờ tôi đang cấu trúc lại mã, tôi thấy rất khó để loại bỏ con voi ma mút này, vì nó thực sự sẽ đòi hỏi rất nhiều công việc (một lần nữa) để phù hợp với thiết kế mới. Và nó chỉ thử nghiệm một tính năng nhỏ trong một trường hợp cụ thể.
Do đó, câu hỏi của tôi: làm thế nào để bạn kiểm tra các lỗi khó sinh sản? Làm thế nào để bạn tránh tạo ra những thứ kiểm tra việc thực hiện, và làm tổn thương tái cấu trúc và khả năng đọc?