Существуют ли какие-либо инструменты, которые конкретно измеряют полезное покрытие кода? - PullRequest
1 голос
/ 14 декабря 2011

Можно, хотя и контрпродуктивно, написать модульный тест, который выполняет некоторый код и утверждает правду. Это намеренно крайний и упрощенный пример - я уверен, что большинство людей сталкивались с тестами, которые исполняют код, фактически не используя его.

Существуют ли какие-либо инструменты покрытия кода, которые оценивают, действительно ли покрытый код используется как часть утверждений теста?

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

По сути, вы хотите вычислить пересечение между покрытым кодом и срезом обратного кода (минус сам модульный тест) для утверждения в покрытом тесте.

Если это пересечение пусто, утверждение не проверяет какую-либо часть приложения.

Большинство инструментов покрытия кода не вычисляют срезы, поэтому я думаю, что ответ на ваш вопрос "нет".

0 голосов
/ 15 декабря 2011

Еще раз, я бы просто выяснил, почему это происходит? Тесты, добавленные только ради увеличения количества охвата, часто являются признаком более серьезной причины. Обучать всех, а не выбирать конкретных преступников, обычно лучше.

Для выявления уже допущенных ошибок: Вы можете использовать инструмент статического анализа кода, который проверяет, что

  • каждый тест имеет как минимум ОДИН утверждение. Конечно, это также может быть побеждено мошенническими утверждениями.
  • нет неиспользованных возвращаемых значений.

Я видел первый в чем-то под названием TestLint от RoyOsherove и второй, который я могу вспомнить о Parasoft или подобном. Тем не менее, это не надежный метод, и он потратит значительное время на изучение проблем SCA. Но это лучшее, что я могу придумать.

0 голосов
/ 14 декабря 2011

Вам понадобится какой-нибудь анализ зависимостей, т.е. чтобы выяснить, от каких утверждений зависит утверждение.Тогда это должно быть сверено с покрытием.CodeSurfer - это один из коммерческих инструментов, который выполняет анализ зависимостей для C.

...