Что такое покрытие кода?

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

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

Ответ 1

Вы можете получить очень хорошую информацию из SO WEB SITE

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

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

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

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

http://www.stickyminds.com/sitewide.asp?Function=edetail&ObjectType=ART&ObjectId=7580 alt text http://www.codecoveragetools.com/images/stories/software_lifecycle.jpg

Хорошо для

  • Функциональный охват, направленный на поиск того, сколько функций или процедур было выполнено.

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

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

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

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

ИНСТРУМЕНТЫ

http://www.codecoveragetools.com/

http://java-source.net/open-source/code-coverage

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

http://open-tube.com/10-code-coverage-tools-c-c/

http://csharp-source.net/open-source/code-coverage

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

Ответ 2

Из статья в википедии

Покрытие кода - это мера, используемая в тестирование программного обеспечения. В нем описывается степень, в которой исходный код программа была протестирована. Это форма тестирования, проверяющего код и, следовательно, является формой white box 1. В настоящее время использование покрытия кода распространяется на в области цифрового оборудования, современная методология проектирования который опирается на описание оборудования Языки (ЛПВП).

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

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

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

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

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

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

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

Инструменты

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

Ответ 3

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

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

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

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

Пожалуйста, прочитайте статью о Wikipedia

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

Ответ 4

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

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

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

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

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

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

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

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

Ответ 8

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

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

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

Ответ 9

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