Bạn không nên thực thi bảo hiểm mã tự động.
Điều này giống như việc thực thi các dòng mã tối đa cho mỗi phương thức: đã đồng ý, hầu hết các phương thức nên nhỏ hơn 20 LỘC, nhưng có những trường hợp hợp lệ trong đó các phương thức sẽ dài hơn thế.
Theo cùng một cách, nhắm mục tiêu một tỷ lệ bao phủ mã cho mỗi lớp có thể dẫn đến hậu quả không mong muốn. Ví dụ:
Các lớp mã nồi hơi hoặc các lớp được tạo bởi các trình tạo mã có thể không được kiểm tra. Buộc các nhà phát triển thử nghiệm họ sẽ không có bất kỳ lợi ích nào và sẽ có chi phí đáng kể về thời gian dành cho việc đó.
Xử lý mã đơn giản các phần không quan trọng của ứng dụng không nhất thiết phải được kiểm tra.
Trong một số ngôn ngữ, một số mã không thể được kiểm tra. Tôi đã có trường hợp này trong C # với các phương thức ẩn danh trên một thư viện nơi tôi thực sự muốn có phạm vi bảo hiểm mã 100%. Những trường hợp đó có thể làm mất tinh thần cho các nhà phát triển.
Quan trọng hơn, phạm vi bảo hiểm mã phải tỷ lệ thuận với hai khía cạnh của mã: mức độ quan trọng và mức độ phức tạp của nó :
Một đoạn mã với logic phức tạp là một phần của tính năng chính của ứng dụng sẽ được kiểm tra chu đáo hơn, bởi vì thất bại hoặc hồi quy có thể có hậu quả quan trọng.
Một đoạn mã đơn giản xử lý một tính năng không ai sử dụng có thể có các bài kiểm tra cơ bản chỉ bao gồm các trường hợp cơ bản.
Tất nhiên, bạn vẫn có thể sử dụng phạm vi bảo hiểm mã làm phép đo , đặc biệt là so sánh cách các nhóm khác nhau đạt được phạm vi bảo hiểm mã: có thể có các nhóm ít kỷ luật hơn và miễn cưỡng hơn khi thử nghiệm. Trong những trường hợp đó, bạn có thể muốn kết hợp số liệu này với số liệu khác, chẳng hạn như số lỗi, thời gian giải quyết lỗi hoặc số nhận xét trong quá trình đánh giá mã.
Bạn cũng có thể muốn thực thi ít nhất một số phạm vi bảo hiểm mã, giả sử 60% ¹, đối với các dự án riêng lẻ có ý nghĩa (cẩn thận để loại trừ các nguyên mẫu, mã được tạo, CRUD, v.v.) Để các nhà phát triển có thể đánh dấu các lớp cụ thể là loại trừ từ bảo hiểm mã cũng đẹp². Trong trường hợp này, điều này có thể được thực hiện dưới hình thức kiểm tra không xây dựng nếu phạm vi bảo hiểm mã dưới mức tối thiểu bắt buộc. Tôi sẽ làm điều đó ở giai đoạn xây dựng, không phải giai đoạn cam kết , vì bạn sẽ không chạy thử nghiệm đơn vị trong quá trình cam kết .
Tôi sẽ coi 60% là mức tối thiểu hợp lý dựa trên cơ sở mã của mình: gần như mọi dự án hoặc lớp có phạm vi bảo hiểm mã dưới 60% thực sự chưa được kiểm tra . Điều này có thể thay đổi rất nhiều từ ngôn ngữ này sang ngôn ngữ khác và từ công ty này sang công ty khác (ở một số công ty, 0% là tiêu chuẩn). Hãy chắc chắn để thảo luận với nhóm của bạn những gì là bình thường và những gì là quá cao đối với họ. Có thể họ liên tục đạt 95% và có thể dễ dàng nhắm mục tiêu 99% hoặc có thể họ đấu tranh để tăng phạm vi bảo hiểm mã từ 70% lên 75%.
² Cho rằng lạm dụng cuối cùng sẽ được phát hiện trong quá trình đánh giá mã, bạn không nên ngại đưa ra khả năng này cho các nhà phát triển. Điều này tương tự như khả năng loại trừ một số phần của mã khỏi các kiểm tra bởi các bộ kiểm tra kiểu hoặc bộ kiểm tra kiểu. JSLint, StyleCop và Phân tích mã là ba ví dụ trong đó loại trừ được hỗ trợ và thực sự hữu ích mà không khuyến khích lạm dụng.