Тестовое Покрытие (Test Coverage). Критерии тестового покрытия в Тестировании ПО


Тестовое покрытие
– критерий, отображающий добротность тестирования. Характеризует полноту охвата тестами программного кода либо требований к нему.
Основной подход к оцениванию – формирование тестового пула. Значение тестового покрытия кода находится в прямой зависимости от количества отобранных вариантов проверки к нему.
Многозадачность и универсальность современного софта обусловливает невозможность организации тестового покрытия с показателем в 100%. Так что для максимального охвата тестируемого кода, разработаны особые приёмы и инструменты.
Существуют три подхода для оценки качества и выражения тестового покрытия в численном представлении в зависимости от области проверки: покрытие требований, покрытие кода и покрытие на базе анализа потока управления. Подробнее о каждом.
Покрытие требований (Requirements Coverage)
. Применяя матрицу трассировки, рассматривается охват тестами требований, выдвигаемых к программе.
Формула для оценки выглядит следующим образом:

Tcov= (Lcov/Ltotal)*100.

Результат выражается в процентах.

Расшифровка переменных:
Tcov — тестовое покрытие;
Lcov – число отобранных для тестирования требований;
Ltotal – полное число заявленных требований.

Тестовое покрытие

Один из путей упрощения задачи – разделение требований к коду на подразделы. Для этого важно провести их тщательный анализ. В последующем, подраздел привязывается к проверяющим тестам. Сумма этих связей называется «матрица трассировки». Она позволяет отследить проверяемые требования для конкретного тестового случая.
Бессмысленным является применение тестов без связи с требованиями. В то же время, если не привязать к проверке требование, его проверка проведена не будет. Вследствие этого, об уровне реализации требования в программном коде судить не представится возможным. Поскольку многозадачность современного софта влечёт за собой некоторую стандартизацию, выражающуюся в общих, для стандартных условий, решениях, есть смысл применять стандартные техники тест дизайна.
Покрытие кода (Code Coverage)
В этом случае отслеживаются области программного кода, которые не были охвачены процессом собственно поверки.
Формула для оценки выглядит так:

Tcov = (Ltc/Lcode) * 100%
Результат выражается в процентах.

Переменные:
Tcov – тестовое покрытие;
Ltc – число охваченных проверкой строк кода;
Lcode – суммарное количество строк кода.

Для рутинной работы разработаны стандартные инструменты. Например – Clover. Этот продукт отслеживает и предоставляет информацию о сроках вхождений при тестировании. Анализ данных позволяет существенно расширить область покрытия, поскольку выявляются дублирующие проверки и случаи выпадения из тестирования участков кода. Такая методика оптимизации покрытия находит применение при анализе по принципу «белого ящика» и в стратегиях модульного, интеграционного, системного тестирования. Не зная внутренней структуры кода, как можно предположить из формулы, это не самый лучший выбор для реализации тестирования по принципу «чёрного ящика». Будут трудности при конфигурировании, установке. Придётся привлекать и авторов продукта.

Тестирование потоков управления (Control Flow Testing)
Данный подход также более удобен при реализации принципа
«белого ящика». В этом случае анализу подвергаются пути исполнения программного кода софта, что реализуется разработкой и внедрением тест кейсов для охвата тестированием этих самых путей. Как и в первом случае, существует особый принцип, облегчающий покрытие желаемой области. Используется выстраивание графов потока управления (Control Flow Graph). По соотношению количества точек входа и точек выхода, выделяют три составляющих:
– блок процесса (по одной точке на вход и выход).
– точка альтернативы (на одну точку входа приходится больше одной точки выхода).
– точка соединения (на одну точку выхода приходится больше одной точки входа).
Проверка потоков управления предусматривает несколько уровней покрытия:

Уровень
Наименование
Описание
Нулевой
Без наименования
Подробное тестирование возлагается на пользователей. Сам тестировщик проводит неглубокое стандартное исследование.
Первый
Покрытие (П.) операторов
В тесте должен быть задействован каждый оператор кода хотя бы раз
Второй
П. ответвлений
Хотя бы раз проверяется каждая точка разветвления кода алгоритма
Третий
П. условий
Если условие имеет два варианта (ИСТИНА или ЛОЖЬ) решения, оно должно быть выполнено по разу для каждого случая.
Четвёртый
П. условий и ответвлений
Предусматривается проверка для каждого условия и ответвления
Пятый
П. множества условий
Суммарное применение уровней со второго по четвёртый.
Шестой
П. бесконечного числа путей
Иногда число путей упорно стремится к бесконечности при зацикливании. Тогда проверке подлежит ограниченное множество циклов.
Седьмой
П. путей
Проверке подлежат все пути без исключения


0 комментариев