Что такое покрытие кода? - PullRequest
11 голосов
/ 21 июля 2009

У меня 3 вопроса:

  • Что такое CodeCoverage?
  • Для чего это хорошо?
  • Какие инструменты используются для анализировать охват кода?

Ответы [ 9 ]

13 голосов
/ 21 июля 2009

Вы можете получить очень хорошую информацию с ТАКИЕ ВЕБ-САЙТ

Бесплатные инструменты покрытия кода

Что такое покрытие кода и как ВЫ его измеряете?

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

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

http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=ART&ObjectId=7580 альтернативный текст http://www.codecoveragetools.com/images/stories/software_lifecycle.jpg

Это хорошо для

  1. Функциональное покрытие с целью определения количества выполненных функций или процедур.

  2. Выполнение оператора или строки, которое идентифицирует количество строк в исходном коде.

  3. Покрытие условий или покрытие решений отвечает на вопрос о количестве условий цикла, которые были выполнены в программе.

  4. Выполнено покрытие пути, которое сосредоточено на поиске всех возможных путей от заданной начальной точки в коде.

  5. Покрытие входа и выхода, которое определяет, сколько функций (C / C ++, Java) или процедур (Pascal) выполнялось от начала до конца.

ИНСТРУМЕНТЫ

http://www.codecoveragetools.com/

http://java -source.net / с открытым исходным кодом / код-покрытие

http://www.codecoveragetools.com/index.php/coverage-process/code-coverage-tools-java.html

http://open -tube.com / 10-код-покрытия-инструменты-с-с /

http://csharp -source.net / с открытым исходным кодом / код-покрытие

http://www.kdedevelopers.org/node/3190

4 голосов
/ 21 июля 2009

С статья в Википедии

Покрытие кода является мерой, используемой в тестирование программного обеспечения. Это описывает Степень, в которой исходный код Программа была протестирована. Это форма тестирования, который проверяет код непосредственно и, следовательно, является формой тестирование белого ящика 1 . В настоящее время использование покрытия кода распространяется на область цифрового оборудования, методология современного дизайна который опирается на описание оборудования языки (HDL).

Поддержка использования покрытия кода

Инструмент покрытия кода просто сохраняет отслеживать, какие части вашего кода получить выполнено, а какие части нет.

Обычно результаты гранулированы до уровня каждой строки кода. Так в типичной ситуации вы запускаете Ваша заявка с покрытием кода инструмент настроен для мониторинга. когда вы выходите из приложения, инструмента создаст отчет о покрытии кода который показывает, какие строки кода были выполнено, а какие не были. Если Вы считаете общее количество строк которые были выполнены и делятся на общее количество строк, которые могут иметь был выполнен, вы получите процент. Если вы верите в покрытие кода, чем выше процент, тем лучше. В практика, достижение 100% чрезвычайно редкий.

Использование инструмента покрытия кода обычно в сочетании с использованием некоторых вид автоматизированного набора тестов. Без автоматизированное тестирование, покрытие кода инструмент просто говорит вам, какие функции пользователь вспомнил об использовании. Такой инструмент гораздо полезнее, когда он измерение того, как завершить тестовый набор в отношении кода у вас есть написано.

Статьи по теме

Будущее инструментов покрытия кода

Эффективность инструментов покрытия кода при тестировании программного обеспечения

Инструменты

Инструменты покрытия с открытым исходным кодом в Java

3 голосов
/ 21 июля 2009

Покрытие кода - это показатель, показывающий, насколько «хорошо» проверен исходный код. Существует несколько типов покрытия кода: покрытие линии, покрытие функции, покрытие филиала.

Чтобы измерить покрытие, вы должны запустить приложение либо вручную, либо с помощью автоматического теста.

Инструменты можно разделить на две категории: - те, которые запускают скомпилированный код в измененной среде (например, отладчик), подсчитывая необходимые точки (функции, строки и т. д.); - те, которые требуют специальной компиляции - в этом случае результирующий двоичный файл уже содержит код, который фактически выполняет подсчет.

Существует несколько инструментов для измерения и визуализации результата, они зависят от платформы, от языка исходного кода.

Пожалуйста, прочитайте статью в Википедии

Чтобы предоставить вам инструменты, укажите, для какой ОС и языка вы используете.

2 голосов
/ 21 июля 2009

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

http://en.wikipedia.org/wiki/Code_coverage

Определение в Википедии довольно хорошее, но, по моим собственным словам, покрытие кода говорит вам, сколько автоматизированного тестирования вы учли. 100% означало бы, что когда-либо одна строка кода в вашем приложении проходит модульный тест.

NCover - приложение для .NET

1 голос
/ 21 июля 2009

Термин относится к тому, насколько хорошо ваша программа покрыта вашими тестами. См. Следующую статью в Википедии для получения дополнительной информации:

http://en.wikipedia.org/wiki/Code_coverage

0 голосов
/ 04 марта 2014

Еще один полезный инструмент для обеспечения качества кода (который охватывает покрытие кода), который я недавно использовал, - это Sonar. Вот ссылка http://www.sonarqube.org/

0 голосов
/ 13 октября 2009

Хорошие ответы.

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

Если вы комбинируете его с пошаговым пошаговым выполнением, это очень хороший способ просмотреть код и выявить ошибки. Вот пример.

0 голосов
/ 21 июля 2009

Существует множество способов разработки приложений. Одним из них является «Экстремальное программирование» или «Тестирование управляемой конструкции (TDD)». В нем говорится, что весь код должен быть проверен. Покрытие кода - это средство измерения того, сколько тестируется.

Я хотел бы сделать небольшое замечание по этому поводу: я не думаю, что весь код должен быть протестирован, и что не следует устанавливать определенный процент покрытия кода. Я также не считаю, что код не должен тестироваться с помощью модульных тестов (код тестирования кода). Я думаю, что нужно решить, что имеет смысл проверить. По этой причине я обычно не использую покрытие кода.

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

0 голосов
/ 21 июля 2009

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

Высокое покрытие кода не обязательно означает высокое качество теста, но высокое качество теста означает высокое покрытие кода

На практике я обычно стремлюсь к охвату кода на 90-95%, что часто достижимо. Последние несколько% часто слишком дороги, чтобы их стоило пытаться ударить.

...