Я працюю над декількома додатками, в основному застарілими. Наразі їх охоплення кодом досить низьке: загалом від 10 до 50%.
Протягом декількох тижнів ми регулярно обговорюємо з командами Бангалор (основна частина розробки проводиться в офшорному напрямку в Індії) щодо виключення пакетів або класів для Cobertura (наш інструмент покриття коду, навіть якщо ми зараз переходимо на JaCoCo).
Їх точка зору полягає в наступному: оскільки вони не пишуть одиничні тести на деяких шарах програми (1) , ці шари повинні бути просто виключені з міри покриття кодом. Іншими словами, вони хочуть обмежити міру покриття коду кодом, який тестується або повинен бути протестований .
Крім того, коли вони працюють над тестовою одиницею для складного класу, переваги - суто з точки зору покриття коду - будуть непоміченими завдяки великому застосуванню. Зменшення обсягу покриття коду зробить подібні зусилля більш помітними ...
Цікавість такого підходу полягає в тому, що у нас буде міра покриття кодом, яка вказує на поточний стан тієї частини програми, яку ми вважаємо тестованою .
Однак моя точка зору полягає в тому, що ми якось підробляємо цифри. Це рішення - це простий спосіб досягти більш високого рівня покриття коду без будь-яких зусиль. Ще один момент, який мене турбує, полягає в наступному: якщо ми показуємо збільшення покриття з одного тижня на інший, то як ми можемо сказати, чи є ця хороша новина через добру роботу розробників, чи просто через нові виключення?
Крім того, ми не зможемо точно знати, що розглядається в мірі покриття коду. Наприклад, якщо у мене є 10 000 рядків програми коду з покриттям коду 40%, я можу вирахувати, що 40% моєї бази коду перевірено (2) . Але що станеться, якщо ми встановимо виключення? Якщо покриття коду зараз становить 60%, що я можу точно вирахувати? Що 60% моєї "важливої" кодової бази перевірено? Як я можу
Що стосується мене, я вважаю за краще зберігати "реальне" значення покриття коду, навіть якщо ми не можемо бути задоволеними з цього приводу. Крім того, завдяки Sonar ми можемо легко орієнтуватися в нашій кодовій базі і знати, для будь-якого модуля / пакета / класу, власне покриття коду. Але звичайно, покриття глобальним кодом все ще буде низьким.
Яка ваша думка з цього приводу? Як ви робите свої проекти?
Спасибі.
(1) Ці шари, як правило, відносяться до бобів UI / Java тощо.
(2) Я знаю, що це неправда. Насправді це означає лише, що 40% моєї кодової бази