2008-10-06 36 views

Trả lời

9

Thời gian của tôi bằng khoảng thời gian để kiểm tra đơn vị và thời gian cho mã chức năng.

Một số người sẽ xem xét điều này và nói rằng đó là một sự lãng phí thời gian, nhưng nếu lựa chọn duy nhất khác của bạn là chạy ứng dụng và đi qua tất cả các đường dẫn có thể, ứng dụng có thể mất, thì thời gian dành cho thử nghiệm đơn vị là thực sự ít hơn thời gian bạn dành cho thử nghiệm của nhà phát triển. Tất nhiên nếu bạn không làm nhiều thử nghiệm của nhà phát triển, thì bạn sẽ dành thời gian để sửa lỗi phát sinh từ QA.

Dù bằng cách nào thì thời gian viết bài kiểm tra đơn vị thực sự tiết kiệm thời gian từ số tiền tôi sẽ chi cho dự án.

Khi đến lúc duy trì mã (các thay đổi nhỏ, bổ sung nhỏ về chức năng), có thể có sự khác biệt. Nếu mã được thay đổi đã được bao phủ đầy đủ và các thay đổi của bạn không yêu cầu thay đổi đối với các thử nghiệm, thì thời gian của bạn là 0. Nếu không, rõ ràng là không, có thể gần bằng nhau một lần nữa.

Tuy nhiên, tiết kiệm thời gian của bạn trong thời gian thử nghiệm là MUCH lớn hơn; bạn đã tạo các thử nghiệm để bao gồm phần còn lại của mã, vì vậy bạn sẽ phát hiện ra bất kỳ thay đổi ngẫu nhiên nào đang diễn ra từ thay đổi của mình mà không cần bất kỳ mã mới hoặc đi bộ ứng dụng.

6

tôi muốn nói rằng tôi dành khoảng 50% thời gian kiểm tra đơn vị mã hóa. thật khó để đo lường nó tăng trừ từ kinh nghiệm bản thân, nhưng tôi thấy nó có 3 lợi ích chính:

  • buộc bạn phải suy nghĩ về thiết kế của bạn nhiều hơn, và bạn có xu hướng viết mã tốt hơn kết quả là
  • cho phép bạn để tái yếu tố/duy trì nhiều tháng/năm xuống dòng mà không sợ bạn sẽ phá vỡ mọi thứ
  • giảm thời gian dự án tổng thể, vì bạn không lãng phí thời gian của mình để tìm các lỗi tầm thường mà thử nghiệm đơn vị sẽ bắt được
2

Tôi thấy rằng nó thay đổi rất nhiều tùy thuộc vào trên mã bạn đang làm việc - khi viết thứ gì đó từ đầu, thử nghiệm, có thể mất khoảng thời gian tương tự để thực hiện tính năng mà không cần kiểm tra, nhưng bạn tiết kiệm thời gian lâu hơn cho số lượng lỗi sẽ được tìm thấy và bạn có thể duy trì và mở rộng cơ sở mã đó dễ dàng như thế nào. Người ta có thể tranh luận về trường hợp này nhanh hơn khi viết với các bài kiểm tra, khi bạn tránh những khoảnh khắc gãi đầu mà mã không hoạt động như mong đợi và bạn phải sử dụng trình gỡ rối để tìm hiểu điều gì đang diễn ra, thay đổi thiết lập hơn TDD thường sẽ cho phép.

Khi bạn đang cố gắng triển khai các tính năng trên cơ sở mã "cũ" hiện có (như Michael Feathers sẽ xác định kế thừa), thường mất nhiều thời gian hơn để thực hiện tính năng này với các thử nghiệm hơn là không, do số lượng tái cấu trúc cẩn thận phải được thực hiện trước khi viết các bài kiểm tra thường có thể. Trong trường hợp này, các bài kiểm tra viết đơn vị sẽ vẫn mang lại lợi ích lâu dài, nhưng bạn phải suy nghĩ thêm về việc liệu lợi ích dài hạn đó có hợp lý cho chi phí ngay lập tức hay không.

Nói chung, tôi sẽ luôn thúc đẩy một số hình thức kiểm tra tự động, cho dù đơn vị hoặc chức năng, mặc dù chi phí bổ sung cho cơ sở mã kế thừa. Nếu không có nó, bạn có thể thấy mình bị mắc kẹt với một cơ sở mã rất khó duy trì và yêu cầu kiểm tra thủ công liên tục, lặp đi lặp lại để đảm bảo nó tiếp tục hoạt động, với các hồi quy thường xuyên.

Các vấn đề liên quan