Code Инструмент анализа покрытия кода: тестирование операторов, ветвлений и решений.
⚡ Умное резюме
Code Покрытие кода — это метод измерения «белого ящика», который показывает, насколько исходный код был протестирован набором тестов.ping Команды выявляют непроверенные утверждения, ветви, условия и пути, в которых могут скрываться дефекты.

Что такое Code Покрытие?
Code охват Это показатель, описывающий степень тестирования исходного кода программы. Это одна из форм... тестирование белого ящика Это позволяет выявить области программы, не охваченные набором тестовых случаев. Также это помогает создавать дополнительные тестовые случаи для увеличения охвата и определения количественной меры покрытия кода.
В большинстве случаев система анализа покрытия кода собирает информацию о работающей программе. Затем она объединяет эту информацию с данными исходного кода для создания отчета о покрытии кода тестовым набором.
Зачем использовать Code Тестирование покрытия кода?
Вот несколько основных причин использования покрытия кода:
- Это помогает измерить эффективность реализации тестов.
- Это позволяет проводить количественную оценку результатов тестирования.
- Он определяет степень проверки исходного кода.
Code Методы покрытия
Ниже перечислены основные методы анализа покрытия кода:
- Покрытие заявления
- Охват решений
- Покрытие филиала
- TogglЭлектронное покрытие
- Покрытие ФСМ
Покрытие заявления
Покрытие заявления Тестирование методом «белого ящика» — это метод тестирования, при котором все исполняемые инструкции в исходном коде выполняются как минимум один раз. Он используется для подсчета количества выполненных инструкций в исходном коде. Основная цель покрытия инструкций — охватить все возможные пути, строки и инструкции в исходном коде.
Покрытие операторов используется для определения сценариев на основе структуры тестируемого кода.
При тестировании методом «белого ящика» тестировщик концентрируется на том, как работает программное обеспечение. Другими словами, тестировщик фокусируется на внутренней работе исходного кода, касающейся графов потока управления или блок-схем.
Как правило, в любом программном обеспечении, если вы посмотрите на исходный код, вы обнаружите множество различных элементов, таких как операторы, функции, циклы.pingобработчики исключений и так далее. В зависимости от входных данных программы, некоторые операторы кода могут не выполняться. Цель покрытия операторов — охватить все возможные пути, строки и операторы в коде.
Давайте разберемся на примере расчета охвата отчетности. Рассмотрим два разных сценария, чтобы проверить процент охвата отчетности для каждого из них.
Источник Code:
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%.
Сценарий 2: Если А = -3, В = -9
Операторы, отмеченные желтым цветом, — это те, которые выполняются в соответствии со сценарием. Количество выполненных операторов = 6, общее количество операторов = 7, следовательно, покрытие операторов = 6/7 = 85%.
Но в целом, как вы видите, все утверждения охватываются обоими сценариями. Таким образом, мы можем заключить, что общий охват утверждений составляет 100%.
На что распространяется покрытие заявлений?
- Неиспользованные операторы
- Dead Code
- Неиспользуемые ветки
- Отсутствующие заявления
Тестирование покрытия решений
Охват решений Тестирование с использованием метода «белого ящика» сообщает о результатах выполнения каждого логического выражения в исходном коде: истинно или ложно. Цель тестирования с использованием метода покрытия решений — охватить и проверить весь доступный исходный код, убедившись, что каждая ветвь каждой возможной точки принятия решения выполнена хотя бы один раз.
В этом типе покрытия выражения могут становиться сложными, что затрудняет достижение 100% покрытия. Именно поэтому для оценки этого показателя используются различные методы. Эти методы отдают приоритет наиболее важным комбинациям. Хотя он похож на покрытие ветвлений, он обеспечивает большую чувствительность к потоку управления.
Пример покрытия решения
Рассмотрим следующий код:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Сценарий 1: Значение параметра a равно 2. Если отмечен результат «Нет» (a>5), то охват решения равен 50%.
Сценарий 2: Значение параметра a равно 6. Если отмечено «Да» в решении (a>5), то охват решения равен 50%.
| Тестовый кейс | Значение А | Результат | Охват решений |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Тестирование покрытия филиалов
Покрытие филиала Это метод тестирования «белого ящика», при котором проверяется каждый результат выполнения модуля кода (оператор или цикл). Цель покрытия ветвей — гарантировать, что каждое условие принятия решения в каждой ветви выполняется хотя бы один раз. Это помогает измерить долю независимых сегментов кода и выявить участки, не имеющие ветвей.
Например, если результаты являются двоичными, вам необходимо проверить как истинные, так и ложные результаты.
Формула для расчета охвата филиалов:
Пример покрытия филиалов
Чтобы изучить покрытие ветвлений, рассмотрим тот же пример, что и ранее. Покрытие ветвлений также учитывает безусловное ветвление.
| Тестовый кейс | Значение А | Результат | Охват решений | Покрытие филиала |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Преимущества покрытия филиала:
- Позволяет проверить все ветви кода.
- Помогает гарантировать, что ни одна ветвь кода не приведет к каким-либо сбоям в работе программы.
- Устраняет проблемы, возникающие из-за тестирования покрытия запросов.
- Позволяет находить области, которые не тестируются другими методами тестирования.
- Позволяет получить количественную оценку покрытия кода.
- Функция покрытия ветвей игнорирует ветви внутри логических выражений.
Тестирование покрытия условий
Покрытие условийПокрытие выражений — это метод тестирования, используемый для проверки и оценки переменных или подвыражений в условном операторе. Цель покрытия выражений — проверить отдельные результаты для каждого логического условия. Покрытие выражений обеспечивает лучшую чувствительность к потоку управления, чем покрытие решений. В этом случае рассматриваются только выражения с логическими операндами.
Например, если выражение содержит логические операции, такие как И, ИЛИ или Исключающее ИЛИ, это указывает на общее количество возможных вариантов. Покрытие условий не гарантирует полного покрытия решений.
Формула для расчета покрытия условий:
Для выражения с двумя операндами существует четыре возможных комбинации: TT, FF, TF и FT. Рассмотрим входные данные X=3, Y=4 (x). б) ЛОЖЬ, что дает покрытие по условиям 1/4 = 25%.
Покрытие конечного автомата
Покрытие конечных автоматов, безусловно, является наиболее сложным типом метода покрытия кода. Это связано с тем, что он работает с поведением проектируемого объекта. В этом методе покрытия необходимо учитывать, сколько раз посещаются или проходят определенные состояния. Он также проверяет, сколько последовательностей включено в конечный автомат.
Какой тип Code Выбор страхового покрытия
Это, безусловно, самый сложный ответ. Для выбора метода анализа покрытия кода тестировщик должен проверить, выполняется ли следующее:
- В тестируемом коде обнаружен один или несколько невыявленных дефектов.
- стоимость потенциального штрафа,
- Цена утраченной репутации.
- стоимость упущенной выгоды и так далее.
Чем выше вероятность того, что дефекты приведут к дорогостоящим производственным сбоям, тем более серьезный уровень страхового покрытия вам придется выбрать.
Code Страховое покрытие против функционального страхового покрытия
| Code Покрытие | Функциональное покрытие |
|---|---|
| Показывает, насколько хорошо исходный код был протестирован вашим тестовым стендом. | Измеряет, насколько хорошо функциональность конструкции была проверена на вашем испытательном стенде. |
| Никогда не использует техническое задание. | Использует техническое задание. |
| Сделано разработчиками. | Выполнено тестировщиками. |
Code Инструменты анализа покрытия
Вот список важных инструментов для анализа покрытия кода:
| Имя инструмента | Описание |
|---|---|
| Cobertura | Инструмент для анализа покрытия кода с открытым исходным кодом. Он измеряет покрытие тестов, инструментируя кодовую базу и анализируя, какие строки кода выполняются, а какие нет при запуске набора тестов. |
| Клевер | Клевер (OpenCloverКроме того, это сокращает время тестирования, поскольку запускаются только те тесты, которые охватывают код приложения, измененный с момента предыдущей сборки. |
| DevPartner | DevPartner позволяет разработчикам анализировать Java код для оценки качества и сложности кода. |
| Эмма | EMMA поддерживает покрытие кода на уровне классов, методов, строк и базовых блоков, агрегированное на уровне исходного файла, класса и метода. |
| Калистик | Kalistick — это стороннее приложение, которое анализирует код с разных точек зрения. |
| CoView и CoAnt | Инструмент для анализа покрытия кода, позволяющий собирать метрики, создавать фиктивные объекты, повышать тестируемость кода, анализировать покрытие путей и ветвей и многое другое. |
| Яблочко для C++ | BullseyeCoverage — это инструмент для анализа покрытия кода. C++ и C. |
| Сонар | Sonar — это инструмент с открытым исходным кодом для анализа покрытия кода, который помогает управлять качеством кода. |
Преимущества и недостатки использования Code Покрытие
| Преимущества | Недостатки |
|---|---|
| Полезно оценить количественный показатель покрытия кода. | Даже если конкретная функция не реализована в проекте, отчет о покрытии кода все равно показывает 100%. |
| Позволяет создавать дополнительные тестовые случаи для увеличения охвата тестирования. | Невозможно определить, были ли проверены все возможные значения характеристики с помощью анализа покрытия кода. |
| Позволяет найти области программы, не задействованные в наборе тестовых случаев. | Code Показатель охвата не указывает на то, насколько подробно и хорошо вы изложили свою логику. |






