Структурные методы тестирования программ
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Тестирование – проверка работы программы по результатам ее выполнения на специально подобранных наборах исходных данных или тестах.

Существуют следующие методы тестирования:

1. полное

2. выборочное

3. структурное выборочное

(3) основывается на разделении пространства исходных данных на классы. Каждый класс позволяет подтвердить определенный свойства или работоспособность отдельных элементов структуры программы.

Здесь основная задача: построение генератора тестовых наборов.

Исходя из тестируемой программы Т выбирается набор путей П в структуре программы, который удовлетворяет критериям К (критерий тестирования). Наиболее часто К основываются на структуре программы.

Достаточно простое требование может заключаться в том, что выбранные пути должны перекрывать (задействовать) все операторы или команды программы. Затем генерируются ограничения О, которые позволяют реализовать тот или иной путь на графе программы.

О преобразуются модулем ПВ в ограничения к исходным данным. Тогда с помощью алгоритма А генерируются тестовые наборы числовых значений исходных данных ТН, которые удовлетворяют отдельным ограничениям.

Структура генератора тестов:

Критерии выбора путей на структуре программы состоит в том, что все операторы должны перекрываться хотя бы один раз.

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

ТЕСТИРОВАНИЕ ВЕТВЕЙ.

Заключается в том, что выбранные пути должны перекрывать все ветви структуры программы и все разветвления (динамическое тестирование).

Данный подход гарантирует однократное тестирование всех ветвей. Значит число ошибок возникает из-за неточностей при формулировке условий выхода из циклов  предполагается вводить дополнительное требование, чтобы каждый цикл испытывался двумя тестами:

1) привел бы к исполнению цикла с возвратом

2) проходил бы цикл без возврата.

ВЕРТИФИКАЦИЯ ПРОГРАММ:

- это доказательство их правильности при помощи математических методов доказательства теорем. Для этого программа представляется в виде последовательности ряда более или менее простых утверждений, доказательство которых не представляет труда.

СИМВОЛИЧЕСКОЕ ТЕСТИРОВАНИЕ

 В отличие от верификации, тестирование заключается в проверке правильности числовых результатов работы. Программы при специально подобранных значениях входных переменных (тестовых наборов).

В некоторых случаях тестирование может производится символически: выполнение процедур, которые основаны на символических входах (обозначение входных переменных, позволяющих выразить выходы программы также в символическом виде).

Для различных путей существуют различные входы и выходы.

«+» (символического тестирования предоставления числовым): если числовой текст позволяет проверить работу программы на отдельных числовых значениях входных наборов, то символическое тестирование оперирует множеством исходных данных, которые определены ограниченными.

Символическое выражение путей программы м.б. получены либо прямой подстановкой, либо обратной.

Прямая соответствует действиям, проделываемым при реализации определенного пути в структуре программы. При этом, символическое исполнение осуществляется для каждого исполняемого оператора, с запаздыванием промежуточных символических выражений.

В случае обратной: ограничения на входные переменные строятся снизу вверх при прохождении пути на графе программы в обратном направлении. В результате получаются такие же ограничения как и при прямой подстановке.

«+» обратной: не требуется память для запоминания символических записей переменных.

«+» прямой: имеется возможность раннего обнаружения несуществующих путей с противоречивыми ограничениями на входных данных.

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

Наиболее часто проблема м.б. преодолена подстановкой некоторого заранее оцененного числа итераций. При этом полученные ограничения могут оказаться неточными.

Второе затруднение связано с наличием в программе модулей. Данная проблема преодолевается символическим исполнением модулей.

Третья проблема: работа с массивами.

Дата: 2019-12-10, просмотров: 232.