Các xét nghiệm có giá trị. Ít nhất, họ ghi lại rằng ai đó đã cân nhắc rằng họ nên dành thời gian viết chúng, vì vậy có lẽ họ đã có một số giá trị với ai đó một lần. Nếu may mắn, chúng sẽ chứa một bản ghi đầy đủ tất cả các tính năng và lỗi mà nhóm đã từng làm việc - mặc dù chúng cũng có thể là một cách để đạt được một số số bao phủ thử nghiệm tùy ý mà không được suy nghĩ cẩn thận. Cho đến khi bạn nhìn vào chúng, bạn sẽ không biết đó là trường hợp nào ở đây.
Nếu hầu hết các bài kiểm tra của bạn vượt qua hầu hết thời gian, thì bạn chỉ cần cắn viên đạn và đầu tư thời gian để tìm ra những bài kiểm tra thất bại đang cố gắng làm gì, và sửa chữa hoặc cải thiện chúng để lần sau công việc sẽ dễ dàng hơn. Trong trường hợp đó, bỏ qua phần Xác định ý định cho từng phần kiểm tra , để có một số lời khuyên về những việc cần làm với một số lượng nhỏ các bài kiểm tra thất bại.
Mặt khác, bây giờ bạn có thể phải đối mặt với bản dựng Đỏ và hàng trăm hoặc thậm chí hàng nghìn bài kiểm tra đã không được thực hiện trong một thời gian và Jenkins đã không còn Xanh trong một thời gian dài. Tại thời điểm này, trạng thái bản dựng Jenkins đã trở nên vô dụng và một chỉ báo chính về các vấn đề với việc đăng ký của bạn không còn hoạt động. Bạn cần khắc phục điều này, nhưng không đủ khả năng để ngăn chặn mọi tiến bộ trong khi bạn dọn dẹp mớ hỗn độn trong phòng khách của bạn.
Để giữ sự tỉnh táo của bạn trong khi thực hiện khảo cổ học cần thiết để xác định giá trị nào có thể được phục hồi từ các thử nghiệm đã thất bại, tôi khuyên bạn nên thực hiện các bước sau:
Tạm thời vô hiệu hóa các bài kiểm tra thất bại.
Có một số cách bạn có thể làm điều này, tùy thuộc vào môi trường của bạn, mà bạn không mô tả rõ ràng để tôi thực sự không thể đề xuất bất kỳ cách cụ thể nào.
Một số khung hỗ trợ khái niệm về những thất bại dự kiến. Nếu là của bạn thì điều này thật tuyệt vời, vì bạn sẽ thấy đếm ngược xem có bao nhiêu bài kiểm tra còn lại trong danh mục này và thậm chí bạn sẽ được thông báo nếu một số trong số chúng bắt đầu vượt qua bất ngờ.
Một số khung hỗ trợ các nhóm thử nghiệm và cho phép bạn chỉ cho Hudson chạy một số thử nghiệm hoặc bỏ qua một nhóm các thử nghiệm. Điều này có nghĩa là đôi khi bạn có thể chạy nhóm thử nghiệm theo cách thủ công để xem liệu có bất kỳ hiện đang đi qua.
Một số khung cho phép bạn chú thích hoặc đánh dấu các bài kiểm tra đơn lẻ bị bỏ qua. Điều này khó hơn để điều hành chúng như một nhóm trong trường hợp này, nhưng điều đó ngăn chúng làm bạn mất tập trung.
Bạn có thể di chuyển các bài kiểm tra đến một cây nguồn thường không có trong bản dựng.
Trong trường hợp cực đoan, bạn có thể xóa mã khỏi ĐẦU của hệ thống kiểm soát phiên bản, nhưng điều này sẽ khiến việc nhận biết khi giai đoạn thứ ba hoàn thành khó khăn hơn.
Mục tiêu là khiến Jenkins đi Green càng sớm càng tốt, vì vậy bạn có thể bắt đầu đi đúng hướng càng sớm càng tốt.
Giữ các bài kiểm tra có liên quan.
Giải quyết để thêm các thử nghiệm mới khi bạn thêm hoặc sửa đổi mã và cam kết giữ tất cả các thử nghiệm vượt qua.
Các thử nghiệm có thể thất bại vì nhiều lý do, bao gồm cả thực tế là các thử nghiệm được viết tốt để bắt đầu. Nhưng một khi bạn có được Jenkins màu xanh lá cây, giữ nó theo cách đó thực sự quan trọng.
Làm quen với việc viết các bài kiểm tra tốt, và làm cho nó trở thành một vấn đề lớn nếu các bài kiểm tra bắt đầu thất bại.
Xác định ý định cho mỗi bài kiểm tra.
Trải qua các bài kiểm tra khuyết tật từng cái một. Bắt đầu với những mô-đun ảnh hưởng đến các mô-đun mà bạn thay đổi thường xuyên nhất. Xác định ý định của bài kiểm tra, và lý do thất bại.
Nó có kiểm tra một tính năng đã bị xóa khỏi cơ sở mã trên mục đích không? Sau đó, bạn có thể xóa nó.
Có phải nó đang bắt một lỗi mà chưa ai nhận thấy? Phục hồi thử nghiệm và sửa lỗi.
Có phải nó thất bại bởi vì nó đang đưa ra các giả định không chính đáng (ví dụ: giả sử văn bản nút sẽ luôn bằng tiếng Anh, nhưng bây giờ bạn đã bản địa hóa ứng dụng của mình cho nhiều ngôn ngữ)? Sau đó tìm ra cách làm cho bài kiểm tra tập trung vào một điều duy nhất và cách ly nó khỏi những thay đổi không liên quan nhất có thể.
Thử nghiệm có mở rộng ra toàn bộ ứng dụng và đại diện cho thử nghiệm Hệ thống không? Sau đó xóa nó khỏi bộ kiểm tra Jenkins chính của bạn và thêm nó vào bộ Regression chạy ít thường xuyên hơn.
Kiến trúc của ứng dụng đã thay đổi ngoài sự công nhận, vì vậy bài kiểm tra không còn có ích gì nữa không? Xóa đi.
Thử nghiệm đã được thêm vào để tăng số liệu thống kê bảo hiểm mã một cách giả tạo, nhưng thực tế không có gì khác hơn là xác nhận rằng mã biên dịch chính xác và không đi vào một vòng lặp vô hạn? Hoặc nếu không, thử nghiệm chỉ đơn giản xác nhận rằng khung mô phỏng đã chọn của bạn trả về kết quả mà bạn vừa nói với nó? Xóa đi.
Do đó, một số thử nghiệm sẽ đứng, một số được sửa đổi, một số được chia thành nhiều phần độc lập, có kích thước khớp cắn và một số được loại bỏ. Miễn là bạn vẫn đạt được tiến bộ với các yêu cầu mới, dành ra một chút thời gian để xử lý nợ kỹ thuật như thế này là điều có trách nhiệm phải làm.