Методы, основанные на покрытии кода
Значение методов, основанных на покрытии кода, состоит в том, что они гарантируют сохранение выбранным набором тестов требуемой степени покрытия элементов P' относительно некоторого критерия структурного покрытия C, использовавшегося при создании первоначального набора тестов. Это не означает, что если атрибут программы, определенный C, покрывается первоначальным множеством тестов, он будет также покрыт и выбранным множеством; гарантируется только сохранение процента покрываемого кода. Методы, основанные на покрытии, уменьшают разброс по покрытию, требуя отбора тестов, активирующих труднодоступный код, и исключения тестов, которые только дублируют покрытие. Поскольку на практике критерии покрытия кода обычно применяются для отбора единственного теста для каждого покрываемого элемента, подходы, основанные на покрытии кода, можно рассматривать как специфический вид методов минимизации.
Разновидностью методов, основанных на покрытии кода, являются методы, которые базируются на покрытии потока данных. Эти методы эффективнее методов минимизации и почти столь же эффективны, как безопасные методы. В то же время, они могут требовать, по крайней мере, такого же времени на анализ, как и наиболее эффективные безопасные методы, и, следовательно, могут обходиться дороже безопасных методов и намного дороже других методов минимизации. Они имеют тенденцию к включению избыточных тестов в набор регрессионных тестов для покрытия зависящих от изменений пар определения-использования, что, в некоторых случаях, ведет к большому числу отобранных тестов. Этот факт зафиксирован экспериментально.
Методы, основанные на использовании потока данных, могут быть полезны и для других задач регрессионного тестирования, кроме отбора тестов, например, для нахождения элементов P, недостаточно тестируемых T'.
Метод стопроцентного покрытия измененного кода аналогичен методу минимизации. Так, для примера таблицы c Рис. 12.1 существует 4 способа отобрать 2 теста в соответствии с этим критерием. Одного теста недостаточно.
Результаты сравнения методов выборочного регрессионного тестирования приведены в Табл. 12.1.
От 0% до 100% | 100% | < 100% | < 100% |
Настраивается | Большой | Небольшой | Зависит от параметров метода |
Пренебрежимо мало | Значительное | Значительное | Значительное |
Отсутствие средства поддержки регрессионного тестирования | Высокие требования по качеству | Стоимость пропуска ошибки невелика | Набор исходных тестов создается по критерию покрытия |