Цикломатическая сложность алгоритма на рис.1.:
V(G) = 3 региона;
2) V(G) = 7 дуг - 6 узлов + 2 = 3;
3) V(G) = 2 предикатных узлов + 1 = 3. Независимые пути:
Путь 1: а - х – end if.
Путь 2: а - b - х – end if.
Путь 3: а - b - y – end if.
Критерий покрытия операторов подразумевает такой подбор тестов, чтобы каждый оператор программы выполнялся, по крайней мере, один раз. Это необходимое, но недостаточное условие для приемлемого тестирования.
Для реализации критерия покрытие решений (переходов) необходимо такое количество и состав тестов, чтобы результат проверки каждого условия (т.е. решение) принимал значения «истина» или «ложь», по крайней мере, один раз. Нетрудно видеть, что критерий покрытия решений удовлетворяет критерию покрытия операторов, но является более «сильным».
Критерий покрытия условий является еще более «сильным» по сравнению с предыдущими. В этом случае формируют некоторое количество тестов, до статочное для того, чтобы все возможные результаты каждого условия в решении были выполнены, по крайней мере, один раз. Однако, как и в случае покрытия решений, этот критерий не всегда приводит к выполнению каждого оператора, по крайней мере, один раз. К критерию требуется дополнение, заключающееся в том, что каждой точке входа управление должно быть передано, по крайней мере, один раз.
Согласно покрытию решений/условий тесты должны составляться так, чтобы, по крайней мере, один раз выполнились все возможные результаты каждого условия и все результаты каждого решения, и каждому оператору управление передавалось, по крайней мере, один раз.
Критерий комбинаторное покрытие условий требует создания такого множества тестов, чтобы все возможные комбинации результатов условий в каждом решении и все операторы выполнялись, по крайней мере, один раз.
Пример 2.
Требуется выполнить структурное тестирование текста программы, которая определяет значение х в зависимости от значений параметров процедуры.
Procedure т (a, b:real; var x:real); begin
if(a>1) and (b=0) then x:=x /a; if(a=2) or (x>l) then x:=x+1;
end;
Для формирования тестов программу представляют в виде графа, вершины которого соответствуют операторам программы, а дуги представляют возможные варианты передачи управления (рис.2).
Достарыңызбен бөлісу: |