Làm cách nào để biết tôi có đủ phạm vi kiểm tra đơn vị để xóa kiểm tra tích hợp không?


15

Tôi đang làm việc trên một hệ thống cũ (ý tôi là nó được viết mà không cần kiểm tra). Chúng tôi đã thử kiểm tra một số hệ thống bằng cách viết các bài kiểm tra tích hợp kiểm tra chức năng từ bên ngoài.

Điều này mang lại cho tôi sự tự tin để cấu trúc lại các phần của mã mà không lo bị hỏng. Nhưng vấn đề là các thử nghiệm tích hợp này yêu cầu triển khai (hơn 2 phút) và nhiều phút để chạy. Ngoài ra, họ là một nỗi đau để duy trì. Mỗi cái bao gồm hàng ngàn dòng mã và khi một trong số chúng bị hỏng, có thể mất hàng giờ để gỡ lỗi tại sao.

Tôi đã viết rất nhiều bài kiểm tra đơn vị cho những thay đổi chức năng này tôi đã thực hiện gần đây, nhưng trước khi tôi cam kết tôi luôn thực hiện một triển khai mới và chạy tất cả các bài kiểm tra tích hợp, để đảm bảo rằng tôi không bỏ lỡ điều gì. Tại thời điểm này, tôi biết các bài kiểm tra đơn vị của mình và một số bài kiểm tra tích hợp đang chồng chéo những gì chúng kiểm tra.

Làm cách nào để biết khi nào các bài kiểm tra đơn vị tốt của tôi bao gồm đầy đủ bài kiểm tra tích hợp xấu để tôi có thể xóa bài kiểm tra tích hợp đó?

Câu trả lời:


18

Các số liệu đơn giản nhất là để hỏi, "khi là lần cuối cùng kiểm tra tích hợp này hợp pháp không?" Nếu đã được một thời gian dài (đã có rất nhiều thay đổi) kể từ khi thử nghiệm tích hợp thất bại, thì các thử nghiệm đơn vị có thể đang làm một công việc đủ tốt. Nếu thử nghiệm tích hợp đã thất bại gần đây, thì có một lỗi không được bắt gặp bởi các thử nghiệm đơn vị.

Sở thích của tôi nói chung sẽ là tăng cường độ mạnh mẽ của các bài kiểm tra tích hợp, đến mức chúng có thể được chạy một cách đáng tin cậy. Nếu họ mất nhiều thời gian để chạy, sau đó chạy chúng qua đêm. Chúng vẫn có giá trị ngay cả khi chúng chỉ thỉnh thoảng chạy. Nếu các thử nghiệm này quá mong manh hoặc yêu cầu can thiệp thủ công, thì có thể không đáng để bạn dành thời gian để duy trì hoạt động và bạn có thể xem xét loại bỏ những thử nghiệm thành công thường xuyên nhất.


3
+1 để đề xuất các bài kiểm tra được tự động hóa vì điều đó dẫn đến câu hỏi rõ ràng là "Tại sao lại hủy bỏ bài kiểm tra tự động?"

1
Vâng, tôi đồng ý với điều này. Tất nhiên, thậm chí điều đó vẫn đến cắn bạn nếu bạn không có phạm vi kiểm tra đơn vị đủ tốt. Chẳng hạn, hiện tại chúng tôi có bộ kiểm thử tích hợp mất khoảng 6 giờ để chạy ... nhưng tôi không nghĩ rằng một bài kiểm tra đã bị xóa do tập trung vào khả năng tương thích của công ty tôi
Earlz

2
Có lẽ tôi nên bắt đầu một câu hỏi mới cho vấn đề này, nhưng bạn có gợi ý rằng bất cứ khi nào một bài kiểm tra tích hợp không thành công tôi nên tìm ra cách viết một bài kiểm tra đơn vị cũng thất bại và khiến cả hai vượt qua?
Daniel Kaplan

2
@tieTYT: Vâng, điều đó hoàn toàn có vẻ là một ý tưởng tốt. Bài kiểm tra đơn vị là tốt; kiểm tra đơn vị cho những thứ mà bạn biết đã bị hỏng trước đó thậm chí còn tốt hơn.
Greg Hewgill

7

Các bài kiểm tra đơn vị không phải là chén thánh của thử nghiệm, chúng chỉ là một công cụ trong số nhiều công cụ nên được sử dụng để kiểm tra một cơ sở mã. Do đó, không có số lượng thử nghiệm đơn vị nào được coi là an toàn để thay thế các thử nghiệm khác. Nếu bạn có một bài kiểm tra tích hợp kém, bạn nên làm việc để làm cho nó một bài kiểm tra tích hợp tốt, không thay thế nó bằng một thứ khác, giống như thay thế cửa trước của bạn bằng một hàng rào chu vi và một cổng.


Nếu dự án này bắt đầu từ đầu sẽ có ý nghĩa hơn với tôi. Nhưng bài kiểm tra tích hợp đầu tiên của tôi là "kiểm tra xem bạn có thể đăng nhập không" và cuối cùng tôi đã thực hiện rất nhiều bài kiểm tra đơn vị "kiểm tra xem bạn có thể đăng nhập không". Kiểm tra tích hợp gặp sự cố mọi lúc nếu bạn thay đổi html. Ví dụ này hoàn toàn bị tước đoạt, nhưng nó không phải là một trường hợp tốt để loại bỏ kiểm tra tích hợp?
Daniel Kaplan

3
@tieTYT: kiểm tra một cái gì đó thông qua giao diện người dùng thường dẫn đến giải pháp rất không ổn định. Tuy nhiên, kiểm tra bởi UI rất quan trọng, đôi khi chỉ là các thử nghiệm thủ công ở đây tạo ra ít nỗ lực hơn là cố gắng tự động hóa thử nghiệm đó và giữ cho nó ổn định. Vì vậy, khi bạn nghĩ rằng đây là trường hợp ở đây, bạn có thể xóa "kiểm tra tích hợp" đó khỏi danh sách kiểm tra tự động và thêm nó vào kế hoạch kiểm tra thủ công của bạn.
Doc Brown

@DanielKaplan có thể cập nhật kiểm tra tích hợp để ổn định hơn không? Nếu đôi khi nó không thành công vì html thay đổi, thì có thể kiểm tra cái gì đó như "tên người dùng xuất hiện trên trang sau khi đăng nhập" chứ không phải cái gì đó cụ thể hơn như "tên người dùng xuất hiện bên trong div này sau khi đăng nhập"
Jen
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.