Hơn một năm trước tôi đã may mắn có thể nghỉ làm 9 tháng. Tôi quyết định rằng trong thời gian đó tôi sẽ trau dồi kỹ năng C # của mình. Tôi bắt đầu thực hiện một loạt các dự án và buộc mình phải theo TDD.
Đó là một quá trình khai sáng.
Ban đầu thật khó khăn, nhưng qua thời gian, tôi đã học được cách viết mã có thể kiểm tra nhiều hơn (mà, hóa ra, có xu hướng là mã RẮN hơn) và trong quá trình tôi cũng đã mài giũa kỹ năng thiết kế OO của mình.
Bây giờ tôi trở lại lực lượng lao động và tôi nhận thấy điều gì đó kỳ lạ.
Tôi không thích theo TDD.
Tôi thấy TDD làm tôi chậm lại và thực sự làm cho việc thiết kế một ứng dụng sạch trở nên khó khăn hơn.
Thay vào đó, tôi đã áp dụng một cách tiếp cận khác (ồ ạt):
- Chọn một lát dọc của công việc
- Phát triển một nguyên mẫu hoạt động
- Tái cấu trúc cho đến khi mọi thứ đều tốt đẹp và gọn gàng
- Ngồi lại đánh giá cao mã RẮN và mã có thể kiểm tra đẹp mà tôi đã viết.
Bạn có thể nhận thấy rằng bước 1 không phải là "xác định bề mặt công khai của mục tiêu thử nghiệm của tôi" và bước 2 không phải là "thử nghiệm các loại đá ong ra khỏi bề mặt công cộng đã nói". Bạn cũng có thể nhận thấy rằng không có bước nào liên quan đến thử nghiệm. Tôi đang viết mã có thể kiểm tra, nhưng tôi chưa kiểm tra nó ... chưa.
Bây giờ, tôi muốn làm rõ rằng tôi không thực sự từ bỏ bất kỳ loại thử nghiệm nào. Mã tôi đang viết hoạt động . Nó hoạt động vì tôi đang thử nó bằng tay.
Tôi cũng muốn làm rõ rằng tôi cũng không từ bỏ tất cả các thử nghiệm tự động. Đây là nơi quá trình của tôi là khác nhau. Và đây là lý do tại sao tôi hỏi câu hỏi này.
TDD trên lý thuyết. Không trong thực tế.
Quá trình của tôi đã phát triển một chút và tôi đã đạt được sự cân bằng giữa TDD và không có xét nghiệm nào tôi thấy rất hiệu quả và cũng an toàn hợp lý. Nó diễn ra như sau:
- Thực hiện một lát cắt dọc làm việc với tâm trí thử nghiệm, nhưng không viết bất kỳ thử nghiệm nào.
- Nếu xuống đường (ví dụ, một tháng sau), lát cắt đó cần sửa đổi
- Viết Bài kiểm tra đơn vị, Kiểm tra tích hợp, Kiểm tra hành vi, v.v ... đảm bảo lát cắt công việc là chính xác
- Sửa đổi mã
- Nếu lát đó không cần sửa đổi,
- Không làm gì cả
Bằng cách đơn giản chuyển gánh nặng viết bài kiểm tra từ trước khi viết mã sang trước khi sửa đổi mã tôi đã có thể tạo ra nhiều mã làm việc hơn. Và, khi tôi đi loanh quanh để viết các bài kiểm tra, tôi viết ít hơn rất nhiều trong số chúng nhưng bao gồm gần như nhiều mặt bằng (ROI cao hơn).
Tôi thích quá trình này, nhưng tôi lo ngại nó có thể không có quy mô tốt. Thành công của nó xoay quanh các nhà phát triển siêng năng viết bài kiểm tra trước khi họ thay đổi mọi thứ. Và đó dường như là một rủi ro khá lớn. Nhưng, TDD có rủi ro rất giống nhau.
Vì vậy, tôi sẽ đến [BT] DD hell, hay đây là một hình thức phổ biến của mã hóa và thử nghiệm?
Tôi muốn tiếp tục làm việc theo cách này. Tôi có thể làm gì để quá trình này hoạt động lâu dài?
Chú thích:Tôi là nhà phát triển duy nhất cho các dự án của mình và tôi chịu trách nhiệm về mọi thứ: Thu thập yêu cầu, thiết kế, kiến trúc, thử nghiệm, triển khai, v.v. Tôi nghi ngờ đây là lý do tại sao quy trình của tôi hoạt động.
If that slice doesn't need modification
. lizkeogh.com/2012/06/24/beyond-test-driven-development