Một chủ đề định kỳ mà tôi bắt gặp trong sự nghiệp của mình là nhà phát triển mới đến một nhóm và nhanh chóng có sự ngờ vực vốn có của các bộ thử nghiệm tích hợp và đơn vị hiện có.
Trong cuộc phỏng vấn, bạn được ban quản lý nói rằng họ "rất ủng hộ việc kiểm tra đơn vị" và họ công khai khuyến khích điều đó. Họ làm, nhưng tất cả mọi thứ về các bài kiểm tra chỉ là sai. Giống như thực tế là họ đang yêu cầu bảo hiểm 100% khi có phạm vi kiểm tra tích hợp 100% nhưng phạm vi kiểm tra đơn vị lặp lại dưới 10%. Một số vấn đề khác tôi đã tìm thấy:
Không có chỉ dẫn rõ ràng giữa thử nghiệm đơn vị và thử nghiệm tích hợp là gì. Các bài kiểm tra đơn vị và tích hợp được trộn lẫn với nhau trong cùng một lớp.
Kiểm tra tích hợp đã không khai báo phụ thuộc rõ ràng vào dữ liệu động rất cụ thể trên cơ sở dữ liệu của một môi trường cụ thể.
Các thử nghiệm tích hợp phi giao dịch, về cơ bản là các thử nghiệm có thể hoặc không cần phải tự dọn dẹp, đôi khi yêu cầu "chà" cơ sở dữ liệu thủ công để làm cho thử nghiệm có thể lặp lại.
Không chế nhạo bất cứ điều gì, và mã ứng dụng đòi hỏi một cuộc đại tu lớn chỉ để chế giễu là có thể. Nói cách khác, thiết kế mà không cần thử nghiệm trong tâm trí.
Không có quy ước đặt tên rõ ràng để nhanh chóng xem xét tên thử nghiệm và xác định đại khái những thử nghiệm nào đang được thực hiện.
Đây là tất cả để không nói rằng TẤT CẢ các bài kiểm tra là vô ích hoặc xấu, một phần lớn trong số chúng là khá tốt và đáng để giữ, nhưng đôi khi nó cảm thấy giống như vàng. Tôi cố tình tránh chạy thử nghiệm chỉ vì tôi sợ làm hỏng cơ sở dữ liệu cho các trường hợp thử nghiệm hộp đen của mình.
Điều này về cơ bản đã cho tôi một sự ngờ vực vốn có của các bài kiểm tra đơn vị và tích hợp mà tôi chưa từng viết hoặc xem xét cá nhân theo một cách nào đó. Ở một mức độ nào đó nếu bạn không có niềm tin vào chất lượng của bộ thử nghiệm thì nó thực sự không mang lại giá trị gì cho nhóm hoặc dự án.
Bạn làm gì khi thấy mình trong tình huống này? Bạn cảm thấy kế hoạch tấn công tốt nhất là gì để giải quyết chuyện như thế này?
Tất cả các bài kiểm tra có nên được cấu trúc lại trong một nỗ lực hoành tráng trải dài trên các bản phát hành không? Bạn có nên từ bỏ ý tưởng rằng dự án kế thừa này có thể có một ngày bảo hiểm thử nghiệm đơn vị vững chắc?