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

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
252
задан Peter Mortensen 16 July 2018 в 09:45
поделиться

6 ответов

Покрытие кода является измерением того, сколько строк/блоков/дуг Вашего кода выполняется, в то время как автоматизированные тесты работают.

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

Наше использование команды Magellan - внутренний набор инструментов покрытия кода. Если Вы - магазин.NET, Visual Studio интегрировала инструменты для сбора покрытия кода. Можно также прокрутить некоторые инструменты пользователя, как , эта статья описывает.

, Если Вы - магазин C++, Intel имеет [приблизительно 112] инструменты , которые работают за Windows и Linux, хотя я не использовал их. Я также услышал, что существует gcov инструмент для GCC, но я ничего не знаю об этом и не могу дать Вам ссылку.

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

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

227
ответ дан Peter Mortensen 23 November 2019 в 02:52
поделиться

Покрытие кода в основном тестирует это, сколько из Вашего кода покрыто под тестами. Так, если у Вас есть 90%-е покрытие кода, чем это означает, что существует 10% кода, который не покрыт под тестами. Я знаю, что Вы могли бы думать, что 90% кода покрыты, но необходимо посмотреть от различного угла. Что останавливает Вас для получения 100%-го покрытия кода?

А хороший пример будет этим:

if(customer.IsOldCustomer()) 
{
}
else 
{
}

Теперь, в вышеупомянутом коде существует два пути/ответвления. Если Вы всегда поражаете "ДА" ответвление тогда, Вы еще не покрываете часть, и это покажут в результатах Покрытия Кода. Это хорошо, потому что теперь Вы знаете, что, что не покрыто и можно записать тест еще для покрытия часть. Если не было никакого покрытия кода тогда, Вы просто сидите на бомбе замедленного действия для взрыва.

NCover является хорошим инструментом для измерения покрытия кода.

174
ответ дан MMM 23 November 2019 в 02:52
поделиться

Покрытие кода было объяснено хорошо в предыдущих ответах. Таким образом, это - больше ответа на вторую часть вопроса.

Мы использовали три инструмента для определения покрытия кода.

  1. JTest - собственный инструмент создается по JUnit. (Это генерирует модульные тесты также.)
  2. Cobertura - инструмент покрытия открытого исходного кода, который может легко быть вместе с тестами JUnit для генерации отчетов.
  3. Emma - другой - этот мы использовали для немного отличающейся цели, чем поблочное тестирование. Это использовалось для генерации отчетов о покрытии, когда к веб-приложению получают доступ конечные пользователи. Это вместе с веб-инструментами тестирования (пример: Canoo), может дать Вам очень полезные отчеты о покрытии, которые говорят Вам, сколько кода покрыто во время типичного использования конечного пользователя.

Мы используем эти инструменты для [1 111]

  • Обзор, что разработчики записали, что хорошие модульные тесты
  • Гарантируют, что весь код пересечен во время тестирования методом "черного ящика"
13
ответ дан Peter Mortensen 23 November 2019 в 02:52
поделиться

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

я использовал бы покрытие кода для выделения битов кода, на который я должен, вероятно, тесты записи. Например, если независимо от того, что инструмент покрытия кода показывает, что myImportantFunction () не выполняется при выполнении моих текущих модульных тестов, они должны, вероятно, быть улучшены.

В основном, 100%-е покрытие кода не означает, что Ваш код прекрасен. Используйте его в качестве руководства по более всесторонней записи (единица-) тесты.

59
ответ дан dbr 23 November 2019 в 02:52
поделиться

Для Perl существует превосходное Devel:: Покрытие модуль, который я регулярно использую на своих модулях.

, Если сборкой и установкой управляет Модуль:: Сборка, которую можно просто выполнить ./Build testcover для получения хорошего сайта HTML, который говорит Вам покрытие на sub, строку и условие, с хорошими цветами, облегчающими видеть, какой путь выполнения кода не был покрыт.

5
ответ дан moritz 23 November 2019 в 02:52
поделиться

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

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

6
ответ дан Peter Mortensen 23 November 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: