Page 5 - И.В. Рудаков, А.В. Ребриков - ПРОВЕРКА ВЫПОЛНЕНИЯ ФУНКЦИОНАЛЬНЫХ ТРЕБОВАНИЙ К АЛГОРИТМУ НА ОСНОВЕ СТРУКТУРНОЙ ГЕНЕРАЦИИ МОДУЛЬНЫХ ТЕСТОВ

точках, близких к этим наборам. Метод базируется на существую-
щем методе граничных значений за тем исключением, что граничные
значения берутся не из артефактов анализа предметной области, а из
кода. Кроме того, к граничным значениям необходимо добавить зна-
чения переменных из условий корректности (которые, строго говоря,
являются артефактами предыдущих этапов разработки).
Алгоритм структурной генерации тестов описывается следующим
образом.
Входные данные:
граф выполнения программы
G
,
условия кор-
ректности
σ
.
Выходные данные:
I
наборы входных параметров исходной
программы.
Переменные:
S
v
множество операторов, зависящих от операто-
ров, изменяющих значение переменной
v
;
S
множество решаемых
систем уравнений;
I
множество входных значений алгоритма. Тогда
1)
I
= []
,
S
= []
;
2)
Получить все пути
P
из начальной точки алгоритма
G
в конеч-
ную;
3)
8
p
2
P
получить систему:
s
=
INPUTGEN
(
p
)
,
8
n
2
p
8
p
v
2
2
σ
(
n
)
8
v
2
p
v
:
n
2
S
v
добавить в
s
отрицание предиката
p
v
,
если его
еще нет в
s
,
S
s
;
4)
8
s
2
S
получить, если возможно, решение:
i
=
SOLV E
(
s
)
,
I
i
.
Вернуть
I
.
Процедура INPUTGEN( p )
5)
s
= [ ]
;
6)
8
v
2
p
определить ее тип;
7)
если
v
выражение, то добавить его в систему уравнений
s
;
8)
если
v
условие, и исходящее ребро из него помечено, как
истинная, то добавить его предикат в систему уравнений
s
;
9)
если
v
условие, и исходящее ребро из него помечено, как
ложное, то получить отрицание предиката и добавить его в систему
уравнений
s
;
10)
вернуть
s
.
Ключевым недостатком метода структурной генерации является
его неработоспособность при большом числе ветвлений алгоритма,
циклов и рекурсий. Безусловно, метод обеспечивает полное покры-
тие кода и способен обнаруживать нарушение условий корректности,
однако затрачиваемые ресурсы (как память, так и время) растут экс-
поненциально с увеличением числа ветвлений.
Кроме того, предложенный метод масштабирования алгоритмов по
механизму зависимостей плохо оптимизирует вычислительные затра-
ты, если контролируемый оператор находится далеко от начальной
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012
71