Анализ покрытия кода невозможен без инструмента сбора покрытия. К счастью, в настоящее время этому есть достаточная инструментальная поддержка на любом современном языке программирования. Собрать информацию о покрытии кода нетрудно, легко генерировать отчеты и графики. Только обычно этим все и заканчивается.
Между тем, вполне возможно употребить результаты покрытия кода с пользой для тестируемого программного продукта и возможно построить процесс с использованием анализа покрытия кода.
У вас получилось? Приходите и расскажите!
Мы постараемся построить сессию так, чтобы у вас была такая возможность.
Я готов рассказать какие технологии использовались для таких продуктов как NetBeans, Java, JavaFX и других. Я также постараюсь показать, где это применимо, осветить теоретическую сторону вопроса.
С практической стороны, использование результатов анализа кода можно условно разбить на следующие категории:
- Метрики
- Идентификация тестов: существующих, новых
- Контроль оттестированности нового кода
Метрики
Возможно прямое использование покрытия кода как метрики (block/line/branch, etc.), однако это сложно в связи с трудностью определения желаемого уровня покрытия. Данные о покрытии кода можно использовать и для получения синтетических метрик, которые по своей природе являются метриками покрытия спецификации. Эти метрики часто трудно получить, но обычно легко использовать.
Создание новых тестов
Разумеется, покрытие кода имеет самое прямое отношение к тому, какие тесты нужно добавить. Но на практике непокрытого кода оказывается слишком много, и нужна дополнительная приоритезация. Возможна комбинация результатов покрытия с такой информацией как различные атрибуты исходного кода или данных о дефектах связанных с кодом.
Сужение набора тестов
Одним из прямых использований результатов покрытия является уменьшение времени на тестовый запуск. Однако даже такая простая техника должна быть использована с осторожностью.
Разработка тестов одновременно с кодом
Каждое изменение кода представляет риск создания регрессии. Каждая порция нового кода может не выполнять того, что от него ожидается. Конечно же, покрытие кода помогает осуществлять контроль качества нового кода.
Презентация:
Запись выступления: