Учебное пособие по покрытию кода: тестирование ветвей, операторов и решений

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

Покрытие кода — это показатель, который описывает степень проверки исходного кода программы. Это одна из форм белого box тестирование, которое выявляет области программы, не задействованные в наборе тестовых примеров. Он также создает несколько тестовых примеров для увеличения покрытия и определения количественной меры покрытия кода.

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

Зачем использовать тестирование покрытия кода?

Вот несколько основных причин использования покрытия кода:

  • Это поможет вам измерить эффективность реализации тестов.
  • Он предлагает количественное измерение.
  • Он определяет степень проверки исходного кода.

Методы покрытия кода

Фоллоwing основные методы покрытия кода

  • Покрытие заявлений
  • Охват решений
  • Покрытие филиала
  • TogglЭлектронное покрытие
  • Покрытие ФСМ

Покрытие заявления

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

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

Покрытие заявления

In Белый Box Тестирование, тестер концентрируется на том, как работает программное обеспечение. Другими словами, тестер будет концентрироваться на внутренней работе исходного кода, касающейся графов или блок-схем управления.

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

Давайте разберемся в этом на примере, как рассчитать покрытие операторов.

Сценарий расчета покрытия операторов для данного исходного кода. Здесь мы рассмотрим два разных сценария, чтобы проверить процент покрытия операторов для каждого сценария.

Исходный код:

Prints (int a, int b) {                       ------------  Printsum is a function 
    int result = a+ b; 
    If (result> 0)
    	Print ("Positive", result)
    Else
    	Print ("Negative", result)
    }                                        -----------   End of the source code 

Сценарий 1:

Если А = 3, В = 9

Покрытие заявления

Заявления, отмеченные желтым цветом, — это те, которые выполняются в соответствии со сценарием.

Количество выполненных операторов = 5, Общее количество операторов = 7

Покрытие заявлений: 5/7 = 71%

Покрытие заявления

Подобноwise мы увидим сценарий 2,

Сценарий 2:

Если А = -3, В = -9

Покрытие заявления

Заявления, отмеченные желтым цветом, — это те, которые выполняются в соответствии со сценарием.

Количество выполненных операторов = 6

Общее количество утверждений = 7

Покрытие заявления

Покрытие заявлений: 6/7 = 85%

Покрытие заявления

Но в целом, если вы видите, все заявления подпадают под оба сценария. Таким образом, мы можем сделать вывод, что общее покрытие операторов составляет 100%.

Покрытие заявления

На что распространяется покрытие заявлений?

  1. Неиспользованные операторы
  2. Мертвый код
  3. Неиспользуемые ветки
  4. Отсутствующие заявления

Тестирование покрытия решений

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

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

Тестирование покрытия решений

Пример покрытия решений

Рассмотрим следующееwing код-

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }

Сценарий 1:

Значение a равно 2

Тестирование покрытия решений

Код, выделенный желтым, будет выполнен. Здесь проверяется результат «Нет» решения If (a>5).

Охват решений = 50 %

Сценарий 2:

Значение a равно 6

Тестирование покрытия решений

Код, выделенный желтым, будет выполнен. Здесь проверяется результат «Да» решения If (a>5).

Охват решений = 50 %

Тестовый кейс Значение А Результат Охват решений
1 2 2 50%
2 6 18 50%

Тестирование покрытия филиалов

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

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

Формула для расчета охвата филиалов:

Тестирование покрытия филиалов

Пример покрытия филиалов

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

Рассмотрим следующееwing код-

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }                                       

Тестирование покрытия филиалов

Покрытие филиалов также будет учитывать безусловное ветвление.

Тестовый кейс Значение А Результат Охват решений Покрытие филиала
1 2 2 50% 33%
2 6 18 50% 67%

Преимущества покрытия филиала:

Охват филиалов. Тестирование предлагает следующие возможности:wing преимущества:

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

Тестирование покрытия условий

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

Например, если выражение имеет логическое значение operaтакие операции, как AND, OR, XOR, которые указывают на полные возможности.

Покрытие условий не дает гарантии полного покрытия решений.

Формула для расчета покрытия условий:

Тестирование покрытия условий

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

Тестирование покрытия условий

Для приведенного выше выражения у нас есть 4 возможные комбинации.

  • TT
  • FF
  • TF
  • FT

Рассмотрим следующееwing вход

Х = 3

Y = 4

(Икс ИСТИНА Покрытие состояния составляет ¼ = 25%
А = 3

В = 4

(а>б) НЕПРАВДА

Покрытие конечного автомата

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

Какой тип покрытия кода выбрать

Это, конечно, самый трудный ответ. Чтобы выбрать метод покрытия, тестировщику необходимо проверить, что

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

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

Покрытие кода и функциональное покрытие

Покрытие кода Функциональное покрытие
Покрытие кода показывает, насколько хорошо исходный код был проверен на вашем тестовом стенде. Функциональный охват показывает, насколько хорошо функциональность проекта охвачена вашим испытательным стендом.
Никогда не используйте спецификацию проекта Использовать проектную спецификацию
Сделано разработчиками Сделано тестировщиками

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

Вот список важных инструментов покрытия кода:

Имя инструмента Описание
Обслуживание Это инструмент покрытия кода с открытым исходным кодом. Он измеряет покрытие тестами путем инструментирования базы кода и анализирует, какие строки кода выполняются, а какие не выполняются при запуске набора тестов.
Клевер Клевер также снижает testng время, запуская только тесты, охватывающие код приложения, измененный со времени предыдущей сборки.
DevPartner DevPartner позволяет разработчикам анализировать код Java на предмет качества кода и совместимости.plexность.
Эмма EMMA поддерживает покрытие класса, метода, строки и базового блока, уровни агрегированного исходного файла, класса и метода.
Калистик Kalistick — стороннее приложение, которое анализирует коды с разных точек зрения.
CoView и CoAnt Программное обеспечение для кодирования — это инструмент покрытия кода для метрик, создания макетов объектов, тестируемости кода, покрытия путей и ветвей и т. д.
Яблочко для C++ BulseyeCoverage — это инструмент покрытия кода для C + + и C.
Сонар Sonar — это инструмент покрытия открытого кода, который помогает вам управлять качеством кода.

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

Преимущества покрытия кода Недостатки покрытия кода
Полезно оценить количественный показатель покрытия кода. Даже если какая-либо конкретная функция не реализована в проекте, покрытие кода все равно составляет 100%.
Это позволяет вам создавать дополнительные тестовые примеры для увеличения покрытия. Невозможно определить, протестировали ли мы все возможные значения признака с помощью покрытия кода.
Это позволяет вам находить области программы, которые не проверяются набором тестовых примеров. Покрытие кода также не говорит о том, насколько хорошо вы рассмотрели свою логику.
В случае, если указанная функция не реализована или не включена в спецификацию, методы, основанные на структуре, не смогут обнаружить эту проблему.

Итого

  • Покрытие кода — это показатель, который описывает степень проверки исходного кода программы.
  • Это поможет вам измерить эффективность реализации тестов.
  • Пять методов покрытия кода: 1.) Покрытие операторов 2.) Покрытие условий 3) Покрытие ветвей 4) Toggle Покрытие 5) Покрытие FSM
  • Покрытие операторов предполагает выполнение всех исполняемых операторов в исходном коде хотя бы один раз.
  • Покрытие решений сообщает об истинных или ложных результатах каждого логического выражения.
  • В охвате филиала проверяется каждый результат модуля кода.
  • Условное выражение покажет, как оцениваются переменные или подвыражения в условном операторе.
  • Покрытие конечного автомата, безусловно, является наиболее удобным.plex тип метода покрытия кода
  • Чтобы выбрать метод покрытия, тестировщику необходимо проверить стоимость потенциального штрафа, потери репутации, потери продаж и т. д.
  • Покрытие кода показывает, насколько хорошо исходный код был проверен вашим тестовым стендом, а функциональное покрытие измеряет, насколько хорошо охвачена функциональность проекта.
  • Cobertura, JTest, Clover, Emma, ​​Kalistick — несколько важных инструментов покрытия кода.
  • Code Coverage позволяет создавать дополнительные тестовые примеры для увеличения покрытия.
  • Покрытие кода не помогает вам определить, протестировали ли мы все возможные значения функции.