Реклама:

Тестирование корректности записи-считывания перемен-» ных рассмотрим на уровне символического исполнения программного модуля. В этом случае после устранения синтаксических и семантических ошибок по тексту программы строится графовая диагностическая модель программы. Для каждого маршрута исполнения программы или для некоторых связанных групп маршрутов выделяются операции над данными. Для операций записи и считывания регистрируются имена величий и имена регистров или ячеек памяти, а также номера вершин графа программы, на которых осуществляются операции (см. рис. 3.11). В результате образуется список маршрутов с точным указанием места операций записи — считывания переменных и их размещения в памяти.

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

существует ли запись контролируемой переменной на данном маршруте в заданный регистр:

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

Кроме того, выделяются операции записи, для которых не оказалось операции считывания на данном маршруте. Упорядочение просмотра можно производить, опираясь на номера маршрутов программы, на имена переменных или на имена регистров. В общем случае анализ, записи — считывания переменных целесообразно начинать с объекта, имеющего минимальную размерность. Обычно в программе используется мало регистров при большом числе операций записи-считывания и маршрутов. Поэтому наиболее эффективно организовывать проверку операций по именам регистров, прослеживая последовательно имена переменных, использующих соответствующий регистр, на различных маршрутах.

Несколько иной подход к тестированию процесса использования переменных основан на анализе потока данных 167, 81, 1001. Выявляются все определения переменных, которые могут достигать каждой вершины графа программы по управлению.-При этом под определением данных подразумеваются действия в программе, которые изменяют соответствующую единицу данных. Использование данных — это операция в выражении, которая обращается к переменной, не изменяя ее. В результате для каждой точки программы устанавливается, какие переменные действуют в этой точке, т. е. какие данные, сформи-1 рованные до прихода в эту точку, используются после выхода изнее. Анализ потока данных позволяет обнаруживать ошибки,: обусловленные нарушением корректной последовательности' операций определение-использование данных и выявлять переменные, которые целесообразно сохранять на регистрах.

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


⇐ Предыдущая страница| |Следующая страница ⇒