Tôi đang làm việc trên một số ứng dụng, chủ yếu là những ứng dụng cũ. Hiện tại, phạm vi bảo hiểm mã của họ khá thấp: thường từ 10 đến 50%.
Kể từ vài tuần, chúng tôi đã thảo luận thường xuyên với các nhóm ở Bangalore (phần chính của sự phát triển được thực hiện ở nước ngoài) về việc loại trừ các gói hoặc lớp cho Cobertura (công cụ bảo hiểm mã của chúng tôi, ngay cả khi chúng tôi hiện đang di chuyển sang JaCoCo).
Quan điểm của họ là như sau: vì họ sẽ không viết bất kỳ bài kiểm tra đơn vị nào trên một số lớp của ứng dụng (1) , các lớp này nên được loại trừ khỏi biện pháp bao phủ mã. Nói cách khác, họ muốn giới hạn biện pháp bao phủ mã đối với mã được kiểm tra hoặc nên được kiểm tra .
Ngoài ra, khi họ làm việc trong bài kiểm tra đơn vị cho một lớp phức tạp, các lợi ích - hoàn toàn về mặt bảo hiểm mã - sẽ không được chú ý do trong một ứng dụng lớn. Giảm phạm vi bảo hiểm mã sẽ làm cho loại nỗ lực này rõ ràng hơn ...
Sự quan tâm của phương pháp này là chúng tôi sẽ có một biện pháp bảo hiểm mã cho biết trạng thái hiện tại của một phần của ứng dụng mà chúng tôi coi là có thể kiểm tra được .
Tuy nhiên, quan điểm của tôi là bằng cách nào đó chúng ta đang giả mạo các số liệu. Giải pháp này là một cách dễ dàng để đạt được mức độ bao phủ mã cao hơn mà không cần bất kỳ nỗ lực nào. Một điểm khác làm phiền tôi là như sau: nếu chúng tôi hiển thị mức tăng bảo hiểm từ tuần này sang tuần khác, làm thế nào để biết tin tốt này là do công việc tốt của các nhà phát triển hay đơn giản là do loại trừ mới?
Ngoài ra, chúng tôi sẽ không thể biết chính xác những gì được xem xét trong biện pháp bảo hiểm mã. Ví dụ: nếu tôi có 10.000 dòng ứng dụng mã với 40% phạm vi bảo hiểm mã, tôi có thể khấu trừ 40% cơ sở mã của mình đã được kiểm tra (2) . Nhưng điều gì xảy ra nếu chúng ta đặt loại trừ? Nếu phạm vi bảo hiểm mã bây giờ là 60%, tôi có thể khấu trừ chính xác những gì? 60% cơ sở mã "quan trọng" của tôi đã được kiểm tra? Làm thế nào tôi có thể
Theo như tôi biết, tôi thích giữ giá trị bảo hiểm mã "thực", ngay cả khi chúng tôi không thể vui vẻ về điều đó. Ngoài ra, nhờ có Sonar, chúng tôi có thể dễ dàng điều hướng trong cơ sở mã của mình và biết, đối với bất kỳ mô-đun / gói / lớp nào, phạm vi bảo hiểm mã riêng của nó. Nhưng tất nhiên, phạm vi bảo hiểm mã toàn cầu vẫn sẽ thấp.
Ý kiến của bạn về chủ đề đó là gì? Làm thế nào để bạn làm trên các dự án của bạn?
Cảm ơn.
(1) Các lớp này thường liên quan đến các hạt UI / Java, v.v.
(2) Tôi biết điều đó không đúng. Trên thực tế, điều đó chỉ có nghĩa là 40% cơ sở mã của tôi