Tôi thực sự thích câu trả lời của @ RevBingo vì anh ấy gợi ý rằng cuộc đấu tranh hướng tới 100% có thể khiến bạn dọn dẹp hoặc xóa mã không sử dụng. Những gì tôi chưa thấy trong các câu trả lời khác là ý thức khi bạn cần bảo hiểm cao và khi bạn không. Tôi đã đâm sau khi bắt đầu này. Tôi nghĩ rằng việc thêm chi tiết vào biểu đồ như thế này sẽ là một việc theo đuổi hữu ích hơn là tìm một số bao phủ thử nghiệm phù hợp với tất cả các mã.
100%
Đối với API công khai, như Bộ sưu tập java.util, không được kết hợp với Cơ sở dữ liệu và không trả về HTML, tôi nghĩ rằng phạm vi bảo hiểm 100% là mục tiêu bắt đầu cao cả, ngay cả khi bạn giải quyết 90-95% do thời gian hoặc khác ràng buộc. Việc tăng phạm vi kiểm tra sau khi bạn là tính năng hoàn chỉnh buộc mức độ xem xét chi tiết hơn so với các loại đánh giá mã khác. Nếu API của bạn hoàn toàn phổ biến, mọi người sẽ sử dụng nó, phân lớp nó, giải nén nó, v.v. theo những cách bạn không thể mong đợi. Bạn không muốn trải nghiệm đầu tiên của họ là tìm lỗi, hoặc giám sát thiết kế!
90%
Đối với mã cơ sở hạ tầng kinh doanh, có cấu trúc dữ liệu và trả về cấu trúc dữ liệu, 100% vẫn có thể là mục tiêu khởi đầu tốt, nhưng nếu mã này không đủ công khai để mời nhiều người sử dụng sai, có thể 85% vẫn được chấp nhận?
75%
Đối với mã nhận và trả về Chuỗi, tôi nghĩ rằng kiểm thử đơn vị dễ vỡ hơn nhiều, nhưng vẫn có thể hữu ích trong nhiều tình huống.
50% hoặc ít hơn
Tôi ghét viết bài kiểm tra cho các hàm trả về HTML vì nó quá dễ vỡ. Điều gì xảy ra nếu ai đó thay đổi CSS, JavaScript hoặc toàn bộ blob HTML và tiếng Anh mà bạn trả lại không có ý nghĩa gì với người dùng cuối? Nếu bạn có thể tìm thấy một hàm sử dụng nhiều logic nghiệp vụ để tạo ra một ít HTML, thì điều này có thể đáng để thử nghiệm. Nhưng tình huống ngược lại có thể không đáng để thử nghiệm chút nào.
Gần 0%
Đối với một số mã, định nghĩa của "chính xác" là "có ý nghĩa với người dùng cuối." Có những bài kiểm tra phi truyền thống mà bạn có thể thực hiện đối với mã này như kiểm tra ngữ pháp tự động hoặc HTML xác thực đầu ra. Tôi thậm chí đã thiết lập các câu lệnh grep cho những mâu thuẫn nhỏ mà chúng ta thường gặp phải khi làm việc, như nói "Đăng nhập" khi phần còn lại của hệ thống gọi nó là "Đăng nhập". Người đàn ông này không hoàn toàn là một bài kiểm tra đơn vị, nhưng là một cách hữu ích để nắm bắt các vấn đề mà không mong đợi đầu ra cụ thể.
Cuối cùng, chỉ có một con người có thể đánh giá những gì hợp lý với con người. Kiểm tra đơn vị không thể giúp bạn ở đó. Đôi khi phải mất vài người để đánh giá chính xác.
Tuyệt đối 0%
Đây là một thể loại buồn và tôi cảm thấy như một người ít viết nó hơn. Nhưng trong bất kỳ dự án đủ lớn nào cũng có những lỗ thỏ có thể hút người trong nhiều tuần mà không mang lại lợi ích kinh doanh nào.
Tôi đã mua một cuốn sách bởi vì nó tuyên bố sẽ cho thấy cách tự động giả dữ liệu để thử nghiệm Hibernate. Nhưng nó chỉ kiểm tra các truy vấn HQL và Hibernate Hibernate. Nếu bạn phải thực hiện nhiều HQL và SQL, bạn thực sự không nhận được lợi thế của Hibernate. Có một dạng cơ sở dữ liệu trong bộ nhớ Hibernate, nhưng tôi đã không đầu tư thời gian để tìm ra cách sử dụng nó hiệu quả trong các thử nghiệm. Nếu tôi có hoạt động đó, tôi muốn có phạm vi kiểm tra cao (50% -100%) cho bất kỳ logic nghiệp vụ nào tính toán công cụ bằng cách điều hướng một biểu đồ đối tượng khiến Hibernate chạy một số truy vấn. Khả năng kiểm tra mã này của tôi là gần 0% ngay bây giờ và đó là một vấn đề. Vì vậy, tôi cải thiện phạm vi kiểm tra trong các lĩnh vực khác của dự án và cố gắng thích các chức năng thuần túy hơn các chức năng truy cập cơ sở dữ liệu, phần lớn là do việc viết các bài kiểm tra cho các chức năng đó dễ dàng hơn. Vẫn,