Giả sử một người có một chương trình tương đối lớn (giả sử 900 nghìn SLOC trong C #), tất cả được nhận xét / ghi chép kỹ lưỡng, được tổ chức tốt và hoạt động tốt. Toàn bộ cơ sở mã được viết bởi một nhà phát triển cấp cao duy nhất không còn làm việc với công ty. Tất cả các mã đều có thể kiểm tra được và IoC được sử dụng xuyên suốt - ngoại trừ một số lý do kỳ lạ họ không viết bất kỳ bài kiểm tra đơn vị nào. Bây giờ, công ty của bạn muốn phân nhánh mã và muốn kiểm tra đơn vị được thêm vào để phát hiện khi thay đổi phá vỡ chức năng cốt lõi.
- Là thêm kiểm tra là một ý tưởng tốt?
- Nếu vậy, làm thế nào người ta thậm chí sẽ bắt đầu một cái gì đó như thế này?
BIÊN TẬP
OK, vì vậy tôi đã không mong đợi câu trả lời đưa ra lập luận tốt cho kết luận ngược lại. Vấn đề có thể nằm ngoài tầm tay của tôi. Tôi cũng đã đọc qua "các câu hỏi trùng lặp" và sự đồng thuận chung là "bài kiểm tra viết là tốt" ... vâng, nhưng không quá hữu ích trong trường hợp cụ thể này.
Tôi không nghĩ rằng tôi ở đây một mình trong việc suy ngẫm các bài kiểm tra viết cho một hệ thống cũ. Tôi sẽ giữ số liệu về thời gian sử dụng và số lần kiểm tra mới gặp sự cố (và số lần họ không thực hiện). Tôi sẽ quay lại và cập nhật điều này một năm hoặc lâu hơn với kết quả của tôi.
PHẦN KẾT LUẬN
Vì vậy, nó chỉ ra rằng về cơ bản là không thể chỉ thêm thử nghiệm đơn vị vào mã hiện có với bất kỳ ngữ nghĩa chính thống nào. Khi mã đang hoạt động, rõ ràng bạn không thể bật đèn đỏ / đèn xanh cho các thử nghiệm của mình, thường không rõ hành vi nào là quan trọng để kiểm tra, không rõ bắt đầu từ đâu và chắc chắn không rõ khi nào bạn kết thúc. Thực sự thậm chí hỏi câu hỏi này bỏ lỡ điểm chính của bài kiểm tra viết ở nơi đầu tiên. Trong phần lớn các trường hợp, tôi thấy việc viết lại mã bằng TDD thực sự dễ dàng hơn so với giải mã các hàm dự định và thêm hồi tố trong các bài kiểm tra đơn vị. Khi khắc phục sự cố hoặc thêm một tính năng mới, đó là một câu chuyện khác và tôi tin rằng đây là thời gian để thêm các bài kiểm tra đơn vị (như một số chỉ ra dưới đây). Cuối cùng, hầu hết các mã được viết lại, thường sớm hơn bạn mong đợi - thực hiện phương pháp này tôi '