Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 11
Текст из файла (страница 11)
Графы и отношения 2.1. Обзор Графы рассматриваются как основной концептуальный инструмент тестирования. 2.2. Основные термины Внешние термины: приложение, массив, конец стрелки, начало стрелки, банкомат, двусторонний, ветвь, ошибка, статистика ошибок, вычисление, сязе, код, данные, означать, 00 имгье, емв, динамическое связывание, время выполнения, выборка, файл, евм..во, функция, 1е-тнем.ее5е, входное значение, инспектирование, список, цикл, меню, опция, модель, мышь, естественный язык, объектно-ориентированное програмлшрование, путь, платежная ведомость, вагит, вероятность, шаг обработки, программа, ветвь программы, программное управление, вход программы, выход программы, путь программы, оператор программы, программист, язык программирования, медв, аетцмм, экран, программное обеспечение, спецификация, электронная таблица, оператор, метка оператора, ограничение по памяти, линейный оператор, подпрограмма, таблица, шаблон, инспектирование теста, модельная программа, транзакция, ТРАм5М1Т, цм00, величина, переменная, текстовой редактор.
Внутренние термины: поведенческое тестирование, ошибка, ввод, объект, действенный тест, спецификация, состояние, тестирование. Графы — это основополагаюший инструмент тестирования. Для тестирования используются масса различных моделей на основе графов, такие как граф потока управления, граф потока данных, дерево вызовов, граф конечного автомата, граф потока транзакций. Прежде всего мы обсудим абстрактные графы, чтобы ознакомиться с терминологией, которая будет полезна и неизменна при рассмотрении любых графов. 46 Глава 2 ° Графы и отношения Параллельные связи. Две или более связей между двумя узлами. Параллельные связи используются, если между двумя узлами существуют несколько отношений, Иия связи. Каждая связь имеет уникальное имя.
Существует несколько способов обозначить связи. Мы булем часто использовать числа в качестве имен узлов, поэтому для имен связей мы будем применять строчные буквы. Другой способ дать имя связи — использовать имена соелиняемых узлов.
Например, связь между узлами 17 и 34 мы назовем (17, 34). Это правило не годится для графов с несколькими связями между двумя узлами. Нам не обязательно всегда указывать имя связи, в таких случаях мы его просто опускаем. Ни свойства графа, пи свойства объектов и отношений, которые этот граф представляет, не зависят от того, как мы назовем связи. (17, 34) 17 34 Вес связи.
Связи могут обладать свойствами. Такие свойства называются весом связи. Простейшим возможным весом связи является факт ее существования. Примером веса связи может служить отношение или все отношения между двумя объектами. Если узлы обозначают шаги обработки, а связи показывают последовательность этих шагов, то весом связи может быть: время выполнения программы по данному пути, вероятность выполнения именно этого пути (этой последовательности), тот факт, что будет вызван определенный объект данных.
Свойства модели, изображаемой графом, напрямую зависят от веса связей. Задача тестирования — убедиться, что связи с весом имеют ожидаемый вес. Направлеитшя связь. Направленная связь изображается стрелкой. Направленные связи используются для обозначения несимметричных отношений: отношений, существующих лишь в заданном направлении. Примеры несимметричных отношений: А отец Б, за А следует Б, Б использует А, А вызывает Б. Большинство отношений в тестировании являются несимметричными, тоесть в большинстве тестовых моделей используются направленные связи.
Если Й вЂ” несимметричное отношение, и А Й Б, из этого пс следует Б Й А. Задача тестирования — убедиться, что все направленные связи имеют заданные направления. Отава Лито Поп 2.2. Основные термины 47 Ненаприаленная связь. Связь, соответствующая симметричному отношению, тоесть двустороннему отношению. Строго говоря, Й вЂ” симметричное отношение, если из факта А Й Б следует (в соответствии с природой отношения) Б Й А. Симметричные отношения изображаются двусторонними стрелками, поэтому мы обычно опускаем стрелки на концах линий. В первом примере на рисунке две противоположно направленные стрелки могут быть заменены или двусторонней стрелкой или простой линией, поскольку отношение «дети одних родителей» симметрично.
В третьем примере, напротив, несмотря на то, что существуют отношения в обоих направлениях, они различны и несимметричны. Симметричные отношения довольно редко встречаются в тестировании, вот несколько примеров таких отношений: А и Б родственники, А и Б женаты, А и Б соседи по комнате. Задача тестирования — убедиться, что все симметричные отношения на самом деле симметричны. Лети одних родителей Пол Алия Лети одних родителей Лети одних родителей Пол Алия Брат Пол Алия Сестра Граф Граф — это набор узлов, имен узлов, весов узлов, связей, имен связей, весов связей и отношений между узлами.
Если между двумя узлами существует отношение, то между ними есть связь. ВОПРОС: Что вы делаете, когда вам встречается граф? ОТВЕТ: Исследую его! Направленнвгй граф. Граф, в котором все связи направлены. Большинство графов в тестировании — направленные, Задача тестирования — убедиться, что направления связей совпадают с заданными. 48 Глава 2 ° Графы и отношения Нениправле>гный граф. Граф, в котором все связи ненаправленные. То есть ни одна связь в нем не имеет направления.
Задача тестирования — убедиться, что все ненаправленные связи действительно являются двусторонними. Входящая связь. Связь, входящая в узел. В этом случае стрелка указывает на узел. Входной узел. Узел без входящих связей. Хотя у программы обычно есть входные точки (например, ВЕ61И), графы, моделирующие поведение программ, могут и не иметь входных узлов. НАЧАЛО Исходящия связь. Связь, выходящая из узла. В атом случае стрелка начинается на узле.
Связь может быть одновременно и входящей, и исходящей. Это означает что она начинается и заканчивается на одном и том же узле (например, цикл). Узел ветвления. Узел с двумя нли более исходящими связями. В языках программирования примерами узлов ветвления служат операторы САВЕ или 1Г-ТНЕМ. е15е. На рисунке узел имеет трн ветви. Обратите внимание, гго это узел ветвления в графе, моделирующем поведение программы, в самой же программе соответствук>щего ветвления может и не быть.
2.2. Основные термины 49 Выходной узел. Узел без исходяших связей. На рисунках изображены выходные узлы, поскольку ни одна стрелка на них не начинается. Хотя у программы обычно есть выходные точки (например, гка), графы, моделирующие поведение программ, могут и не иметь выходных узлов. КОНЕЦ КОНЕЦ Пупгв. Поставьте карандаш на какой-либо узел на рисунке (например, на 14) и следуйте по стрелкам до другого узла (например, узла 17); это и есть путь от узла 14 к узлу 17.
Однако если вы можете прочертить путь на графе, это не значит, что ваша программа может повторить этот путь. Путь в атом контексте не обязательно является путем в коде программы. В поведенческом тестировании мы рассматриваем пути в моделях, описывающих поведение программного обеспечения. Такие пути могут соответствовать путям в программе, а могут и не соответствовать им. 7 / У г $ 1 «ЯБ Проходимый путь. Путь в модели, для которого существует такой набор входных значений, что, используя их, программа может пройти по этому пути.
Непроходимый пут». Путь в модели, который невозможно воспроизвести в программе, какой бы набор входных значений мы ни взяли. Путь вход — оьтод. Путь от входного узла к выходному узлу. Если отдельно не оговаривается, под термином «путь» подразумевается «путь вход — выход». Сегмент пути. Обычно путь, не являющийся путем вход — выход. Имя пути. Существует два способа назвать путь: по нменам узлов вдоль этого пути или по именам связей вдоль пути. Если мы назовем путь на следующем рисунке по именам узлов, то получим: «14,99,12,17», если по именам связей, то «)«гп1», БО Глава 2 ° Графы и отношения Длина пути.
Существует два способа измерить длину пути. Можно воспользоваться числом узлов вдоль этого пути или количеством связей вдоль пути. В данной книге мы, как правило, будем считать связи. Предыдущий рассмотренный путь был длиной в три связи или четыре узла. Цикл. Путь, в котором как минимум один узел встречается больше одного раза. Иначе говоря, это путь, в имени которого больше одного раза встречается имя узла (связи), в зависимости от того, как строится имя пути — перечислением узлов нли перечислением связей. В примере на рисунке существует циклический путь акгглЬакгвЪ или 7,14,99,12,17,7,14. Попробуйте найти на этом графе все циклические пути. ~,12~ 'С43~~ ---- — — Ь---- — --~(16) Нециклический путь.
Путь, в котором нет циклов. Это значит, что в его имени ни разу не повторяются имена узлов (связей). 2.3. Примеры графов, используемых в тестировании 2.3.1. Обзор В основе всех моделей тестирования лежат графы. Они описывают определенные отношения между определенными объектами. Если вы сможете определить все объекты и отношения между ними, вы сможете составить полную картину при по- моши графа. Для построения модели (графа) вам надо определитгс 1. Рассматриваемые объекты (узлы).