вершины. В таком случае вероятность исключения из рассмотрения
большого числа кодов заметно уменьшается.
Для устранения указанных недостатков понятие уровня абстрак-
ции необходимо дополнить свойством глубины анализа (которое легко
расширяется на циклы и операторы вызова). Данное свойство задает
максимальную глубину пути в поддереве поведения алгоритма, корень
которого лежит в начале ветвления. При превышении этой глубины
предикаты ветвлений, лежащих глубже заданного числа, перестают
добавляться в решаемую систему уравнений.
При таком подходе возрастает число ошибок первого рода, т.е.
пропускаемых ошибок, но этот недостаток частично устраняется пу-
тем проведения независимого тестирования участков кода, лежащих
глубже заданного уровня. В свою очередь это приводит к росту числа
ложных срабатываний, но запуск тестируемого алгоритма на сгенери-
рованных данных исключает ошибки второго рода.
Формализацией глубины абстракции является цикломатическая
сложность алгоритма
G
,
определяемая следующим образом:
M
=
|
E
| − |
N
|
+ 2
P,
где
M
—
цикломатическая сложность кода;
P
—
число компонент связ-
ности в графе
G
;
|
E
|
,
|
N
|
—
мощности множеств
E, N
.
Согласно общепринятому критерию [12], считается, что алгоритм
тестируем, если
M
≤
M
max
= 50
.
Тогда для обеспечения возможности
тестирования необходимо ограничить число анализируемых путей в
графе, используя механизм абстракций. Для построения эквивалент-
ного алгоритма (который необходим для исключения ложных сраба-
тываний, а также для минимизации
P
:
после редукции алгоритма до
σ
0
P
= 1
)
требуется по-прежнему строить алгоритм
G
σ
0
,
однако при
анализе путей для генерации границ классов эквивалентности пожно
ограничиться меньшим уровнем абстракции:
σ
≤
σ
C
≤
σ
0
,
где
σ
C
—
уровень абстракции, обеспечивающий непревышение цикло-
матического числа
M
max
.
Построение
σ
C
аналогично построению достаточного уровня аб-
стракции с тем изменением, что операторы добавляются в
σ
C
только
в том случае, если при этом не превышается цикломатическое число
M
max
.
Очевидно, что такая процедура построения не является детер-
минированной, потому положим, что уровень абстракции
σ
C
дает пер-
вый из всех возможных вариантов, обеспечивающих максимальную
цикломатическую сложность алгоритма:
σ
C
=
σ
Ci
,
i
= min
j
8
j
:
M
(
G
σ
C j
)
= max
M
(
G
σC
k
)
,
k
2
1
..
K,
72
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012