Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 27
Текст из файла (страница 27)
Объект определяется в тех случаях, когда ему присваивается новое значение, ои инициализируется, создается или конкретизируется. Не путайте имя объекта или адрес ячейки памяти, использующейся для хранения его значения, с различными возможными определениями этого объекта.
Например, ячейка памяти Х'т'с используется для хранения переменной с именем БАМ. 8АМ может принять несколько различных значений по ходу вычисления. Каждое из этих значений является определением БАМ. Перегрузка. Имя переменной перегружено, если оио используется для обозначения различных определений переменной по ходу выполнения программы. В программировании считается, что выгода использования перегрузки заключается в экономии памяти', ио в моделях тестирования перегрузка ие дает никаких преимушеств, поскольку оиа только запутывает и ничего ие экономит. Логический оператор. Оператор языка программирования, включающий предикат, вычисляемый по ходу выполнения. Если предикат получает истинное значение, обработка продолжается. Если предикат получает ложное значение, происходит по крайней мере одно из следующего: управление передается обработчику логического выражения, выражение помечается как невыполненное, выполнение программы приостанавливается, управление передается отладочной программе.
Логические выражения обычно проверяют соотношения между значениями перемеииых, такие как х > 17 или х + у = д Выражения — мощный подсобный инструмент тестирования. В этой главе логические выражения в основном используются для проверки результатов вычислений. Использование длявгнчислений. Объект используется для вычислений (ВАРР82], когда ои применяется для расчета значения другого объекта. Например, в выражеиии У: - Х + 1 Х и Х используются для вычисления У, а У вЂ” определяется.
Аналогично, в Х; Х + У. Х и У используются для вычислений, и в то же время Х (пере)определяется (здесь Х вЂ” перегружено). ' На самоы деле при использовании оптимизирушшего компилятора перегрузка пе акопомит память. Она, наоборот, по всей верояпнкюь увеличивает расхол памяти и время выполнения, поскольку ограничивает свободу оптимизапии и увеличивает время жизни переменных, таким образом уменьшая возможность выполнения на основе регистров. Так как время хранения переменной в памяти увеличивается, то одновременно с ростом времени выполнения увеличивается загрузка ВАМ.
5.2, Основные термины 115 Использование в предикате. Объект используется в предикате 1ВАРР82], если ои применяется в предикате. В выражении 1Г Х = т + 2 переменные Х, т и 2 использованы в предикате. В некоторых языках (например, С) объект может использоваться для вычисления и в предикате одновременно, поскольку вычисление может быть встроено в предикат. Создание моделей с одновременным использованием в предикате и для вычисления при тестировании повеления ие дает никаких преимуществ, если только вы не ставите себе цель внести путаницу.
Предикаты внутри утверждений ие являются примерами использований в предикатах, так как утверждения обычно ие влияют иа ход выполнения или иа конечные значения. Использование. Объект используется, если ои задействован в предикатах и/ или в вычислениях. Входной узел. Входной узел графа потока даииых, через который вводятся данныее. Имя входящего в этот узел объекта обычно написано в самом узле или прямо перед узлом, ио, если это особо оговорено, может быть написано иад исходящей из узла связью. Примеры эквивалентных обозначений входных узлов приведены па рисунке.
Сэм, Джо Сэм, Джо Константы. Константы следует рассматривать как вводы и моделировать как входные узлы. Множество ошибок происходит из-за использования неправильной константы, неправильного значения константы, или изменения значения константы во время вычислений. Константы уязвимы для ошибок точно так же как и другие переменные и поэтому должны рассматриваться таким же образом. Узел вывода.
Выходной узел диаграммы потока данных — это узел, через который выводятся данные. Имя объекта, значение которого выводится, указано ря- дом с узлом, Сэм, Джо Сэм, Джо Запоминающий узел. Пара узлов для одного и того же объекта данных. Узел иа диске). Узел ВЫБОРКА определяет значение переменной в памяти.
Верхнее обозначение иа рисунке показывает, как это обычно изображается в графах потока 116 Глава 5 ° Тестирование потоков данных данных, но обозначение в нижней части рисунка выглядит яснее. Запоминающие узлы часто сбивают с толку, поскольку при последующей обработке не сразу может быть понятно, какое именно значение переменной используется: значение, сохраненное на диске, или значение в ОЗУ, предшествующее сохранению. Например, при использовании в сетях с файлами совместного доступа они могут отличаться (и таким образом быть источником ошибок).
Использование двух различных имен, скажем, значение озу и значение диск может помочь прояснить ситуацию. Обрабалзываюздий узел. Узел с одной или более входящими связями и по крайней мере, с одной исходящей связью. Входяшие связи обозначают объекты данных. Исходяшая связь обозначает вычисленную функцию этих объектов данных. На рисунке общий доход — это функция трех входяших связей — иа9ез (заработная плата), сахаЫе зптегезс (налогооблагаемые проценты) и сах ехещрс (доход освобожденный от уплаты налогов). Для ясности вы можете пометить обрабатываюший узел вычисляемой функцией. 5.2.
Основные термины 117 Значение связи. В графах потока данных значения объектов связаны с узлами, в которых зти значения вычисляются (то есть обрабатывающими узлами). В упрогцеииых графах потока данных, используемых в данной книге, все исходягцие из узла связи имеют одинаковые значения объектов данных. При обычном применении графов потока данных узел может быть использован для представления нескольких различных вычислений и, таким образом, может иметь несколько различных объектов, ассоциированных с исходящими связями. Обычная практика — размещение имен объектов иа исходящих из таких узлов связях.
При таком использовании мы иеформальио называем зти имена значениями исходягцих связей. Подобным же образом, поскольку исходящие из одного узла связи являются входящими по отношению к следующему узлу, оии называются значениями входящих связей. Преданию выбора данных Предикат, значение которого (иапример, истинное значение) используется для выбора одного из нескольких объектов данных. Например, указатель иа массив выбирает объект данных в массиве, иа который указывает указатель.
Узел выбора данных всегда имеет предикат выбора данных. Узел выбора данных. Узел, чьи входящие связи управляются предикатом выбора данных, Его значение (истиииости или указатель) выбирает объект данных, соответствующий входящей связи. На рисунке предикат выбора данных, связанный с узлом выбора данных, выбрал объект данных Ч(Ч. Узел выбора данных вычисляет специальную функцию выбора значения входящей связи для использования в исходящей связи.
Входягцие связи узла выбора данных могут быть помечены условием предиката, при котором выбирается данная входящая связь. ЗАМ ч~ч лч- -м лд. том Управляющая входящая связь. Узел выбора данных может иметь входящую связь, которая используется только в предикате выбора данных. Управляющие входящие связи принято обозначать пунктирными строками. злм ч~ч чв- — ы лл. том Упраепяющея ,' переменная,' 11дв Глава 5 ° Тестирование потоков данных В предыдущем примере выбор У1)7 мог быть основан на значениях всех входящих связей: Значение исходящей связи - МАКСИМУМ (значения входящих связей) В этом случае управляющей входящей связи нет. И наоборот, выбор мог быть основан на значении управляющей входящей связи, которое определяет, какое значение и какой входящей связи должно быть использовано: Значение исходящей связи: - ВЬ)БОР(УПРАВЛЯЮЩАЯ ПЕРЕМЕННАЯ.
значения входящих связей) В последнем примере переменная управляющей входящей связи УПРАВЛЯЮЩАЯ ПЕРЕМЕННАЯ выбирает одно из значений входящих связей, как, например, в случае указателя на массив. Граф потока данных. Граф, состоящий из входных узлов, узлов вывода, запоминающих узлов, узлов выбора данных и соответствующих связей и свойств. 5.3. Отношения и модель 5.3.1. Основы Обьекты (узлы): Вычисляемая функция входящих связей: 7. надев (заработная плата) Ва Сахао)е тпсегевс тпсоле (налогооблагаемый доход с процентов) ВЬ; Сах ехещрс тпсегезс тпсоще (проценты освобомденные от налога) 9, отч(сепо 1псоще (доход от дивидендов) 10 Сахаб)е ге(цпбз (облагаемые налогом ппатеии по долгам) 11. а1щопу гесетчеб (полученные алиненты) 12. Ьцзтпезз тпсаще ог 1озз (доход или потери в резулвтате предпринимателвсной деятельности> 21.