Comments 14
Два занятных пункта.
Во-первых, Code coverage есть в студии, и тоже неплохо интегрируется в билд (а особенно в TFS Build).
Во-вторых, опыт показал, что покрытие строчки кода совершенно не означает, что покрывающий ее тест что-то проверяет. То есть представьте, что в вашем примере с подсветкой кода есть еще переменная
Во-первых, Code coverage есть в студии, и тоже неплохо интегрируется в билд (а особенно в TFS Build).
Во-вторых, опыт показал, что покрытие строчки кода совершенно не означает, что покрывающий ее тест что-то проверяет. То есть представьте, что в вашем примере с подсветкой кода есть еще переменная
j=0
, и внутри if используется она. Покрытие не будет меняться вне зависимости от того, проверяет тест, какая переменная используется, или нет.Спасибо.
1 — я знаком с code coverage, но особенности нашего CI таковы, что нам неудобно его использовать. Да и не особо он понравился, если честно. OpenCover + ReportGenerator — удобно и информативно, а также универсально.
2 — да, полностью с вами согласен. Но мы говорим об анализе именно покрытия тестами, а не их качества
1 — я знаком с code coverage, но особенности нашего CI таковы, что нам неудобно его использовать. Да и не особо он понравился, если честно. OpenCover + ReportGenerator — удобно и информативно, а также универсально.
2 — да, полностью с вами согласен. Но мы говорим об анализе именно покрытия тестами, а не их качества
А смысл анализировать покрытие кода, если вы не знаете, насколько в реальности это покрытие полезно?
Я как раз предостерегаю от этой ловушки — думать, что если в проекте 100% покрытие тестами, то там все хорошо. И, соответственно, от (бездумного) использования метрик на code coverage в билде, потому что как раз они приводят к написанию тестов, которые формально код покрывают, а по факту ничего не делают. Это личный только что пережитый опыт.
Я как раз предостерегаю от этой ловушки — думать, что если в проекте 100% покрытие тестами, то там все хорошо. И, соответственно, от (бездумного) использования метрик на code coverage в билде, потому что как раз они приводят к написанию тестов, которые формально код покрывают, а по факту ничего не делают. Это личный только что пережитый опыт.
Я вас прекрасно понимаю, мы сами наступали на эти грабли. Сейчас приходится переделывать многие старые тесты, написаные «для галочки». Поэтому, уровень покрытия используется совсем не бездумно, но служит лишь одной из метрик, позволяющей оценивать уровень тестирования продукта. Код не пропускается в основной репозиторий без ревью, так что качество все таки проверяется вручную. В сочетании с автоматическим анализом количества покрытого кода, складывается наглядная картина.
В общем, я бы рекомендовал делать метрику не на некую величину уровня покрытия, а на неуменьшение этой величины. Это позитивнее.
Тот же ReSharper + dotCover позволяет проанализировать покрытие кода, куда лучше ИМХО
(1) решарпер для этого не нужен, нужен только dotCover
(2) dotCover, все-таки, платный
(2) dotCover, все-таки, платный
Боб Мартин рекомендует стремиться к 100% покрытию, хотя сам и говорит, что эта цифра нереальна. Такую рекомендацию он даёт в Clean Code Episode, посвящённому TDD.
Покрытие нужно для того, чтобы просто понимать, на что у тебя тесты есть, а на что нет.
Если программист начинает писать тесты, смысл которых равен 0, то его надо вычислять и наказывать за непрофессиональное поведение.
Покрытие нужно для того, чтобы просто понимать, на что у тебя тесты есть, а на что нет.
Если программист начинает писать тесты, смысл которых равен 0, то его надо вычислять и наказывать за непрофессиональное поведение.
Покрытие нужно для того, чтобы просто понимать, на что у тебя тесты есть, а на что нет.
Как уже было сказано выше, покрытие «по исполнению» показывает те места, где тестов точно нет. А вот если строчка исполнена — то еще не факт, что она протестирована.
Sign up to leave a comment.
Автоматический анализ покрытия кода с использованием OpenCover + плюшки