Все знают, что запись тестов является "полезной вещью". Измерение тестового покрытия сообщает точно, какой код выполняется тестами. Clover не только предоставляет Вам точное и подробное покрытие кода, он дает Вам информацию, необходимую для оценки качества покрытия, идентифицирует области покрытия низкого качества и указывает на существующие тесты тогда, когда Вам нужно запустить еще тестов.
Потестовое покрытие
Выполнено != Протестировано
Разнообразие инструментов покрытия кода просто измеряет, какие операторы выполняются во время запуска теста. Clover записывает, какой тест(ы) был ответственен за покрытие. Это очень полезно при диагностировании тестовых отказов, при добавлении тестов.
Обычно покрытие сообщает, что что-то покрыло Ваш код, что есть лучше, чем ничего. Clover позволяет Вам сразу видеть тесты, которые покрыли оператор и Вы можете выяснить, эффективны ли эти покрытия.
Визуализируйте свои метрики
Clover обеспечивает визуализацию, чтобы помочь Вам понять и максимально использовать свои метрики.
Рабочий стол в HTML отчете дает сводку Вашего проекта. Наряду с кратким обзором статистики, он также предлагает самые рискованные классы (низкое покрытие, высокая сложность) и наименьшее количество протестированных методов.
Метод визуализации данных - Treemap (плоское дерево) покрытия Clover и облака покрытия помогают Вам идентифицировать, где надо сфокусировать ограниченные ресурсы тестирования, помогая Вам идентифицировать под протестированным кодом, который больше всего извлечет выгоду из большего количества тестов.
Больше чем покрытие
Clover измеряет потестовое покрытие, обеспечивающее понимание тестирования, просмотром какие тесты какой код покрыли. Отчеты комбинируют покрытие с цикломатической сложностью, чтобы показать Вам, как направить Ваше тестирование и где это необходимо больше всего.
Clover интегрирует результаты тестов с результатами покрытия – измеряющиеся результаты испытаний для JUnit, и TestNG (могут быть сконфигурированы и другие платформы тестирования). Clover позволяет Вам видеть как все классы, которые указанный тест покрыл, так и "значение" определенного теста. Clover также показывает уникальное потестовое покрытие, показывающее точно, какие тесты каких операторов покрыли. Это позволяет Вам узнать, насколько покрытие было бы уменьшено, если бы тест не был выполнен.
Бывает ли у Вас чувство что Вы проводите половину жизни ожидая запуска тестов? Вероятно бывает. Что еще хуже, что большинство из этих циклов впустую запускают тесты, которые не изменились в коде, который не менялся. Clover поможет вам сэкономить время, выполняя правильные тесты. Быстрые тесты дают быстрые сборки.
Не повторяйте себя
Тестовая оптимизация Clover сочетает выборочное тестирование и приоритезацию тестов, чтобы организовать быстрые отклики о качестве кода.
Тестовая оптимизация ускоряет единичное и функциональное тестирование с помощью запуска тестов, которые:
- Покрывают код, который изменился с предыдущего запуска.
- Провалились или имели ошибки в предыдущем запуске.
Преимущества тестовой оптимизации:
- Результатынепрерывной интеграции (CI) могут прийти в несколько раз быстрее.
- "Разработка внутреннего цикла" резко ускоряется, так что Вы можете проверить все изменения перед созданием коммита.
- Разработчики предупреждаются раньше, чтобы исправить поломки.
- Меньше ресурсов на сервере потребляется долгим запуском сборок, уменьшая время ожидания других сборок.
Проваливайтесь быстро
Если Вы будете терпеть неудачу, сделайте это быстро.
Мало того, что тестовая оптимизация ускоряет каждую сборку, она переупорядочивает тестовое выполнение, так, что сборки, которые не удались перестанут работать как можно быстрее. Чем быстрее сборка проваливается, тем быстрее она может быть исправлена.
Тестовая оптимизация упорядочивает тесты эвристическим образом:
- Новизна тестового отказа или ошибки.
- Новизна изменения в коде покрытый тестом.
- Тест время выполнения (сначала более быстрые тесты).
Настройка
Clover позволяет Вам решать как Вы хотите оптимизировать. Все команды разные. Вы можете использовать тестовую оптимизацию Clover, чтобы пойти по определенному сценарию, таким как:
- Выполненные только тестов, которые изменились или тестовый код, который изменился.
- Сначала запуск вышеупомянутых тестов, затем остальных.
- В произвольном порядке.
- Выполнение самых коротких тестов сначала.
- Выполнение всех тестов каждую энную сборку.
С Clover у Вас есть способность оптимизировать Ваши сборки, под образ Вашей работы, деятельности и места выполнения.
Groovy все больше и больше помогает разработчикам расширить свои приложения Java. Поддержка покрытия кода Clover для Groovy гарантирует, что Ваши сценарии пуленепробиваемы как Ваш код.
Покрытие кода Groovy
Основанные на Java динамические языки такие как Groovy становятся все более и более популярными, так как они поддерживают более быструю разработку и итерацию, разрешая разработчикам использовать в своих интересах библиотеки объектов Java, которые они использовали в течение многих лет. Динамический контроль типов обеспечивает больше гибкости кода и ускоряет внутренний цикл разработки с интерпретируемым кодом устранением компиляцию кода. Эти преимущества представляют риск неправильного поведения и исключений во время выполнения. Например, разработчик может предоставить доступ к объекту мошеннику через опечатку (например, x.fooo, вместо x.foo).
Если Ваш компилятор не проверит Ваш синтаксис, то пользователи проверят, когда выявятся ошибки. Используйте Clover , чтобы гарантировать, что у Вашего кода Groovy есть тестовое покрытие, в котором он нуждается.
Интеграция с Grails
Плагин для Grails представляет отчеты покрытия кода Clover из платформы разработки веб-приложения Grails. Плагин дает подробную информацию с подсвеченными областями низкого покрытия в Вашем проекте.
Непрерывная интеграция является более чем просто инструментом, который автоматизирует сборки - он обеспечивает быструю обратную связь и может быть использован для проверки тестами целостности и качества кода.
Сделайте покрытие кода частью Вашего процесса непрерывной интеграции и получайте немедленные результаты тестирований вместе с результатами сборки.
Составьте список работ (backlog)
Управляйте многообразием списков задач просто. Панель планирования используется для составления списка из задач, историй, дефектов и всех возможных действий для выпуска продукта. Используйте сочетания клавиш для перемещения и изменения карточек заданий. Нажмите на продукт и посмотрите в развернутом виде на список спринтов (итерация) и списки работ по каждому спринту (sprint backlog).
Добавьте задачи быстро заполнением обязательных полей в JIRA Agile формах. Просмотривайте карточки заданий отдельно по продуктам, компонентам или исполнителям и сортируйте список задач по любому полю. Составьте представления карточек заданий, используя JIRA фильтры или пользовательские ограничения. Сделайте доступными представления для всей команды, чтобы каждый член команды видел то же что видит другой.
Перетаскивайте карточки
Ответственный за продукт просто перетаскивает карточки вверх и вниз, чтобы приоритезировать список задач (backlog). Также можно нажать на любое поле в на карточке, чтобы изменить его. Выберите одно из трех представлений - Темы, Карточки или Список - чтобы видеть нужное вам количество информации.
Используйте статистических маркеры, чтобы облегчить процесс планирования. Добавьте маркер для любого поля - оценка времени работы, сложность задач (story points). Маркер разделит задачи по нужному критерию и укажет потенциал команды на данный спринт (итерация) или продукт. У вас будет представление о том, какие задания, скорее всего, будут завершены в течение спринта.