2011-08-26 29 views
5

Gần đây tôi được chỉ định cho một dự án đã ở giữa đường. Đó là môi trường TDD. Mọi người đều tuân theo nguyên tắc đúng của Mã đơn vị Kiểm tra đầu tiên và mã thực hiện sau đó. Nhưng cặp đôi đã làm ngược lại, thực hiện mã đầu tiên và kiểm tra đơn vị sau đó.Cạm bẫy của thử nghiệm sau khi phát triển là gì?

Mặc dù trên một cuộc tranh luận họ nói theo cách tương tự của nó.

Các vấn đề tiềm năng có thể xảy ra nếu mã thực hiện đầu tiên và kiểm tra đơn vị sau được theo sau là gì?

+0

Bạn nhận được như thế nào, một số thử nghiệm đã được viết sau? – zerkms

+0

Vào thời điểm tôi bắt đầu có cơ sở mã đã được viết, và sau đó đã viết Bài kiểm tra Đơn vị cho mã đó. – Sreedhar

+0

nếu bạn không biết điều đó - bạn có nói rằng các thử nghiệm cụ thể đó đã được viết * sau mã * không? – zerkms

Trả lời

14
  • Overengineering - bạn có thể đã viết nhiều mã hơn bạn thực sự cần.
  • Bias - bạn có thể viết các bài kiểm tra kiểm tra việc triển khai của bạn thay vì yêu cầu.
  • Các thử nghiệm sẽ không thúc đẩy thiết kế của bạn - các thử nghiệm có thể báo hiệu các cải tiến về thiết kế. Theo thời gian, thiết kế của bạn có thể trở nên cứng nhắc và ngược lại với những thay đổi.
  • Làm chậm bạn xuống - việc triển khai của bạn có thể có vấn đề về khả năng kiểm tra sẽ chỉ xuất hiện khi bạn cố gắng viết bài kiểm tra của mình. Vào thời điểm đó, bạn có thể có xu hướng kludge một cái gì đó bởi vì bây giờ các thử nghiệm đang đứng trong cách của bạn để thực hiện các tính năng tiếp theo. Cố gắng để đơn vị kiểm tra một blob không thể tin được là bực bội .. thường xuyên hơn bạn sẽ kết thúc với các bài kiểm tra không kỹ lưỡng (kiểm tra những gì là dễ dàng và di chuyển trên).
  • Thử nghiệm có thể không được viết - khi việc triển khai của bạn đã sẵn sàng và bạn đã xác minh nó hoạt động theo cách thủ công, có xu hướng bỏ qua các bài kiểm tra đơn vị nhàm chán và bỏ qua phần thú vị ... viết thêm mã. Theo thời gian, hỗn loạn chưa được kiểm tra.

Nếu không đủ rõ ràng, FTW thử nghiệm đầu tiên!

1

Viết các bài kiểm tra trước và thực hiện sau khi đảm bảo rằng bạn đang viết mã triển khai chắc chắn sẽ vượt qua các bài kiểm tra. Thực hiện đầu tiên và viết mã kiểm thử sau khi chạy rủi ro vốn có mà bạn sẽ phải tái cấu trúc (đôi khi đáng kể) mã thực hiện của bạn để đảm bảo phạm vi kiểm tra chính xác, có thể trở nên đắt đỏ tùy thuộc vào mức độ trễ của các bài kiểm tra đó.

Trải nghiệm cá nhân, tôi thấy năng suất/phương tiện tốt nhất đến từ các nhà phát triển thực hiện các kiểm tra đồng thời với việc triển khai, thực hiện đủ trước để đảm bảo ranh giới giao diện được khóa chính xác và kiểm tra các xét nghiệm sẽ không gây ra việc thiết kế lại/tái cấu trúc chính về phía cuối, nhưng không xem xét thành phần hoàn thành cho đến khi một bộ kiểm tra đơn vị hoàn chỉnh được phân phối.

2

Thử nghiệm trước khi triển khai luôn được khuyến khích. Ngoài việc sửa lỗi thực sự có thể tồn tại trong phần mềm của bạn, nó còn giúp loại bỏ các bit của mã của bạn là cần thiết vì một kỹ sư có thể có xu hướng 'quá mã'.

Điều tôi luôn tự nhủ "Nếu tôi viết phần mềm cho phi công tự động, tôi sẽ làm gì để đảm bảo rằng phần mềm đó sẽ không bao giờ không thành công?" Những người này sẽ làm điều đó ngược lại đặt gia đình họ vào phi công tự động trước khi thử nghiệm phần mềm? Suy nghĩ như thế này giúp đưa ra một cách tiếp cận kỷ luật cho kỹ nghệ phần mềm.

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