Hiệu quả chi phí tương đối của (Chấp nhận) Phát triển dựa trên thử nghiệm


15

Tôi muốn biết tác động tổng thể của việc lập kế hoạch tài nguyên đối với dự án phần mềm là gì, trong đó các yêu cầu và thiết kế của dự án được thúc đẩy bởi các thử nghiệm chấp nhận tự động và thử nghiệm đơn vị, trái ngược với cách tiếp cận "truyền thống" hơn đối với phát triển phần mềm.

nhập mô tả hình ảnh ở đây

Theo kinh nghiệm của bạn, hiệu ứng tổng thể đối với các yêu cầu tài nguyên để hoàn thành một dự án phần mềm theo TDD, trái ngược với các phương pháp phát triển "truyền thống" hơn là gì? Tôi thấy rõ ràng là chất lượng sẽ tăng lên và lượng không chắc chắn giảm vì việc kiểm tra được thực hiện sớm hơn, nhưng yêu cầu kiểm tra trước có vẻ như sẽ cần nhiều giờ nhà phát triển hơn để hoàn thành. Nỗ lực phát triển tăng bao nhiêu, hay nó thực sự giảm do loại bỏ các lỗi phía trước?

Khách hàng cần bao nhiêu nỗ lực hơn nữa? Họ có phải thay đổi cách họ liên quan đến dự án, đặc biệt nếu họ được sử dụng để thiết kế lớn lên phía trước? Là số giờ cần thiết của khách hàng nói chung tăng, hay nó thực sự giảm?

Tôi sẽ tưởng tượng rằng các ước tính thời gian sẽ rất mơ hồ trong một quy trình TDD lặp đi lặp lại khi bắt đầu một dự án TDD (vì không có Kế hoạch phát triển phần mềm). Có một điểm, giả sử, 20% vào một dự án, trong đó niềm tin tăng đủ để ước tính thời gian và tiền bạc ổn định hơn hoặc ít hơn có thể được cung cấp cho khách hàng?

Lưu ý: Tôi không tìm kiếm ý kiến ​​chủ quan hoặc lý thuyết ở đây, vì vậy xin đừng suy đoán. Tôi đang tìm kiếm nhiều hơn cho trải nghiệm thực tế trong TDD.


Tôi chắc chắn không có dữ liệu trong thế giới thực. Bạn chỉ nhận được ý kiến ​​và lý thuyết chủ quan dựa trên kinh nghiệm thực tế của peoeple.
Euphoric

1
@Euphoric: Tôi đang tìm kiếm những quan sát và thực tế khách quan dựa trên kinh nghiệm thực tế. Xin lỗi tôi đã không làm rõ điều đó. Tuy nhiên, tôi không cần số cứng; Tôi sẽ chấp nhận những ấn tượng chung như: "trong khi thời gian phát triển của chúng tôi tăng đáng kể, chi phí bảo trì của chúng tôi giảm vì phần mềm đáng tin cậy hơn và khách hàng hiểu phần mềm tốt hơn vì họ tham gia thiết kế trong suốt nỗ lực phát triển."
Robert Harvey

2
Vì vậy, đây có phải là một câu hỏi dựa trên ý kiến? Nó chắc chắn nghe giống như một
BЈовић


@ BЈовић: Xem đoạn cuối trong phần câu hỏi của tôi.
Robert Harvey

Câu trả lời:


11

Điều đầu tiên cần phải nói là TDD không nhất thiết phải tăng chất lượng phần mềm (theo quan điểm của người dùng). Nó không phải là một viên đạn bạc. Nó không phải là thuốc chữa bách bệnh. Giảm số lượng lỗi không phải là lý do tại sao chúng tôi làm TDD.

TDD được thực hiện chủ yếu vì nó dẫn đến mã tốt hơn. Cụ thể hơn, TDD dẫn đến mã dễ thay đổi hơn .

Việc bạn có muốn sử dụng TDD hay không phụ thuộc nhiều hơn vào mục tiêu của bạn cho dự án. Đây sẽ là một dự án tư vấn ngắn hạn? Bạn có cần phải hỗ trợ dự án sau khi đi trực tiếp không? Có phải là một dự án tầm thường? Chi phí bổ sung có thể không có giá trị trong những trường hợp này.

Tuy nhiên, theo kinh nghiệm của tôi, đề xuất giá trị cho TDD tăng theo cấp số nhân khi thời gian và tài nguyên liên quan đến một dự án tăng trưởng tuyến tính.

Các bài kiểm tra đơn vị tốt cho các lợi thế sau:

  1. Đơn vị kiểm tra cảnh báo các nhà phát triển về tác dụng phụ ngoài ý muốn.
  2. Các thử nghiệm đơn vị cho phép phát triển nhanh chóng chức năng mới trên các hệ thống cũ, trưởng thành.
  3. Các thử nghiệm đơn vị cung cấp cho các nhà phát triển mới một sự hiểu biết nhanh hơn và chính xác hơn về mã.

Một tác dụng phụ của TDD có thể ít lỗi hơn, nhưng thật không may, kinh nghiệm của tôi là hầu hết các lỗi (đặc biệt là những lỗi khó chịu nhất) thường được gây ra bởi các yêu cầu không rõ ràng hoặc kém hoặc không nhất thiết phải được bao gồm trong vòng thử nghiệm đơn vị đầu tiên.

Để tóm tắt:

Phát triển trên phiên bản 1 có thể chậm hơn. Phát triển trên phiên bản 2-10 sẽ nhanh hơn.


1
Tôi thích sự kết hợp rõ ràng của "mã tốt hơn" khác với việc tăng "chất lượng phần mềm", nghĩa là những thứ mà các lập trình viên đánh giá cao trong mã không nhất thiết là nó làm những gì khách hàng muốn.

1
Không lên kiểm tra chấp nhận trước và kiểm tra đơn vị được cho là để làm rõ các yêu cầu?
Robert Harvey

@RobertHarvey Họ nên nhưng không nhất thiết . Các bài kiểm tra đơn vị và kiểm tra chấp nhận sẽ phản ánh sự hiểu biết của nhà phát triển về các yêu cầu khi chúng được viết. Các nhà phát triển có thể có bất cứ điều gì từ một sự hiểu biết hoàn chỉnh đến không hiểu các yêu cầu khi họ bắt đầu viết phần mềm. Đó là một phần của phương trình phụ thuộc nhiều vào khách hàng và người quản lý sản phẩm hơn bất cứ điều gì khác. Về mặt lý thuyết, các bài kiểm tra sẽ giúp rất nhiều. Trong thực tế, tốt, "nó phụ thuộc".
Stephen

1
Tôi nên làm rõ, chúng ta đang nói về TDD một cách cô lập ở đây, chứ không phải là một triển khai SCRUM kết hợp TDD. Trong sự cô lập, TDD là tất cả về viết bài kiểm tra để bạn viết mã tốt hơn và có thể tái cấu trúc nhanh hơn và an toàn hơn sau này.
Stephen

1
@Stephen: Có lẽ tôi nên nói rõ hơn rằng tôi đang nói về hương vị của TDD kết hợp các bài kiểm tra chấp nhận như là một phần của quy trình thu thập yêu cầu. Tôi đã thêm một hình ảnh cho câu hỏi để làm cho rõ ràng hơn.
Robert Harvey

6

Có một chương trong phần mềm về phát triển dựa trên thử nghiệm, trích dẫn bài báo được thảo luận ở đây .

Nghiên cứu trường hợp được thực hiện với ba nhóm phát triển tại Microsoft và một tại IBM đã áp dụng TDD. Kết quả của các nghiên cứu trường hợp chỉ ra rằng mật độ khiếm khuyết trước khi phát hành của bốn sản phẩm giảm từ 40% đến 90% so với các dự án tương tự không sử dụng thực hành TDD. Theo chủ quan, các đội đã trải qua sự gia tăng 15 trận35% trong thời gian phát triển ban đầu sau khi áp dụng TDD.

Cho dù những kết quả này có thể chung chung với trường hợp của bạn hay không, tất nhiên, điều mà những người đề xuất TDD sẽ tranh luận là hiển nhiên và những người gièm pha TDD sẽ tranh luận là sai sự thật.


4
Vấn đề với nghiên cứu đó là họ đã không kiểm tra mã trước khi điều chỉnh TDD. TDD không phải là một công cụ ma thuật giúp giảm 40-90% số lượng khuyết điểm bằng cách đơn giản áp dụng nó
BЈовић

1
@ BЈовић Tôi không nghĩ họ yêu cầu "ma thuật" ở bất cứ đâu trong tờ giấy đó. Họ cho rằng một số đội đã thông qua TDD, một số đội thì không, họ được giao công việc "tương tự" và một số mật độ khiếm khuyết và thời gian phát triển đã được ghi lại. Nếu họ đã buộc các nhóm không phải TDD viết bài kiểm tra đơn vị dù sao mọi người đều có bài kiểm tra đơn vị, thì đó sẽ không phải là một nghiên cứu có giá trị về mặt sinh thái.

Một nghiên cứu có giá trị sinh thái? Sắp xếp phụ thuộc vào những gì bạn đang đo. Nếu bạn muốn biết liệu viết bài kiểm tra của bạn lên vấn đề trước , thì mọi người cần phải viết bài kiểm tra đơn vị, không chỉ nhóm TDD.
Robert Harvey

1
@robert Harvey đó là một câu hỏi về các biến gây nhiễu, không có giá trị sinh thái. Thiết kế một thí nghiệm tốt liên quan đến việc giảm độ dốc. Ví dụ: nếu nhóm kiểm soát đang viết bài kiểm tra đơn vị bài hoc, mọi người sẽ cho rằng thí nghiệm này không có cơ sở vì nhóm kiểm soát đang hoạt động theo cách không được tìm thấy trong tự nhiên.

2
May mắn thay tôi đã không nói họ đã.

5

Tôi không có bất kỳ tài liệu nghiên cứu hoặc số liệu thống kê nào để cung cấp cho bạn, nhưng tôi sẽ liên quan đến kinh nghiệm của mình khi làm việc trong một nhóm / tổ chức có lịch sử kiểm tra đơn vị từ thấp đến trung bình và không có kiểm tra từ đầu đến cuối, và dần dần di chuyển quán bar đến nơi chúng ta đang ở hiện tại, với nhiều ATDD hơn (nhưng, trớ trêu thay, không phải cách tiếp cận TDD truyền thống).

Cụ thể, đây là cách các mốc thời gian dự án được sử dụng để chơi (và vẫn diễn ra trên các đội / sản phẩm khác trong cùng một tổ chức):

  • Lên đến 4 tuần phân tích và thực hiện
  • 2 tuần thử nghiệm hồi quy, sửa lỗi, ổn định và chuẩn bị phát hành
  • 1-2 tuần sửa chữa các khuyết tật đã biết
  • 2-3 tuần dọn dẹp mã và các vấn đề / hỗ trợ sau sản xuất (lỗi không xác định / mất điện ngoài dự kiến)

Điều này có vẻ như vô lý trên đầu nhưng nó thực sự rất phổ biến, nó chỉ thường bị che dấu trong nhiều tổ chức do thiếu QA hoặc không hiệu quả. Chúng tôi có những người kiểm tra tốt và có văn hóa kiểm tra chuyên sâu, vì vậy những vấn đề này được phát hiện sớm và được khắc phục trước (hầu hết thời gian), thay vì được phép diễn ra từ từ trong suốt nhiều tháng / năm. Chi phí bảo trì 55-65% thấp hơn hơn định mức được chấp nhận phổ biến là 80% thời gian dành cho gỡ lỗi - điều này có vẻ hợp lý, bởi vì chúng tôi đã có một số thử nghiệm đơn vị và các nhóm chức năng chéo (bao gồm cả QA).

Trong lần phát hành sản phẩm mới nhất của nhóm chúng tôi, chúng tôi đã bắt đầu trang bị thêm các bài kiểm tra chấp nhận nhưng họ không hoàn toàn ngớ ngẩn và chúng tôi vẫn phải dựa vào rất nhiều thử nghiệm thủ công. Việc phát hành có phần ít đau đớn hơn những người khác, IMO một phần vì các thử nghiệm chấp nhận khó hiểu của chúng tôi và một phần vì độ bao phủ thử nghiệm đơn vị rất cao của chúng tôi so với các dự án khác. Tuy nhiên, chúng tôi vẫn dành gần 2 tuần cho hồi quy / ổn định và 2 tuần cho các vấn đề hậu kỳ.

Ngược lại, mọi bản phát hành kể từ lần phát hành đầu tiên đó đều có các tiêu chí chấp nhận và kiểm tra chấp nhận sớm, và các lần lặp hiện tại của chúng tôi trông như thế này:

  • 8 ngày phân tích và thực hiện
  • 2 ngày ổn định
  • 0-2 ngày kết hợp hỗ trợ sau sản xuất và dọn dẹp

Nói cách khác, chúng tôi đã tăng từ 55-65% chi phí bảo trì lên 20-30% chi phí bảo trì. Cùng một đội, cùng một sản phẩm, sự khác biệt chính là sự cải tiến tiến bộ và hợp lý hóa các bài kiểm tra chấp nhận của chúng tôi.

Chi phí duy trì chúng là, mỗi lần chạy nước rút, 3-5 ngày cho nhà phân tích QA và 1-2 ngày cho nhà phát triển. Nhóm của chúng tôi có 4 nhà phát triển và 2 nhà phân tích QA, vì vậy (không tính UX, quản lý dự án, v.v.) đó là tối đa 7 ngày làm việc trong số 60, mà tôi sẽ làm tròn 15% chi phí triển khai chỉ để thực hiện mặt an toàn.

Chúng tôi dành 15% cho mỗi giai đoạn phát hành để phát triển các thử nghiệm chấp nhận tự động và trong quá trình này có thể cắt giảm 70% mỗi lần phát hành để thực hiện kiểm tra hồi quy và sửa các lỗi tiền sản xuất và hậu sản xuất.

Bạn có thể nhận thấy rằng dòng thời gian thứ hai chính xác hơn và cũng ngắn hơn nhiều so với dòng đầu tiên. Đó là điều có thể thực hiện được nhờ các tiêu chí chấp nhận và kiểm tra chấp nhận trước mắt, bởi vì nó đơn giản hóa rất nhiều "định nghĩa hoàn thành" và cho phép chúng tôi tự tin hơn nhiều về tính ổn định của bản phát hành. Không có đội nào khác (cho đến nay) đã thành công với lịch phát hành hai tuần một lần, ngoại trừ có lẽ khi thực hiện các bản phát hành bảo trì khá tầm thường (chỉ có lỗi, v.v.).

Một tác dụng phụ thú vị khác là chúng tôi đã có thể điều chỉnh lịch phát hành của mình theo nhu cầu kinh doanh. Một lần, chúng tôi phải kéo dài khoảng 3 tuần để trùng với bản phát hành khác và có thể làm như vậy trong khi cung cấp nhiều chức năng hơn nhưng không mất thêm thời gian để thử nghiệm hoặc ổn định. Một lần khác, chúng tôi phải rút ngắn nó xuống còn khoảng 1 tuần, do ngày nghỉ và xung đột tài nguyên; chúng tôi đã phải đảm nhận công việc phát triển ít hơn, nhưng, như mong đợi, có thể dành ít thời gian tương ứng để thử nghiệm và ổn định mà không đưa ra bất kỳ khiếm khuyết mới nào.

Vì vậy, theo kinh nghiệm của tôi, các thử nghiệm chấp nhận, đặc biệt là khi được thực hiện rất sớm trong một dự án hoặc chạy nước rút và khi được duy trì tốt với các tiêu chí chấp nhận được viết bởi Chủ sở hữu sản phẩm, là một trong những khoản đầu tư tốt nhất bạn có thể thực hiện. Không giống như TDD truyền thống, điều mà những người khác chỉ ra một cách chính xác được tập trung nhiều hơn vào việc tạo mã có thể kiểm tra hơn là mã không có lỗi - ATDD thực sự giúp bắt lỗi nhanh hơn rất nhiều ; đó là tổ chức tương đương với việc có một đội quân thử nghiệm thực hiện kiểm tra hồi quy hoàn chỉnh mỗi ngày, nhưng rẻ hơn.

ATDD sẽ giúp bạn trong các dự án dài hạn được thực hiện theo kiểu RUP hoặc (ugh) Waterfall, các dự án kéo dài 3 tháng trở lên? Tôi nghĩ rằng bồi thẩm đoàn vẫn ra về điều đó. Theo kinh nghiệm của tôi, rủi ro lớn nhất và xấu nhất trong các dự án dài hạn là thời hạn không thực tế và yêu cầu thay đổi. Thời hạn không thực tế sẽ khiến mọi người thực hiện các phím tắt, bao gồm các phím tắt thử nghiệm và những thay đổi đáng kể đối với các yêu cầu có thể sẽ làm mất hiệu lực một số lượng lớn các thử nghiệm, yêu cầu chúng phải được viết lại và có khả năng làm tăng chi phí thực hiện.

Tôi khá chắc chắn rằng ATDD có một khoản tiền tuyệt vời cho các mô hình Agile hoặc cho các nhóm không chính thức Agile nhưng có lịch phát hành rất thường xuyên. Tôi chưa bao giờ thử nó trong một dự án dài hạn, chủ yếu là vì tôi chưa bao giờ tham gia hoặc thậm chí nghe nói về một tổ chức sẵn sàng thử nó trong loại dự án đó, vì vậy hãy từ chối trách nhiệm tiêu chuẩn ở đây. YMMV và tất cả những thứ đó.

PS Trong trường hợp của chúng tôi, không có thêm nỗ lực nào từ "khách hàng", nhưng chúng tôi có Chủ sở hữu sản phẩm toàn thời gian, tận tâm, người thực sự viết các tiêu chí chấp nhận. Nếu bạn đang kinh doanh trong lĩnh vực "tư vấn", tôi nghi ngờ việc người dùng cuối viết các tiêu chí chấp nhận hữu ích sẽ khó khăn hơn rất nhiều . Chủ sở hữu sản phẩm / Giám đốc sản phẩm có vẻ như là một yếu tố khá cần thiết để thực hiện ATDD và mặc dù tôi có thể một lần nữa chỉ nói từ kinh nghiệm của chính mình, tôi chưa bao giờ nghe nói về ATDD được thực hành thành công mà không có ai thực hiện vai trò đó.


Điều này rất hữu ích, cảm ơn. Điều đó không xảy ra với tôi rằng ATTD có thể thay đổi đặc tính của nỗ lực TDD, nhưng nó thực sự có ý nghĩa, đặc biệt là khi bạn nghe về những người có khả năng bật ra phần mềm được viết tốt, tương đối không có lỗi và không có ngân sách nhất thiết phải sử dụng thử nghiệm đơn vị rộng rãi.
Robert Harvey

@RobertHarvey: Tôi nên làm rõ - chúng tôi vẫn tạo các bài kiểm tra đơn vị, không phải là một phần của quy trình TDD. Thông thường, các thử nghiệm chấp nhận đến trước hoặc song song với phát triển ban đầu, sau đó hoàn thành mã, sau đó thử nghiệm đơn vị và tái cấu trúc. Đôi khi tôi đã nghĩ rằng TDD sẽ giúp một số nhà phát triển nhất định viết mã tốt hơn, nhưng tôi không thể sao lưu (chưa). Mặc dù tôi có thể tự nói - tôi thường gặp rất nhiều lỗi và lỗi thiết kế trong mã của riêng tôi chỉ đơn giản là trong quá trình viết bài kiểm tra đơn vị.
Aaronaught

1

Yêu cầu tài nguyên

Theo kinh nghiệm của bạn, hiệu ứng tổng thể đối với các yêu cầu tài nguyên để hoàn thành một dự án phần mềm theo TDD, trái ngược với các phương pháp phát triển "truyền thống" hơn là gì?

Theo kinh nghiệm của tôi, chi phí yêu cầu kiểm tra trả trước ngay lập tức được giảm thiểu bằng cách xác định cả một tiêu chí chấp nhận rõ ràng trước, sau đó viết cho bài kiểm tra. Không chỉ giảm chi phí cho thử nghiệm phía trước mà tôi còn thấy rằng nó thường tăng tốc độ phát triển tổng thể. Mặc dù những cải tiến tốc độ đó có thể bị xóa sổ bởi định nghĩa dự án kém hoặc thay đổi yêu cầu. Tuy nhiên, chúng tôi vẫn có thể đáp ứng khá tốt với những thay đổi đó mà không bị ảnh hưởng nghiêm trọng. ATDD cũng giảm đáng kể nỗ lực của nhà phát triển trong việc xác minh hành vi hệ thống chính xác thông qua bộ kiểm tra tự động của nó trong các trường hợp sau:

  • nhà tái cấu trúc lớn
  • nâng cấp nền tảng / gói
  • di chuyển nền tảng
  • nâng cấp toolchain

Đây là giả định một nhóm đã quen thuộc với quy trình và thực tiễn liên quan.

Sự quan tâm của khách hàng

Khách hàng cần bao nhiêu nỗ lực hơn nữa?

Họ phải tham gia nhiều hơn trên cơ sở liên tục. Tôi đã thấy một sự giảm giá lớn trong đầu tư thời gian trước, nhưng nhu cầu lớn hơn nhiều đang diễn ra. Tôi chưa đo lường được, nhưng tôi khá chắc chắn là một khoản đầu tư thời gian lớn hơn cho khách hàng.

Tuy nhiên, tôi đã thấy mối quan hệ khách hàng được cải thiện đáng kể sau 5 bản demo, nơi họ đang thấy phần mềm của họ dần hình thành. Cam kết về thời gian từ khách hàng giảm đi phần nào theo thời gian khi mối quan hệ được phát triển, mọi người đều quen với quy trình và những kỳ vọng liên quan.

Dự án

Tôi sẽ tưởng tượng rằng các ước tính thời gian sẽ rất mơ hồ trong một quy trình TDD lặp đi lặp lại khi bắt đầu một dự án TDD (vì không có Kế hoạch phát triển phần mềm).

Tôi đã nhận thấy rằng đó thường là một câu hỏi về cách xác định rõ câu hỏi đó và liệu (các) lãnh đạo kỹ thuật có thể rút thẻ (bao gồm cả ước tính thẻ) cho dự án hay không. Giả sử dự án được cấp thẻ tốt và bạn có trung bình vận tốc hợp lý và độ lệch chuẩn, chúng tôi thấy thật dễ dàng để có được ước tính hợp lý. Rõ ràng dự án càng lớn thì càng không chắc chắn, đó là lý do tại sao tôi thường chia một dự án lớn thành một dự án nhỏ với lời hứa sẽ tiếp tục sau đó. Điều này dễ thực hiện hơn nhiều khi bạn đã thiết lập mối quan hệ với khách hàng.

Ví dụ:

"Chạy nước rút" của đội tôi dài một tuần và chúng tôi có mức trung bình và tiêu chuẩn. độ lệch của 14 tuần qua. Nếu dự án là 120 điểm, chúng ta có giá trị trung bình là 25 và tiêu chuẩn. độ lệch 6 thì ước tính hoàn thành một dự án là:

Project Total / (Mean Velocity - (2 * Std. Deviation) = 95% Time Estimate
120           / (25            - (2 * 6             ) = 9.2 weeks

Chúng tôi sử dụng 2 Std. Quy tắc sai lệch cho ước tính độ tin cậy 95% của chúng tôi. Trong thực tế, chúng tôi thường hoàn thành dự án theo tiêu chuẩn đầu tiên. sai lệch, nhưng trên ý nghĩa của chúng tôi. Điều này thường là do tinh chỉnh, thay đổi, vv


Vì vậy, về cơ bản những gì bạn đang nói là TDD cải thiện nỗ lực phát triển bằng cách khuyến khích các bên liên quan thực hiện những việc mà họ nên làm bằng mọi cách, như cung cấp các yêu cầu rõ ràng, có thể hành động và tiêu chí chấp nhận.
Robert Harvey

1
Vâng, không chỉ vậy. Khi dự án tiến triển, sự tham gia tăng lên cho phép cuộc trò chuyện tốt hơn giữa nhà phát triển và các bên liên quan. Nó cho phép những thứ như nhà cung cấp thay thế ít tốn kém hơn vì sự hiểu biết của họ về những gì các bên liên quan muốn được cải tiến hơn nữa. Nó cho phép các bên liên quan thay đổi các yêu cầu sớm hơn khi họ nhận ra những thứ còn thiếu hoặc sẽ không hoạt động nếu không có phản ứng đối kháng như vậy từ nhà phát triển; và không có nhiều kỳ vọng không hợp lý thường đến từ các bên liên quan.
dietbuddha

-1

yêu cầu kiểm tra trước có vẻ như sẽ cần nhiều giờ nhà phát triển hơn để hoàn thành. Nỗ lực phát triển tăng bao nhiêu, hay nó thực sự giảm do loại bỏ các lỗi phía trước?

Điều này thực sự là không đúng sự thật. Nếu các nhà phát triển của bạn đang viết bài kiểm tra đơn vị (và họ nên), thì thời gian sẽ xấp xỉ như nhau, hoặc tốt hơn. Tôi đã nói tốt hơn, vì mã của bạn sẽ được kiểm tra hoàn toàn, và họ sẽ chỉ phải viết mã để đáp ứng các yêu cầu.

Vấn đề với các nhà phát triển là họ có xu hướng triển khai ngay cả những thứ không bắt buộc để làm cho phần mềm càng chung chung càng tốt.

Khách hàng cần bao nhiêu nỗ lực hơn nữa? Họ có phải thay đổi cách họ liên quan đến dự án, đặc biệt nếu họ được sử dụng để thiết kế lớn lên phía trước? Là số giờ cần thiết của khách hàng nói chung tăng, hay nó thực sự giảm?

Điều đó không quan trọng. Bất cứ ai làm các yêu cầu nên làm điều đó tốt nhất có thể.

Nếu bạn làm theo cách phát triển nhanh, thì điều đó không có nghĩa là thiết kế lớn lên phía trước. Nhưng, các yêu cầu, kiến ​​trúc và thiết kế được thực hiện càng tốt - chất lượng mã sẽ tăng lên và thời gian hoàn thành phần mềm sẽ giảm.

Do đó, nếu họ thích làm BDUF hãy để họ làm điều đó. Nó sẽ làm cho cuộc sống của bạn dễ dàng hơn như là nhà phát triển.


1
Theo tôi hiểu, TDD và BDUF thường không tương thích với nhau.
Robert Harvey

3
BDUF thường không tương thích với bất kỳ thực tiễn quản lý phát triển tốt nào. Nhưng nó có thể thực hiện một dự án BDUF theo kiểu TDD. TDD là một kỹ thuật để tạo ra phần mềm chất lượng tốt hơn trong khi BDUF là một kỹ thuật để khơi gợi các yêu cầu. Một kỹ thuật xấu, nhưng dù sao cũng là một kỹ thuật.
Stephen

@RobertHarvey Phải, nhưng nếu họ muốn làm BDUF - đó là lựa chọn của họ. Nếu bạn thực sự làm việc nhanh nhẹn, thì bạn có thể tự do cải thiện thiết kế của họ, và vẫn làm TDD.
BЈовић

Vì vậy, bạn nói rằng nếu tôi viết bài kiểm tra đơn vị, mã của tôi sẽ được kiểm tra hoàn toàn và nếu tất cả các bài kiểm tra vượt qua, điều đó tất nhiên có nghĩa là phần mềm không có lỗi (hoặc ít nhất là tốt hơn). Vì vậy, tôi chỉ cần kiểm tra mọi phương thức của phần mềm của mình, ví dụ: "function testSqr () {int a = 3; assertTrue (mySqr (a) == 9);} chức năng mySqr (int a) {return 9;}"
Dainius

@Dainius Không, đọc lại. Bảo hiểm mã 100% không phải là lỗi miễn phí. Có, bạn cần phải kiểm tra đơn vị mọi phương pháp. Tất nhiên, đơn vị kiểm tra truy cập cơ sở dữ liệu, GUI, vv không có ý nghĩa. Các bài kiểm tra đơn vị không dành cho những người.
BЈовић
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.