Có bao nhiêu nhà phát triển trước khi tích hợp liên tục có hiệu quả đối với chúng tôi?


34

Có một chi phí liên quan đến tích hợp liên tục, ví dụ: thiết lập, đào tạo lại, các hoạt động nhận thức, ngừng hoạt động để sửa các "lỗi" hóa ra là vấn đề dữ liệu, thực thi tách biệt các kiểu lập trình quan ngại, v.v.

Tại thời điểm nào tích hợp liên tục trả tiền cho chính nó?

EDIT: Đây là những phát hiện của tôi

Thiết lập là CruiseControl.Net với Nant, đọc từ VSS hoặc TFS.

Dưới đây là một vài lý do cho sự thất bại, không liên quan gì đến việc thiết lập:

Chi phí điều tra : Thời gian điều tra xem đèn đỏ có phải là do sự không nhất quán logic thực sự trong mã, chất lượng dữ liệu hoặc một nguồn khác như sự cố cơ sở hạ tầng (ví dụ: sự cố mạng, thời gian chờ đọc từ kiểm soát nguồn, máy chủ bên thứ ba đang giảm, v.v.)

Chi phí chính trị đối với cơ sở hạ tầng : Tôi đã cân nhắc thực hiện kiểm tra "cơ sở hạ tầng" cho từng phương pháp trong quá trình chạy thử. Tôi không có giải pháp nào cho thời gian chờ ngoại trừ việc thay thế máy chủ xây dựng. Băng đỏ cản đường và không có máy chủ thay thế.

Chi phí sửa chữa các bài kiểm tra đơn vị : Đèn đỏ do vấn đề chất lượng dữ liệu có thể là một chỉ báo của bài kiểm tra đơn vị được viết kém. Vì vậy, các thử nghiệm đơn vị phụ thuộc dữ liệu đã được viết lại để giảm khả năng đèn đỏ do dữ liệu xấu. Trong nhiều trường hợp, dữ liệu cần thiết đã được chèn vào môi trường thử nghiệm để có thể chạy chính xác các thử nghiệm đơn vị của nó. Thật ý nghĩa khi nói rằng bằng cách làm cho dữ liệu mạnh mẽ hơn thì thử nghiệm sẽ trở nên mạnh mẽ hơn nếu nó phụ thuộc vào dữ liệu này. Tất nhiên, điều này làm việc tốt!

Chi phí bảo hiểm, nghĩa là viết các bài kiểm tra đơn vị cho mã đã có sẵn : Có vấn đề về phạm vi kiểm tra đơn vị. Có hàng ngàn phương pháp không có bài kiểm tra đơn vị. Vì vậy, một số lượng lớn ngày người sẽ cần thiết để tạo ra chúng. Vì điều này quá khó để cung cấp một trường hợp kinh doanh, nên đã quyết định rằng các thử nghiệm đơn vị sẽ được sử dụng cho bất kỳ phương pháp công khai mới nào trong tương lai. Những người không có bài kiểm tra đơn vị được gọi là "có khả năng hồng ngoại". Một điểm đáng chú ý ở đây là các phương thức tĩnh là một điểm cần thiết để làm thế nào có thể xác định duy nhất cách thức một phương thức tĩnh cụ thể đã thất bại.

Chi phí phát hành bespoke : kịch bản Nant chỉ đi cho đến nay. Chúng không hữu ích đối với các bản dựng phụ thuộc CMS cho EPiServer, CMS hoặc bất kỳ triển khai cơ sở dữ liệu hướng UI nào.

Đây là các loại sự cố xảy ra trên máy chủ bản dựng để chạy thử hàng giờ và bản dựng QA qua đêm. Tôi giải trí rằng những thứ này là không cần thiết vì một bậc thầy xây dựng có thể thực hiện các tác vụ này một cách thủ công tại thời điểm phát hành, đặc biệt, với một ban nhạc một người đàn ông và một bản dựng nhỏ. Vì vậy, các bước xây dựng đơn lẻ chưa chứng minh việc sử dụng CI theo kinh nghiệm của tôi. Điều gì về các bản dựng phức tạp hơn, nhiều bước? Đây có thể là một nỗi đau để xây dựng, đặc biệt là không có một kịch bản tiếng Nam. Vì vậy, ngay cả khi đã tạo ra một, những thứ này không còn thành công nữa. Các chi phí sửa chữa các vấn đề đèn đỏ vượt xa lợi ích. Cuối cùng, các nhà phát triển đã mất hứng thú và đặt câu hỏi về tính hợp lệ của đèn đỏ.

Đã cho nó một sự cố gắng công bằng, tôi tin rằng CI là đắt tiền và có rất nhiều công việc xung quanh các cạnh thay vì chỉ hoàn thành công việc. Đó là hiệu quả chi phí hơn để sử dụng các nhà phát triển có kinh nghiệm, những người không tạo ra một mớ hỗn độn của các dự án lớn hơn là giới thiệu và duy trì một hệ thống báo động.

Đây là trường hợp ngay cả khi những nhà phát triển rời đi. Sẽ không có vấn đề gì nếu một nhà phát triển giỏi rời đi vì các quy trình mà anh ta tuân theo sẽ đảm bảo rằng anh ta viết các thông số kỹ thuật yêu cầu, thông số kỹ thuật thiết kế, tuân thủ các nguyên tắc mã hóa và nhận xét mã của mình để có thể đọc được. Tất cả điều này được xem xét. Nếu điều này không xảy ra thì trưởng nhóm của anh ta không làm việc của mình, điều này nên được người quản lý của anh ta chọn và cứ thế.

Để CI hoạt động, việc viết các bài kiểm tra đơn vị, cố gắng duy trì phạm vi bảo hiểm đầy đủ và đảm bảo cơ sở hạ tầng hoạt động cho các hệ thống khá lớn là không đủ.

Điểm mấu chốt: Người ta có thể đặt câu hỏi liệu việc sửa nhiều lỗi trước khi phát hành có được mong muốn từ quan điểm kinh doanh hay không. CI liên quan đến rất nhiều công việc để nắm bắt một số lỗi mà khách hàng có thể xác định trong UAT hoặc công ty có thể được trả tiền để sửa chữa như một phần của thỏa thuận dịch vụ khách hàng khi hết thời hạn bảo hành.


13
Nó có thể có lợi ngay cả đối với một nhóm. Đặc biệt là nếu bạn đã có một bộ kiểm tra chạy dài, sẽ tốt hơn nhiều khi tự động nhận kết quả của quá trình xây dựng và chạy thử qua đêm so với thực hiện thủ công mọi lúc.
SK-logic

3
@Carnotaurus, bản sao cục bộ của kho git từ xa được loại bỏ thời gian chờ khỏi kiểm soát nguồn. Các vấn đề về mạng - để xây dựng sản phẩm? Bây giờ, thực sự ...

3
@Carnotaurus đèn đỏ do chất lượng dữ liệu hoặc cơ sở hạ tầng là một mô hình của các thử nghiệm mong manh . Cũng xem như vậy: quản lý-bảo trì-gánh nặng của đơn vị kiểm tra
k3b

1
Một bài kiểm tra càng phụ thuộc vào các khía cạnh bên ngoài thì nó càng dễ vỡ. Ví dụ: Nếu thử nghiệm chỉ thành công nếu XY của khách hàng trong cơ sở dữ liệu thì thử nghiệm nếu dễ vỡ trừ khi thiết lập thử nghiệm đảm bảo rằng điều kiện tiên quyết này tồn tại bằng cách chèn chính dữ liệu nếu cần thiết.
k3b

6
"Điểm mấu chốt: Tại sao tạo ra các sản phẩm hoạt động khi chúng tôi có thể khiến người khác trả tiền cho chúng tôi để sửa nó, vì không phải là họ mong đợi phần mềm hoạt động ngay từ đầu"? Nó có thể không đáp ứng định nghĩa pháp lý, nhưng điều đó nghe có vẻ như gian lận đối với tôi.
Chris Pitman

Câu trả lời:


43

Thiết lập động cơ CI giống như cài đặt chuông báo cháy trong nhà.

Trong tâm trí tôi, lợi ích không tương quan với nhiều nhà phát triển, nhưng với cơ sở mã lớn. Công cụ CI tích cực làm tất cả công việc nhàm chán mà bạn không muốn tự làm và thực hiện nó mọi lúc.

Nếu bạn phá vỡ một mô-đun từ xa mà bạn đã không chạm vào trong một thời gian dài, bạn sẽ được thông báo ngay lập tức. Không chỉ biên dịch khôn ngoan, mà còn theo chức năng nếu bạn đã thiết lập các bài kiểm tra đơn vị.

Cũng lưu ý rằng nếu bạn để CI-engine thực hiện tất cả các công việc nhàm chán, bao gồm thiết lập trình cài đặt, v.v., bạn không phải thực hiện thủ công. Bạn chỉ có thể kiểm tra nguồn của mình và chờ sản phẩm hoàn chỉnh được xây dựng ở vị trí tiêu chuẩn. (EDIT: Công cụ CI cũng hoạt động trong môi trường được xác định rõ, tránh mọi thiết lập cụ thể của nhà phát triển, đảm bảo khả năng tái tạo)

Đây cũng là một phần của đảm bảo chất lượng.


EDIT: Sau khi viết ở trên, tôi đã có kinh nghiệm với công cụ xây dựng Maven cho Java. Về cơ bản, điều này cho phép chúng tôi giữ cấu hình CI hoàn chỉnh bên trong dự án (với pom.xml) giúp việc duy trì cài đặt CI và / hoặc di chuyển sang công cụ CI khác đơn giản hơn nhiều.


1
@Carnotaurus, trong trường hợp đó, đèn đỏ cũng đang được sử dụng cho các lỗi thoáng qua. Âm thanh như một giới hạn trong động cơ CI bạn đang sử dụng.

2
@Carnotaurus theo kinh nghiệm của tôi, công việc được thực hiện để ghi chép kỹ lưỡng mọi khía cạnh của mọi thứ liên quan, ví dụ như thực hiện một bản phát hành và sau đó nói là phát hành một số lần, lớn hơn việc nắm bắt quy trình công việc trong một tập lệnh ant hoặc maven mà robot có thể thực hiện bất kỳ số lần. Robot cho biết cũng hoạt động trong môi trường phòng sạch sẽ đảm bảo rằng các bản dựng có thể tái tạo.

1
Lưu ý rằng việc phá vỡ mà tôi đang tìm kiếm không phải là thất bại trong các bài kiểm tra đơn vị mà là các chương trình thực tế chúng tôi gửi vẫn có thể xây dựng. Nó không còn quan trọng nữa khi chúng tôi chuyển sang tạo tác maven thay vì biên dịch mọi thứ cho mỗi bản phát hành, nhưng điều quan trọng cần biết là bản dựng có đầy đủ chức năng. Chúng ta chỉ cần phần Triển khai liên tục.

2
@Carnotaurus: Tôi không nói về một hệ thống báo động. Nếu các thử nghiệm thất bại, bản vá không được tích hợp vào kho lưu trữ chính (tất cả), đảm bảo rằng bất cứ khi nào bạn thanh toán / sao chép, bạn sẽ có được một bản sao hoạt động đầy đủ và có thể bắt đầu làm việc ngay lập tức. Bây giờ, tôi đồng ý với bạn rằng các bài kiểm tra có thể khó viết và duy trì ... nhưng tôi đã làm việc với và không có bài kiểm tra, và tôi thấy một sự cải thiện chất lượng rõ ràng với chúng. Vậy câu hỏi là: tự động hay không? Theo kinh nghiệm của tôi, mất nhiều thời gian để kiểm tra thủ công hơn là viết kịch bản tự động hóa (nhưng tôi làm việc trong một tập đoàn lớn với các công cụ cho việc đó).
Matthieu M.

5
" Rất nhiều công việc để nắm bắt một số lỗi mà công ty sẽ được trả tiền để sửa chữa như một phần của thỏa thuận dịch vụ khách hàng " - trong trường hợp đó bạn có động cơ kinh tế KHÔNG sản xuất phần mềm với càng ít lỗi càng tốt, và trong trường hợp đó tất cả điều này không áp dụng cho bạn.

33

Không phải có bao nhiêu nhà phát triển, mà là cần bao nhiêu bước để đi từ 1 đến n (bao gồm), trong đó 1 & n là ...

1: Kiểm tra mã

n: có các gói có thể cài đặt \ có thể triển khai

Nếu n <2 bạn có thể không cần CI
khác, bạn cần CI

Cập nhật
Từ việc đọc kết quả của bạn, tôi chỉ có thể kết luận rằng bạn đã tiếp cận CI từ sai hướng và vì những lý do sai.


1
+1 - Tôi có khá nhiều thứ tôi có thể thêm vào ở trên - nhưng điều này rất gần với cốt lõi của lý do tại sao tôi thích CI ... không chỉ vì những gì nó làm mà còn cho những gì nó yêu cầu bạn làm để làm cho nó công việc (những yêu cầu đó là những điều bạn thực sự nên làm dù sao).
Murph

2
@murph: Yup, và nó mang lại một số lợi thế nhỏ như 1) biết những gì trong kho lưu trữ của bạn sẽ xây dựng, 2) xây dựng một lần nhấp, 3) có thể phát hành phiên bản trong một thông báo khoảnh khắc và hơn thế nữa
Binary Worrier

Vì vậy, thật công bằng khi nói rằng nó phụ thuộc vào độ phức tạp của những gì sẽ được phát hành, được đo bằng số bước để triển khai là có thể "kiểm tra" các lớp riêng biệt không?
CarneyCode

1
@Carnotaurus: Xin lỗi bạn đời, nhưng tôi không chắc tôi biết bạn đang cố nói gì. CI không có gì để làm với thử nghiệm. Có, bạn có thể - và nên - chạy thử nghiệm đơn vị như một phần của bản dựng, nhưng chúng không nên phụ thuộc vào bất cứ thứ gì không được thiết lập như một phần của thử nghiệm. Tuy nhiên, CI không hỗ trợ thử nghiệm. Một trong những - nhiều - lợi ích của CI là nó cho phép nhóm QA có thể nhận ngay những thay đổi mã mới. CI = Khả năng phát hành ngay lập tức
Nhị phân nhị phân

1
@BinaryWorrier - Tôi nghĩ rằng bước 1 đang kiểm tra mã;)

10

Nó có thể là giá trị nỗ lực ngay cả đối với một nhóm của một. Điều này đặc biệt đúng khi bạn đang phát triển mã nền tảng chéo và bạn cần đảm bảo rằng những thay đổi của bạn sẽ hoạt động trên cả hai nền tảng. Ví dụ, trình biên dịch C ++ của Microsoft chấp nhận nhiều hơn GCC, vì vậy nếu bạn phát triển trong Windows nhưng cũng cần hỗ trợ Linux, việc có một hệ thống CI cho bạn biết khi nào bản dựng của bạn bị hỏng trên Linux là một trợ giúp rất lớn.

Một số hệ thống CI khá dễ cài đặt, do đó, chi phí không quá lớn. Hãy thử Jenkins hoặc Hudson chẳng hạn.


Tôi đã không xem xét một kịch bản đa nền tảng. Nếu các trình biên dịch khác nhau là cần thiết để tạo các bản dựng khác nhau thì có một trường hợp mạnh cho CI - hãy sử dụng một upvote.
CarneyCode

4

Như bạn nói có một chi phí đầu tư để thiết lập và duy trì hoạt động.

Nhưng câu hỏi về điểm hòa vốn ở đâu không phải là chức năng của bao nhiêu người bạn có trong nhóm của bạn, mà là một chức năng về độ dài của dự án của bạn.

Phải nói rằng, có một phần chi phí thiết lập mà bạn có thể sử dụng trong tất cả các dự án trong tương lai của mình, vì vậy về lâu dài, chi phí trên không có thể bằng không.


Vậy độ dài của dự án (quy mô dự án) có quan trọng đối với bạn CI không? Tôi đã tìm thấy các báo động sai là rất tốn kém.
CarneyCode

Có, bạn cần có thời gian để trả lại chi phí thiết lập và học tập. Về lý thuyết, bạn nên theo thời gian tìm hiểu làm thế nào để loại bỏ các báo động sai.
Stephen Bailey

Vâng, đây là lý thuyết
CarneyCode

Vâng, không, thực tế của nó. Theo thời gian, bạn ghi chú những bài kiểm tra nào dễ vỡ và bài kiểm tra nào không, và bạn không quá lo lắng nếu bài kiểm tra dễ vỡ của bạn bị phá vỡ trừ khi chúng phá vỡ nhiều lần liên tiếp. Bạn viết các bài kiểm tra riêng biệt, mạnh mẽ hơn khi bạn tìm hiểu cách và bạn để bảo hiểm kế thừa xây dựng theo thời gian thay vì thực hiện tất cả cùng một lúc. Trong thực tế, CI không phải là viên đạn bạc, quá trình thay đổi của nó mất nhiều thời gian và cuối cùng dẫn đến phần mềm ít lỗi hơn.
philosodad

3

Tôi đã thiết lập Jenkins trong tuần này để xây dựng một dự án .NET nhỏ mà tôi đang làm việc. Tôi đã tích hợp nó với kiểm soát nguồn Git của mình để nó kích hoạt bản dựng trên mỗi cam kết. Tôi tích hợp các bài kiểm tra đơn vị vào bản dựng. Tôi đã tích hợp phân tích tĩnh dưới dạng vi phạm FxCop và StyleCop.

Bây giờ mỗi khi tôi đăng nhập, nó sẽ kiểm tra tất cả mã của tôi, xây dựng nó, tăng số phiên bản trên tất cả các hội đồng, kiểm tra nó, phân tích nó cho các vi phạm FxCop và StyleCop, lưu trữ bản dựng và ghi lại kết quả trong một số biểu đồ. Tôi có khả năng hiển thị theo thời gian kết quả kiểm tra và vi phạm.

Làm điều đó từ đầu mất một giờ hoặc lâu hơn (có thể là một ngày với Google nếu bạn chưa làm điều đó trước đây). Nó không có chi phí vì tất cả các công cụ có sẵn miễn phí.

Nếu, khi và khi dự án xây dựng, tôi có một cơ sở hạ tầng chất lượng cao sẽ phát triển cùng với nó miễn phí. Nếu hoặc khi các nhà phát triển mới tham gia dự án, tôi có thể nhận được toàn bộ khả năng hiển thị về công việc của họ và tác động của họ đối với dự án mà không mất phí.

Vì vậy, kịch bản duy nhất tôi có thể thấy CI không có giá trị trong khi đó là cho một dự án sẽ mất một ngày hoặc sau đó không bao giờ được xem xét lại, hoặc một ngôn ngữ không có công cụ hiện có / miễn phí và chi phí để có được chúng không cân xứng với công việc.


Như tôi đã nói, đây là bài kiểm tra đơn vị để bao gồm mã kế thừa có chi phí lớn. Ngoài ra, chúng tôi cũng không nói về một đội một người đàn ông ở đây ... Tôi đánh giá cao những người đứng đầu về Jenkins.
CarneyCode

1
Với giá trị của nó, tôi đã thu được lợi ích đáng kể từ việc chạy máy chủ CI mà không cần bất kỳ thử nghiệm nào - chỉ từ sự tự tin trong các bản dựng sạch và tính sẵn có của các gói triển khai.
Murph

1

Nếu bạn có thể xác minh tất cả các khía cạnh của dự án của bạn sau mỗi thay đổi, thì bạn không cần CI.

Trong tất cả các trường hợp khác, đó là một chiến thắng ròng.


Tôi nghĩ rằng đây là nơi tôi cũng đến. Nó rẻ hơn nhiều quá.
CarneyCode

Bạn có ý nghĩa gì khi xác minh trong trường hợp này? Nếu nó là tự động, xảy ra thường xuyên nhất có thể, và giúp xác định sự trượt dốc & vượt quá tinh thần, thì tôi sẽ làm tất cả. :-)
William Payne

1

Chi phí tối thiểu. Tôi muốn nói với một người đàn ông dự án nó sẽ hữu ích. Một khi bạn đạt được hai nó là vô giá.

Tôi đồng ý rằng đối với các dự án của một người nếu bạn có "xây dựng / xác minh một bước" thì bạn có thể ổn với việc tích hợp liên tục, nhưng trong những trường hợp đó, bạn đã thực hiện hầu hết công việc khó khăn để thiết lập CI, vì vậy cũng có thể chỉ cần đặt nó trong một hệ thống chính thức (CC, Hudson, TeamCity, v.v.).


Ý bạn là không có CI?
CarneyCode

1

Câu hỏi, khi nào CI trả tiền cho chính nó, là một câu hỏi khó trả lời cho một dự án mới.

Trên một dự án hiện có, nó dễ nhìn hơn nhiều. Nếu bạn tìm thấy một lỗi nghiêm trọng tại phần phát triển của chuỗi cung ứng, bạn biết rằng vấn đề đó tồn tại ở thời điểm sớm nhất có thể. Chi phí sửa chữa đó là thấp nhất. Nếu vấn đề đó tồn tại trong bất kỳ môi trường nào trên sự phát triển, chi phí của bạn sẽ cao hơn.

Bây giờ, quản lý có thể quyết định phát hành với một lỗi, nhưng đó là một rủi ro kinh doanh. Ít nhất bây giờ nó có thể được giảm thiểu thông qua đánh giá rủi ro đó, thay vì các cuộc gọi điện thoại / hoảng loạn vào đêm khuya, nếu chúng được lập hóa đơn ở mức giá hàng giờ, cuối cùng sẽ trở nên đắt đỏ.

Một điều khác để xem xét về chi phí. Bộ phận QA của bạn như thế nào? Có phải là thử nghiệm thủ công? Nếu bạn đi CI, bạn có thể giảm chi phí QA tổng thể bằng cách tự động hóa các tập lệnh đó với hộp dev của bạn. Bạn có thể giảm số lượng người QA hỗ trợ dự án của bạn bằng cách cho họ tham gia vào giai đoạn CI.


1
Để thay thế một bài kiểm tra hồi quy thủ công bằng một số bài kiểm tra tự động UI mất khá nhiều thời gian và kỹ năng. Trong một công ty, một chap đã viết khoảng 40% bài kiểm tra và rời công ty. Vài năm sau, các bài kiểm tra vẫn chưa được viết. Tôi cá rằng đây là điển hình.
CarneyCode

Không, nó không điển hình.
quant_dev

Tôi chưa thấy nhiều bằng chứng phản bác
CarneyCode

Nếu bạn viết các bài kiểm tra tích hợp / chấp nhận bằng DSL ngôn ngữ tự nhiên như Gherkin, bạn có thể dễ dàng dịch bài kiểm tra tự động sang thủ công. Vì vậy, tôi không coi đó là một vấn đề.
Mike Cornell

@Carnotaurus - Tôi nghĩ đó là điển hình. Tôi cũng đã nhìn thấy nó hai lần. UI kiểm tra tự động là khó khăn.
Rocklan

1

CI luôn luôn luôn có giá trị: Cảm giác an toàn mà nó mang lại cho bạn cho phép bạn làm việc với tốc độ nhanh hơn khả năng khác. Vấn đề mà bạn có dường như xoay quanh các bài kiểm tra đơn vị. Tôi đồng ý rằng các bài kiểm tra đơn vị rất tốn kém, nhưng cũng nghĩ rằng (đối với nhiều thứ) chúng là lựa chọn tồi tệ nhất mà chúng ta có. Cá nhân, và đối với các loại hệ thống mà tôi có xu hướng hoạt động, tôi thề bằng các thử nghiệm cấp hệ thống hoạt động trên sự kết hợp của các trường hợp bệnh lý trong thế giới thực và (có thể tổng hợp); Nó rẻ hơn so với các bài kiểm tra đơn vị, và đi vào những góc khó tiếp cận trong vũ trụ khái niệm của bạn: "Những ẩn số chưa biết" của Donald Rumsfeld.


Tôi thích một chút về các bài kiểm tra UI cấp hệ thống. Phần lớn các thử nghiệm bị mất trong sương mù của các thử nghiệm đơn vị về chất lượng và phạm vi nghi vấn.
CarneyCode

Bảo hiểm là một câu hỏi về tâm lý con người cũng; chúng ta có một xu hướng bẩm sinh để viết các bài kiểm tra cho những trường hợp mà chúng ta đã nghĩ đến. Đó là vì lý do này mà phải được chứng nhận ở một mức độ SIL cao, kiểm tra đơn vị cần phải được viết bởi một nhóm riêng biệt từ đó mà phát triển hệ thống được thử nghiệm, và thậm chí sau đó, có nhiều trường hợp & những tình huống mà rõ ràng cho tất cả mọi người chỉ khi nhìn lại. Kiểm tra nghiêm ngặt phạm vi bảo hiểm mã là cần thiết; nhưng cực kỳ khó khăn và tốn kém.
William Payne

... Do đó, lợi ích mà bạn có được bằng cách ném những thứ linh tinh nhất mà bạn có thể tìm thấy vào hệ thống ở cấp cao nhất và xem điều gì xảy ra ... :-)
William Payne

1
+1 - Hoàn toàn đồng ý. Một số phần của hệ thống không thể kiểm tra được đơn vị (tức là các cạnh như tại cơ sở dữ liệu). Chắc chắn bạn có thể giả định db, nhưng điều đó khiến mã nói chuyện với db chưa được kiểm tra. Tại một số điểm bạn cần viết một số bài kiểm tra trong thế giới thực tích hợp các hệ thống của bạn và nói chuyện với các hệ thống khác. Khi bạn làm điều đó, bạn luôn tìm thấy các lỗi mà bạn đã bỏ lỡ trong thế giới sạch sẽ ấm cúng của bài kiểm tra đơn vị và khung mô phỏng (LINQ to SQL nảy ra trong tâm trí).

Trên thực tế, gần đây tôi đã phát hiện ra một thử nghiệm thú vị về thử nghiệm fuzz có thể đổi lấy thử nghiệm đơn vị: jester.sourceforge.net
William Payne

0

Luôn luôn sử dụng nó, bất kể quy mô của đội. Nếu đó chỉ là bạn chẳng hạn, ai biết được, bạn có thể đang mã hóa từ máy tính xách tay của bạn tại starbucks sau đó tiếp tục từ hệ thống cowier của bạn ở nhà?

Chi phí thực sự không tệ.


0

Một. Vâng, một là đủ để bắt đầu sử dụng tích hợp liên tục.


0

Đây không phải là vấn đề của bao nhiêu nhà phát triển, mà là

a. Bao nhiêu thời gian bạn tiết kiệm bằng cách sử dụng tự động hóa và tần suất.

  • Thời gian lưu trên tòa nhà sau khi tích hợp, chạy thử nghiệm tự động và tạo thiết lập * tần suất đăng ký = phần trăm thời gian được lưu.

b. Có bao nhiêu phiên bản / chi nhánh / sản phẩm bạn có.

  • Nếu bạn có một nhà phát triển làm việc trên hai chi nhánh khác nhau thì thời gian tiết kiệm được nhân đôi, vì mỗi chi nhánh sẽ yêu cầu xây dựng, thử nghiệm và đóng gói.
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.