Làm cách nào để kiểm tra các bài kiểm tra của tôi không bị xóa bởi các nhà phát triển khác?


8

Tôi vừa gặp một vấn đề mã hóa hợp tác thú vị tại nơi làm việc.

Tôi đã viết một số thử nghiệm đơn vị / chức năng / tích hợp và triển khai chức năng mới vào ứng dụng có ~ 20 nhà phát triển làm việc trên nó. Tất cả các bài kiểm tra đã qua và tôi đã kiểm tra mã. Ngày hôm sau tôi đã cập nhật dự án của mình và nhận thấy (tình cờ) rằng một số phương pháp thử nghiệm của tôi đã bị xóa bởi các nhà phát triển khác (kết hợp các vấn đề ở phần cuối của họ). Mã ứng dụng mới không được chạm vào.

Làm thế nào tôi có thể tự động phát hiện vấn đề như vậy? Ý tôi là, tôi viết các bài kiểm tra để tự động kiểm tra xem mã của tôi có còn hoạt động không (hoặc chưa bị xóa), làm thế nào để tôi làm tương tự cho các bài kiểm tra?

Chúng tôi đang sử dụng Java, JUnit, Selenium, SVN và Hudson CI nếu có vấn đề.


1
Tôi thậm chí không chắc chắn làm thế nào bạn "vô tình" xóa toàn bộ dòng mã nếu bạn thực sự thực hiện một thao tác kéo thích hợp -> hợp nhất -> cam kết.
Anon.

@Anon Tôi cũng lưu ý rằng, anh ta nói rằng anh ta đang vội vàng và cần nhanh chóng thực hiện mã của mình, vì vậy anh ta đã không chú ý nhiều đến việc hợp nhất mọi thứ hoặc smth. : - / Dù sao tôi vẫn muốn tự động phát hiện các vấn đề như vậy ở cấp độ CI.
parxier

10
Và người "vội vàng" có thể cần một cuộc nói chuyện nhẹ nhàng từ người quản lý, hành vi đó là lười biếng và không nên chấp nhận.
quick_now

1
Tôi chỉ có thể tưởng tượng điều này sẽ có thể nếu mọi người đang kiểm tra những thay đổi lớn với rất nhiều tệp được sửa đổi trong một thời gian rất dài. Thông thường bạn không nên có sự hợp nhất lớn trong đó thậm chí có khả năng mã bị "mất" ... nghe có vẻ như là nguồn gốc thực sự của vấn đề đối với tôi.
Dean Harding

1
Đây là lý do tại sao một nhà phát triển cá nhân không bao giờ được phép hợp nhất vào trung kế trong các VCS tập trung. Các nhà phát triển lười biếng có xu hướng làm tắc nghẽn những thứ của người khác (tự mình phạm tội).
Chris K

Câu trả lời:


4

Tôi không quá quen thuộc với Hudson cho CI, nhưng công cụ CI của tôi cũng có thể tính toán phạm vi bảo hiểm mã. Nếu bạn có thể viết một quy trình sẽ thông báo cho bạn khi phạm vi bảo hiểm mã giảm, đó sẽ là một dấu hiệu tốt cho thấy một bài kiểm tra đã bị xóa. Nó cũng sẽ cho bạn biết nếu mã mới đã được thêm mà không cần kiểm tra. Không phải những gì bạn đã hỏi về, nhưng tốt đẹp để biết.


3
Tôi đã đề cập đến chính điểm này trong một nhận xét về câu trả lời của Tim: phần trăm bảo hiểm mã của bạn sẽ không bao giờ giảm.
Frank Shearar

Góc tốt trên một số liệu!

Công cụ đó là gì, sự nguy hiểm?
Chris K

@Chris, chúng tôi sử dụng TFS + TeamBuild, mà tôi đã định cấu hình để tính phạm vi bảo hiểm mã trên mỗi Bản dựng.
Marcie

Nó sẽ không hoạt động trong dự án cụ thể này vì hiện tại mức độ bao phủ thử nghiệm khá thấp, vì vậy tôi phải thử ý tưởng của Tim. Nhưng bạn đã cho tôi một giải pháp tốt và tôi nghĩ đó là câu trả lời tốt nhất cho câu hỏi của tôi.
parxier

12

Từ chối trách nhiệm tiêu chuẩn được áp dụng: chúng tôi đang thực hiện một giải pháp kỹ thuật cho một vấn đề xã hội. Tuy nhiên, đây là một vấn đề vệ sinh dự án, vì vậy nó giống như nói nhà vệ sinh là một giải pháp kỹ thuật cho một vấn đề xã hội.

Có một công việc ra khỏi nguồn cấp dữ liệu RSS từ Hudson. Đếm số lượng thử nghiệm trong báo cáo Hudson. Nếu nó giảm, âm thanh báo động. Có chế độ tự động-da-fe 'khi báo thức kêu.

Sự đổ lỗi của cam kết có thể được xác định và trừng phạt. Vấn đề của bạn sẽ biến mất.

Bạn có thể làm cho các vấn đề khác là kết quả của giải pháp này. Nếu chóng mặt vẫn còn, xin vui lòng gặp bác sĩ của bạn.


1
+1: "chúng tôi đang thực hiện một giải pháp kỹ thuật cho một vấn đề xã hội". Đó nên là kết thúc của câu trả lời. Phần còn lại của câu trả lời ít có giá trị hơn một câu.
S.Lott

2
@SLott có, nhưng nếu bạn làm dễ dàng để làm điều đúng, nó sẽ được thực hiện. Chúng tôi đã sử dụng một email tự động cho toàn đội, được kích hoạt bằng cách phá vỡ bản dựng. Nó hoạt động; bạn cẩn thận hơn Cá nhân tôi nghi ngờ sự hữu ích của việc cố gắng giải quyết vấn đề xã hội này. Nếu bạn thành thật xóa điều kiểm tra là được, thì văn hóa công ty đi ngược lại với chất lượng.
Tim Williscroft

Wow, tôi là người Bồ Đào Nha, và tôi không biết auto-da-fé là gì.
R. Martinho Fernandes

Số lượng kiểm tra có thể giảm vì các lý do hợp lệ: tái cấu trúc có thể loại bỏ một lớp và tất cả các kiểm tra đơn vị của nó. Tuy nhiên, vẫn đáng để tìm hiểu lý do tại sao số lượng kiểm tra giảm.
Frank Shearar

@Frank Tôi cho rằng điều gì sẽ quan trọng nếu tần suất kiểm tra giảm vì những lý do hợp lệ so với những lý do không hợp lệ. Nếu đó là lý do chủ yếu hợp lệ, thì báo thức sẽ chỉ bị bỏ qua sau một chút và trở nên vô giá trị. Nếu nó hầu hết không hợp lệ thì nó có thể tốt. Làm thế nào thường xảy ra? Và thực sự, @parxier, nếu nó chỉ xảy ra một lần mà bạn biết, bạn có thể phản ứng quá mức không?
James

2

Phương pháp tổ chức

Có một chính sách tại chỗ sẽ yêu cầu người xóa bài kiểm tra để nói chuyện với người tạo bài kiểm tra. Thông thường, bạn sẽ chỉ xóa các kiểm tra khi khấu hao một số chức năng đang được kiểm tra và điều đó không xảy ra rất thường xuyên.

Cách tiếp cận kỹ thuật

Đây là nhiều hơn về cách tiếp cận kỳ dị kiểm soát nhưng bạn có thể có một thử nghiệm riêng biệt, quét mã nguồn cho sự hiện diện của tất cả các thử nghiệm bạn muốn kiểm tra. Có thể bạn cũng có thể giao diện Hudson và nhận danh sách các bài kiểm tra đã thực hiện.


Công cụ đã bị xóa trong một hợp nhất. Có thể do vô tình, có thể do lười biếng. Chính sách sẽ không làm được gì nhiều ngoài "nhiều hơn" từ quản lý mà mọi người sẽ bỏ qua. Tuy nhiên, việc đốt cháy và thả nổi công khai có thể gây sự chú ý / sarcoff
quick_now

2
@quickly_now: "Công cụ đã bị xóa trong quá trình hợp nhất". Đó nên là một hành vi phạm tội bắn. Bất kỳ tổ chức nào cho phép hành vi này thực sự cần phải loại bỏ rất nhiều người và thay thế họ bằng những người nỗ lực làm điều gì đó hợp lý thay vì xấu xa.
S.Lott

Tai nạn - bạn có thể tha thứ cho nó lần đầu tiên. Lười biếng hoặc độc hại - có - sa thải hành vi phạm tội.
quick_now

Thật khó để giữ cho lớp kiểm tra riêng biệt được cập nhật, nhưng đó là một ý tưởng thú vị, cảm ơn.
parxier

0

Tương tự như câu trả lời của Art ..

Bình luận Bắt đầu bằng cách sử dụng bình luận tốt. Đối với từng phương pháp; đừng quên đặt đầu vào và đầu ra dự kiến, một mô tả ngắn cho các chức năng phức tạp hơn và tên của bạn.

Hướng dẫn Nhưng điều này thực sự nổi bật rằng cần có thêm sự giao tiếp giữa các nhà phát triển. đội. Cần có hướng dẫn để làm việc cùng nhau ... hoặc ít nhất là nói chuyện với proj của bạn. quản lý và yêu cầu anh ta làm rõ điều này trong nhóm.

Sử dụng SVN đúng cách Bạn cũng có thể viết ra các lớp và phương thức của mình và theo dõi chúng .. cũng như khi bạn đang sử dụng SVN, tôi chân thành hy vọng rằng những thao tác xóa này đang được theo dõi dưới dạng thay đổi, ghi chú riêng biệt và có lý do TỐT.

Viết một chương trình đặc biệt, bạn cũng có thể so sánh diff. các tệp trong SVN để theo dõi các thay đổi đối với các phương thức của bạn.


0

Điều tương tự cũng có thể xảy ra với mã thực tế và bạn sẽ không biết cho đến khi bạn nhận thấy thay đổi của mình không còn tồn tại.

Điều đó đang được nói, thật khó để xác định mã bị xóa là một điều xấu, vì rất thường xuyên bạn tự xóa mã / tính năng, v.v. và vì số lượng kiểm tra đó có thể bị giảm cũng như người khác đã đề cập.


Khi mã bị xóa, kiểm tra phá vỡ. Khi kiểm tra bị xóa không có gì phá vỡ.
parxier
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.