Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Clover (программное обеспечение) )
Перейти к навигации Перейти к поиску

Инструменты покрытия кода Java бывают двух типов: во-первых, инструменты, которые добавляют операторы в исходный код Java и требуют его перекомпиляции. Во-вторых, инструменты, которые обрабатывают байт-код до или во время выполнения. Цель состоит в том, чтобы выяснить, какие части кода тестируются, путем регистрации строк кода, выполняемых при запуске теста.

JCov [ править ]

JCov - это инструмент, который разрабатывался и использовался с Sun JDK (а позже Oracle JDK) с самого начала Java: с версии 1.1. JCov может измерять и сообщать о покрытии кода Java . JCov распространяется на условиях GNU Public License (версия 2, с исключением Classpath). JCov стал открытым исходным кодом в рамках проекта инструментов кода OpenJDK в 2014 году.

Особенности [ править ]

JCov может сообщать о следующих типах покрытия кода:

  • Блокировка покрытия
  • Покрытие линии
  • Покрытие филиала
  • Покрытие метода

JCov реализует два разных способа сохранения собранных данных:

  • В файл в файловой системе
  • На сервер (он же "сетевой граббер")

JCov работает путем инструментирования байт-кода Java с использованием двух разных подходов:

  • Статическое оснащение, которое выполняется заранее, изменяя тестируемый код
  • Динамическое оснащение, которое выполняется на лету с помощью Java-агента.

JCov имеет еще несколько отличительных особенностей, которые включают, но не ограничиваются:

  • Покрытие поля
  • Абстрактное покрытие API
  • Прямое / косвенное покрытие
  • Информация о покрытии для каждого теста (также известная как «тестовые шкалы»)
  • Общедоступный API и SPI, который позволяет реализовать настраиваемую фильтрацию и / или добычу данных о покрытии.

Инструменты с использованием JCov [ править ]

  • Oracle JDK (SE и ME)
  • JCK (комплект совместимости с Java)
  • Различные пакеты TCK для Java SE и Java ME
  • Пакет SDK для Java FX
  • Конструктор сцен Java FX

JaCoCo [ править ]

JaCoCo - это набор инструментов с открытым исходным кодом для измерения покрытия кода Java и создания отчетов . JaCoCo распространяется на условиях общественной лицензии Eclipse . Он был разработан как замена EMMA [1] под эгидой подключаемого модуля EclEmma для Eclipse.

Особенности [ править ]

JaCoCo предлагает инструкции, покрытие для линий и филиалов.

В отличие от Atlassian Clover и OpenClover , которые требуют инструментовки исходного кода, JaCoCo может инструментировать байт-код Java, используя два разных подхода:

  • как JCov на лету при запуске кода с Java-агентом [2]
  • как Cobertura и JCov до казни (офлайн)

И может быть настроен для хранения собранных данных в файле или отправки их через TCP. Файлы из нескольких запусков или частей кода можно легко объединить. [3] В отличие от Cobertura и EMMA, он полностью поддерживает Java 7, Java 8, [4] Java 9, Java 10, Java 11, Java 12, Java 13, Java 14 и Java 15.

Инструменты, использующие или включающие JaCoCo [ править ]

  • Плагин SonarQube JaCoCo - одно из значений по умолчанию для анализа покрытия в платформе управления качеством кода SonarQube
  • EclEmma Eclipse (программное обеспечение) Подключаемый модуль Code Coverage, ранее был основан на EMMA [5]
  • Плагин Jenkins JaCoCo [6]
  • Поддержка Netbeans JaCoCo [7]
  • IntelliJ IDEA, начиная с версии 11 [4]
  • Плагин Gradle JaCoCo [8]
  • Visual Studio Team Services [9]
  • TeamCity [10]
  • ПЕЧАТЬ ( https://www.stamp-project.eu/ ) [11]

OpenClover [ править ]

OpenClover - это бесплатный преемник Atlassian Clover с открытым исходным кодом, созданный как форк кодовой базы Clover, опубликованной Atlassian в 2017 году. Он содержит все функции оригинального Clover (серверная версия). Проект OpenClover возглавляют разработчики, которые поддерживали Clover в 2012–2017 годах. [12]

OpenClover использует технику инструментовки исходного кода и поддерживает языки Java, Groovy и AspectJ . Некоторые из его функций включают в себя: точный контроль объема измерения покрытия, оптимизацию тестирования и сложные отчеты.

OpenClover интегрируется с Ant , Maven , Gradle , Grails , Eclipse , IntelliJ IDEA , Bamboo , Jenkins , Hudson , Griffon , SonarQube и AspectJ.

Кобертура [ править ]

Cobertura - это инструмент с открытым исходным кодом для измерения покрытия кода. Это делается путем инструментирования байтового кода.

Безмятежность [ править ]

Serenity - это набор инструментов с открытым исходным кодом для измерения покрытия кода Java и создания отчетов . Помимо покрытия, измеряются основные метрики кода: - циклометрическая сложность, стабильность, абстрактность и удаленность от основного. Данные отчета сохраняются в базе данных объектов и доступны через Jenkins / Hudson. Интерфейс визуально копирует интерфейс Eclipse IDE.

Serenity динамически улучшает байтовый код, делая ненужным этап посткомпиляции. Поддерживаются проекты Ant и Maven. Конфигурация выполняется в xml, пример Ant будет:

<! - Свойства системы безмятежности. -> <sysproperty  key = "included.packages"  value = "your.package.name.here"  /> <sysproperty  key = "included.adapters"  value = "охват, сложность, зависимость"  /> <! - Безмятежность Командная строка JVM. -> <jvmarg  line = "-javaagent: serenity / serenity.jar"  />

И пример конфигурации Maven:

<properties> <included.packages> -Dincluded.packages = your.package.name.here </included.packages> <included.adapters> -Dincluded.adapters = охват, сложность, зависимость </included.adapters> </ properties > <argLine> -javaagent: serenity / serenity.jar -Xms512m -Xmx1024m $ {included.packages} $ {included.adapters} </argLine>

Полный пример конфигурации см. В wiki Jenkins по адресу https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin .

Поддерживаются ведомые устройства Jenkins, а также многомодульные проекты Maven.

Testwell CTC ++ для Java [ править ]

Testwell CTC ++ - это инструмент покрытия кода для C , C ++ , Java и C # . Разработка этого инструмента началась в 1989 году в компании Testwell в Финляндии. С 2013 года поддержку и развитие продолжила компания Verifysoft Technology из Оффенбурга , Германия . Testwell CTC ++ анализирует все уровни покрытия кода, вплоть до покрытия модифицированных условий / решений и покрытия множественных условий . [13] Инструмент работает со всеми компиляторами . [14]

Агент покрытия кода IntelliJ IDEA [ править ]

Агент покрытия кода IntelliJ IDEA - это инструмент покрытия кода , интегрированный в IntelliJ IDEA IDE и сервер TeamCity CI. Он поддерживает покрытие филиалов и отслеживание покрытия для каждого теста.

Известные исторические инструменты [ править ]

Клевер [ править ]

Clover - это утилита для анализа покрытия кода Java, приобретенная и разработанная Atlassian . В апреле 2017 года Atlassian объявила об окончании срока службы Clover и одновременно открыла его исходный код под лицензией Apache 2.0.

Clover использует технику инструментария исходного кода (в отличие от Cobertura и JaCoCo, которые используют инструментарий байтового кода), который имеет свои преимущества (например, возможность собирать метрики кода) и недостатки (необходима повторная компиляция исходных кодов). [15] Некоторые из его функций включают историческую отчетность, огромный контроль над процессом сбора информации, набор инструментов командной строки и API для устаревшей интеграции и многое другое.

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

Clover поставляется с рядом интеграций, разработанных как Atlassian (Ant, Maven, Grails, Eclipse, IDEA, Bamboo), так и сообществом с открытым исходным кодом (Gradle, Griffon, Jenkins, Hudson, Sonar).

В апреле 2017 года Atlassian объявил, что они больше не будут выпускать новые версии Clover после версии 4.1.2, а его код стал доступен в виде программного обеспечения с открытым исходным кодом, размещенного на Bitbucket . [17] [18]

ЭММА [ править ]

EMMA - это набор инструментов с открытым исходным кодом для измерения покрытия кода Java и создания отчетов . EMMA распространяется на условиях Common Public License v1.0.

EMMA в настоящее время не находится в активной разработке; последний стабильный выпуск состоялся в середине 2005 года. В качестве замены был разработан JaCoCo. [19] EMMA работает, заключая каждую строку кода и каждое условие в оболочку с флагом, который устанавливается при выполнении этой строки. [20]

Особенности [ править ]

  • классы инструментов для покрытия либо в автономном режиме (до их загрузки), либо на лету (с использованием загрузчика классов приложения).
  • Поддерживаемые типы покрытия: класс, метод, линия, базовый блок. EMMA может обнаружить, когда одна строка исходного кода покрыта только частично.
  • Статистика покрытия агрегируется на уровнях метода, класса, пакета и «всех классов».
  • Типы выходных отчетов: простой текст, HTML, XML. Все типы отчетов поддерживают детализацию до контролируемой пользователем глубины детализации. Отчет HTML поддерживает связывание исходного кода.
  • В выходных отчетах можно выделить элементы с уровнем покрытия ниже пороговых значений, заданных пользователем.
  • Данные о покрытии, полученные с помощью различных приборов или тестовых прогонов, можно объединить.
  • можно выгрузить или сбросить данные покрытия удаленно и без выхода из JVM.
  • не требует доступа к исходному коду и постепенно ухудшается с уменьшением количества отладочной информации, доступной во входных классах.
  • может .classобрабатывать отдельные файлы или целые .jars(при желании на месте). Также возможна эффективная фильтрация подмножества покрытия.
  • Интеграция сборок Makefile и ANT поддерживается на равной основе.
  • Накладные расходы времени выполнения добавленных инструментов невелики (5–20%), а сам инструмент байт-кода очень быстр (в основном ограничен скоростью файлового ввода-вывода). Накладные расходы на память составляют несколько сотен байтов на класс Java.
  • EMMA - это 100% чистая Java, не имеет зависимостей от внешних библиотек и работает с любой Java 2 JVM (даже 1.2.x).

Ссылки [ править ]

  1. ^ Миссия JaCoCo
  2. ^ Patroklos Папапетр (19 декабря 2012). «Сравнение инструментов покрытия кода (JaCoCo, Cobertura, Emma) в сонаре» . Только программное обеспечение имеет значение . Проверено 3 марта 2013 года . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ Измерение покрытия с помощью интеграционных тестов с сонаром - Обновлено
  4. ^ a b «Покрытие кода» . Веб-справка IntelliJ IDEA 12.0 . JetBrains. Архивировано из оригинального 26 апреля 2013 года . Проверено 3 марта 2013 года . CS1 maint: обескураженный параметр ( ссылка )
  5. ^ EclEmma, ​​плагин покрытия кода Eclipse
  6. ^ Плагин Jenkins JaCoCo
  7. ^ Поддержка NetBeans JaCoCo
  8. ^ Плагин Gradle JaCoCo
  9. ^ Интеграция JaCoCo в Visual Studio Team Services
  10. ^ Интеграция JaCoCo в TeamCity
  11. ^ Jacoco используется инструментом STAMP DSpot в качестве селектора тестов (рассматривается как пригодность) для выбора тестов, которые увеличивают охват и имеют уникальный путь выполнения.
  12. ^ OpenClover - О нас
  13. ^ Testwell CTC ++ поддерживает все уровни покрытия
  14. ^ Testwell CTC ++ поддерживает все компиляторы
  15. ^ "Почему Clover использует инструменты исходного кода?"
  16. ^ Оптимизация тестов
  17. ^ «Atlassian Clover теперь имеет открытый исходный код» . atlassian.com . 11 апреля 2017.
  18. ^ "атласский / клевер" . bitbucket.org .
  19. ^ Файлы покрытия кода EMMA на SourceForge.net
  20. ^ Эксперт Spring MVC и Web Flow; Сет Лэдд, Даррен Дэвисон, Стивен Девиджвер, Колин Йейтс, стр. 289

Внешние ссылки [ править ]

  • Сравнение OpenClover, Clover, Cobertura, JaCoCo, JCov, CodeCover и PIT
  • JaCoCo против Clover2
  • Выберите инструмент покрытия кода в Sonar 2.2 , он немного устарел, поскольку JaCoCo тем временем поддерживает покрытие веток.
  • Тестирование приложений Java с помощью Visual Studio Team Services