- Tôi đang nói về các bài kiểm tra đơn vị theo nghĩa TDD. (Không tự động "tích hợp" hoặc những gì bạn muốn gọi là kiểm tra.)
- Mã kế thừa như trong: (C ++) mã mà không cần kiểm tra. (xem: Hoạt động hiệu quả của Michael Feathers với Bộ luật kế thừa )
- Nhưng cũng có mã kế thừa như trong: Mã mà nhóm chúng tôi đã làm việc trong 10-5 năm qua, vì vậy chúng tôi thường có một ý tưởng khá hay về nơi đặt mọi thứ để thay đổi điều gì đó.
- Chúng tôi có các bài kiểm tra đơn vị tại chỗ (thông qua Boost.Test) cho một số mô-đun đến sau hoặc đã phù hợp "tự nhiên" cho các bài kiểm tra đơn vị (bộ chứa ứng dụng cụ thể, công cụ chuỗi, trình trợ giúp mạng, v.v.)
- Chúng tôi chưa có thử nghiệm chấp nhận tự động thích hợp.
Bây giờ, gần đây tôi đã có "niềm vui" để thực hiện 3 tính năng mới đối mặt với người dùng.
Mỗi người trong số đó mất khoảng 1-2 giờ để tăng tốc với các phần mã tôi cần thay đổi, 1-2 giờ để triển khai mã (nhỏ) mà tôi cần thay đổi và 1-2 giờ nữa để đảm bảo ứng dụng chạy chính xác sau đó và đã làm nó là phải làm.
Bây giờ, tôi thực sự thêm ít mã. (Tôi nghĩ rằng một phương thức và một vài dòng gọi cho mỗi tính năng.)
Bao gồm mã này (thông qua bất kỳ phương pháp nào được đề xuất trong WEwLC ), do đó, một bài kiểm tra đơn vị sẽ có ý nghĩa (và không phải là một tautology hoàn chỉnh) sẽ dễ dàng mất thêm 2-4 giờ, nếu không muốn nói là nhiều hơn. Điều này sẽ tăng thêm 50% -100% thời gian cho mỗi tính năng, không có lợi ích ngay lập tức, như
- Tôi không cần kiểm tra đơn vị để hiểu bất cứ điều gì về mã
- Kiểm tra thủ công là cùng một lượng công việc, vì tôi vẫn cần kiểm tra xem mã có được tích hợp chính xác vào phần còn lại của ứng dụng hay không.
Cấp, nếu , sau này, "ai đó" đã đến và chạm vào mã đó, về mặt lý thuyết anh ta có thể có một số lợi ích từ bài kiểm tra đơn vị đó. (Chỉ về mặt lý thuyết, vì hòn đảo mã được thử nghiệm đó sẽ sống trong một đại dương mã chưa được kiểm tra.)
Vì vậy, "lần này" tôi đã chọn không thực hiện công việc khó khăn khi thêm kiểm tra đơn vị: Mã thay đổi để kiểm tra nội dung đó sẽ phức tạp hơn đáng kể so với thay đổi mã để thực hiện chính xác tính năng (và sạch sẽ).
Đây có phải là một cái gì đó điển hình cho mã di sản được kết hợp mạnh mẽ? Tôi có lười biếng không / chúng ta có đặt các ưu tiên sai làm đội không? Hay tôi là người thận trọng, chỉ thử nghiệm những thứ mà chi phí không quá cao?