Я работаю над несколькими приложениями, в основном устаревшими. В настоящее время их охват кода довольно низок: обычно от 10 до 50%.
Уже несколько недель мы регулярно обсуждаем с бангалорскими командами (основная часть разработки ведется на шельфе в Индии) об исключениях пакетов или классов для Cobertura (наш инструмент покрытия кода, даже если мы в настоящее время переходим на JaCoCo).
Их точка зрения заключается в следующем: поскольку они не будут писать какие-либо модульные тесты на некоторых уровнях приложения (1) , эти уровни должны быть просто исключены из меры покрытия кода. Другими словами, они хотят ограничить меру покрытия кода кодом, который проверяется или должен быть проверен .
Кроме того, когда они работают над модульным тестом для сложного класса, преимущества - исключительно с точки зрения покрытия кода - будут незамеченными из-за большого приложения. Сокращение охвата кода сделает такие усилия более заметными ...
Интерес этого подхода состоит в том, что у нас будет мера покрытия кода, которая указывает текущее состояние части приложения, которую мы считаем тестируемой .
Однако моя точка зрения такова, что мы каким-то образом подделываем цифры. Это решение - простой способ достичь более высокого уровня покрытия кода без каких-либо усилий. Другой момент, который меня беспокоит, заключается в следующем: если мы показываем увеличение охвата от одной недели к другой, как мы можем определить, связаны ли эти хорошие новости с хорошей работой разработчиков или просто с новыми исключениями?
Кроме того, мы не сможем точно знать, что учитывается в показателе покрытия кода. Например, если у меня есть приложение на 10000 строк кода с 40% покрытия кода, я могу вычесть, что 40% моей базы кода протестировано (2) . Но что произойдет, если мы установим исключения? Если охват кода теперь составляет 60%, что я могу точно вычесть? Что 60% моей "важной" базы кода проверено? Как я могу
Что касается меня, я предпочитаю сохранять «реальное» значение покрытия кода, даже если мы не можем быть в восторге от этого. Кроме того, благодаря Sonar, мы можем легко перемещаться по нашей базе кода и знать, для любого модуля / пакета / класса, свое собственное покрытие кода. Но, конечно, глобальный охват кода будет по-прежнему низким.
Каково ваше мнение по этому вопросу? Как вы делаете на ваших проектах?
Благодарю.
(1) Эти уровни обычно связаны с пользовательским интерфейсом / компонентами Java и т. Д.
(2) Я знаю, что это не так. На самом деле, это только означает, что 40% моей базы кода