Тестирование софта - статьи

       

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


Тестовый набор удовлетворяет критерию покрытия ветвей потока управления, если при выполнении этого тестового набора управление хотя бы один раз проходит по каждому ребру графа потока управления. Заметим, что любой тестовый набор, удовлетворяющий этому критерию, удовлетворяет также и критерию покрытия операторов исходного кода. Обратное утверждение, однако, неверно []. Элементами тестового покрытия являются переходы в графе потока управления. С каждым переходом в графе потока управления можно связать условие, при котором этот переход может быть выполнен. Переход от оператора q к оператору r, с которым связано условие p, обозначим как

Покрытие ветвей потока управления
. Для выполнения перехода
Покрытие ветвей потока управления
необходимо и достаточно, чтобы был выполнен оператор q, и чтобы после этого условие p обратилось в истину. Соответственно, для тестов, не покрывающих оператор q, в качестве оценочной подходит функция
Покрытие ветвей потока управления
, определённая уравнением , так как истинность условия p для оценки таких тестов роли не играет. Для тестов, покрывающих оператор q, функция
Покрытие ветвей потока управления
обращается в 0. Для таких тестов оценочная функция должна определять, насколько близок тест к тесту, для которого после выполнения оператора q будет истинным условие p. Таким образом, в общем виде оценочную функцию для критерия покрытия ветвей потока управления можно определить следующим образом:

Покрытие ветвей потока управления
(7)

Значение функции

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

Функцию

Покрытие ветвей потока управления
можно определять по-разному в зависимости от характера условия p. Если условие имеет форму простого (не)равенства
Покрытие ветвей потока управления
, где «
Покрытие ветвей потока управления
» обозначает одно из отношений « < », « > », « = », « ≤ » или « ≥ », то для определения функции
Покрытие ветвей потока управления
можно использовать значение
Покрытие ветвей потока управления
, например, следующим образом:

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

Если условие представляет собой конъюнкцию

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

Содержание раздела