Code coverage vs Code Quality
Покрытие кода - "сколько продакшен кода вызывается, когда запускаются автоматические тесты", очень популярная метрика, которой пытаются измерить качество кода, а скорее тестов, которые его покрывают.
Но давайте простой пример.
Есть функция, которая что-то делает и есть тесты, которые вызывают каждую строчку этой функции, что дает нам 100% покрытия.
Качественный код/тесты? А неизвестно.
Потому что в целом нам важно не только то, что функция сейчас делает, но и ответ на вопрос, а что она должна делать.
Передали, например, в нее NULL, который никак не обрабатывается и finita la commedia нашему 100% покрытию.
Что же нам дает эта метрика на самом деле?
А то, что видя эти цифры, можно отследить момент, когда у нас появилось больше кода, который вообще не затрагивается тестами. И зная про этот код, можно предусмотреть дополнительную активность предусмотренную вашими процессами и тестовой стратегией, будь то "остановка мержа" до устранения возникшего долга или дополнительные "ручные" проверки.
Итого:
• мерять полезно, работает в комплексе, используется для анализа изменений одного и того же кода/тестов на временном отрезке.
• сравнивать эту метрику для 2х команд между собой - херня.
• 100% покрытия не говорит ни о чем
• но, хорошее дополнение в комментариях, для динамических языков большой процент покрытия дает больше уверенности в том, что косяков меньше, чем могло бы быть
• покрытие кода даст вам количество, когда вам нужно качество
#quality #metrics
Post #324
578
- 👍 5
- 💯 3