Trong nhiều năm, tôi đã hiểu sai rằng tôi không có đủ thời gian để viết bài kiểm tra đơn vị cho mã của mình. Khi tôi viết bài kiểm tra, chúng là những thứ nặng nề, nặng nề, điều đó chỉ khuyến khích tôi nghĩ rằng tôi chỉ nên viết bài kiểm tra đơn vị khi tôi biết chúng là cần thiết.
Sau đó, tôi bắt đầu sử dụng Test Driven Development và tôi thấy đó là một tiết lộ hoàn chỉnh. Bây giờ tôi tin chắc rằng tôi không có thời gian để không viết bài kiểm tra đơn vị .
Theo kinh nghiệm của tôi, bằng cách phát triển với thử nghiệm trong tâm trí, bạn kết thúc với các giao diện sạch hơn, các lớp và mô-đun tập trung hơn và nói chung là RẮN hơn , mã có thể kiểm tra.
Mỗi lần tôi làm việc với mã kế thừa không có kiểm tra đơn vị và phải kiểm tra thủ công một cái gì đó, tôi cứ nghĩ "việc này sẽ nhanh hơn rất nhiều nếu mã này đã có kiểm tra đơn vị". Mỗi lần tôi phải thử và thêm chức năng kiểm tra đơn vị vào mã có độ khớp cao, tôi cứ nghĩ "việc này sẽ dễ dàng hơn nhiều nếu nó được viết theo cách tách rời".
So sánh và đối chiếu hai trạm thử nghiệm mà tôi hỗ trợ. Một cái đã xuất hiện được một thời gian và có rất nhiều mã kế thừa, trong khi cái còn lại thì tương đối mới.
Khi thêm chức năng vào phòng thí nghiệm cũ, thường là trường hợp xuống phòng thí nghiệm và dành nhiều giờ để làm việc với hàm ý của chức năng họ cần và làm thế nào tôi có thể thêm chức năng đó mà không ảnh hưởng đến bất kỳ chức năng nào khác. Mã đơn giản là không được thiết lập để cho phép thử nghiệm ngoại tuyến, do đó, hầu hết mọi thứ phải được phát triển trực tuyến. Nếu tôi đã cố gắng phát triển ngoại tuyến thì tôi sẽ kết thúc với nhiều đối tượng giả hơn là hợp lý.
Trong phòng thí nghiệm mới hơn, tôi thường có thể thêm chức năng bằng cách phát triển ngoại tuyến tại bàn của mình, chỉ loại bỏ những thứ cần thiết ngay lập tức, và sau đó chỉ dành một thời gian ngắn trong phòng thí nghiệm, loại bỏ mọi vấn đề còn lại không được xử lý -hàng.
Để rõ ràng, và vì @ naught101 đã hỏi ...
Tôi có xu hướng làm việc trên phần mềm kiểm soát dữ liệu và kiểm soát thử nghiệm, với một số phân tích dữ liệu đặc biệt, do đó, việc kết hợp TDD với kiểm soát sửa đổi giúp ghi lại cả những thay đổi trong phần cứng thử nghiệm cơ bản và cũng như thay đổi yêu cầu thu thập dữ liệu theo thời gian.
Tuy nhiên, ngay cả trong tình huống phát triển mã khám phá, tôi có thể thấy một lợi ích đáng kể từ việc các giả định được mã hóa, cùng với khả năng xem các giả định đó phát triển theo thời gian như thế nào.