Метрика покрытия кода: ограничения и примеры

Тинькоф не то чтобы верит
Тинькоф не то чтобы верит

Метрика покрытия кода показывает, какая доля исходного кода была выполнена в тестах.

Однако стопроцентное покрытие кода не гарантирует идеальное качество или отсутствие ошибок. Давайте рассмотрим два основных типа метрик покрытия кода и их ограничения.

Типы метрик покрытия кода

1. Code Coverage (Покрытие кода)

2. Branch Coverage (Покрытие ветвей)

Code Coverage

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

Пример:

В этом примере тесты покрывают 50% строк кода.
В этом примере тесты покрывают 50% строк кода.

Теперь рассмотрим пример рефакторинга кода:

В этом примере тесты покрывают только одну строку, что соответствует 100% покрытия.
В этом примере тесты покрывают только одну строку, что соответствует 100% покрытия.

Проблемы с таким подходом:

1. Тесты могут выполнять строки кода без проверки их корректности.

2. Тесты не обязательно покрывают все возможные крайние случаи.

3. Высокий процент покрытия может создать иллюзию надежности.

Branch Coverage

Branch Coverage измеряет отношение количества покрытых ветвей к общему количеству ветвей в коде. Ветви – это управляющие структуры, такие как if, switch, и циклы.

Пример:

В этом примере тесты покрывают все возможные ветви: if (x > 10), else if (x < 5) и else. Таким образом, достигается стопроцентное покрытие ветвей. Однако это не гарантирует, что все граничные условия, такие как точные значения 10 и 5, были протестированы.
В этом примере тесты покрывают все возможные ветви: if (x > 10), else if (x < 5) и else. Таким образом, достигается стопроцентное покрытие ветвей. Однако это не гарантирует, что все граничные условия, такие как точные значения 10 и 5, были протестированы.

Проблемы с таким подходом:

1. Неполное покрытие сценариев.

2. Упущенные граничные случаи.

Заключение:

✔ Метрика покрытия кода, будь то code coverage или branch coverage, является полезным инструментом, и они могут говорить о проблемах

✔ Низкие показатели говорят о проблема с тестами, однако высокие показатели не гарантируют что с тестами все в порядке

✔ Метрики покрытия - начальный этап на пути к хорошим тестам.

Было полезно? Присоединяйтесь к моему телеграм-каналу, — там ещё больше разборов и примеров для тестирования.

4
Начать дискуссию