Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 37
Текст из файла (страница 37)
Предполагается, что каждая из них имеет свои собственные свойства, например, тип и состояние. очь Дочь ф Узел слияния — узел, в котором две или более входящие транзакции (родительские транзакции) сливаются в новую, выходящую дочернюю транзакцию.
После узла слияния родительские транзакции перестают существовать. йг Родитель ©Родитель Узел поглощения — узел с входящими транзакциями, одна из которых (хищник) поглощает другие (жертвы). 6.3. Отношения и модель 155 ° Хищник ф Жертва Марковский узел — узел, действие которого (обработка, ветвление, порождение, расщепление и т.
д.) зависит только от типа и состояния входящих транзакций, но не от пути, по которому транзакция добралась до узла. Марковский граф потока транзакций — граф потока транзакций, все узлы которого являются марковскими. 6.3. Отношения и модель б.3.1, Основы Материал, рассматриваемый в этом разделе, описывался также в [МПКА89, РЕТЕ81].
Обьекнтьт (узлы) — шаги процесса обработки данных посредством транзакций, например, шаги программы. Узлы представляют собой интересующие нас действия, которые трансформируют входящие транзакции и производят выходящие транзакции иттили меняют состояние входящих транзакций. Узлы могут моделировать не только программы, но и действия людей, сетевые операции и вообще все, что имеет смысл.
Предполагается, что узлы имеют свою собственную модель, будь то модель потока управления, модель потока данных или какая-нибудь еще модель. Производимое обрабатывающим узлом действие зависит только от данных, содержащихся в записях входящих транзакций. Считается, что модели обработки транзакций являются марковскими.
Обьекты (транзакции) — транзакция идентифицируется своей контрольной записью (фактической или гипотетической). Эта запись содержит по меньшей мере тип и состояние транзакции. Предполагается, что и все другие интересующие нас данные содержатся в записи транзакции. Интерпретация данных в записи транзакции не зависит от значений в любой другой записи транзакции. Отношение (связи): «Непосредственно следует» — соелинение узлов А и Б связью от А к Б, если выходящая из А транзакция обрабатывается затем узлом Б. Вес связи — с любой связью может быть ассоциировано несколько маркеров транзакций. Каждый маркер представляет одну транзакцию. Мы будем моделировать часть обработки формы 1040, как если бы она была сделана добропорядочным налогоплательщиком, который настаивает на том, чтобы каждая операция совершалась в том же самом порядке, в каком она появляется в форме.
Внутренняя налоговая служба в США не предъявляет такого требования, и вы можете заполнять формы в том порядке, в каком зто имеет смысл, но такое поведение не слишком применимо к моделированию потока транзакций. (Для этого больше подходят модели потока данных.) Заметьте, что сейчас мы моделируем не компьютер или программу, хотя и могли бы. Мы моделируем, каким 156 Глава Б» Тестирование потоков транзакций образом Виления Вистерия (наш субъект) заполняет декларацию о подоходном налоге. И: 12; Предыдущий щаг в иодвпи 12: 13: НЕ узел ветвления (ииеется коииерчесний доход?) 12.1: ДА 12. 1: 12.2. узел порождения, 1040 продолжается С.
дочерняя транзакция. дпя обработки Бланка С С: 12.2 заполненный Бланк С (узел расщепления> С-фин заполненный Бланк С дпя налоговой службы 12.2. 13: узел поглощения. данные Бланка С поглощаются 1040 13 ,. узел 13 — зто узел соединения Узел 12 является узлом ветвления, так как транзакция должна либо продолжить заполнять Бланк С, либо обойти его, если нет дохода от индивидуальной трудовой деятельности. Узел 12.1 — это узел порождения, из которого начинается дочерняя транзакция для Бланка С.
Предположим, что на этом уровне в узел С приходит незаполненный Бланк С, а выходит из узла С уже заполненный. Узел 12.2 представляет собой узел поглощения, потому что здесь данные Бланка С заносятся в форму 1040. Узел С вЂ” узел расщепления, так как нам необходима копия Бланка С для налоговой службы, а также для формы 1040. Наконец, узел 13 является узлом соединения, потому что форма 1040 может появиться на любой из входяших в него связей, но не на обеих. 6.3.2. Маркировки Марат/рожка. Набор всех меток (и связанных с ними состояний) на всех связях в любой момент времени называется маркировкой графа потока транзакций.
Для всего графа потока транзакций маркировка является тем же самым, чем является состояние для отдельной транзакции. Очередь. Связь, которую можно маркировать более чем одной меткой, представляет собото очередь. Это может, конечно, быть и обрабатываюшая очередь, но она может также представлять собой и обычную очередь из ожидаюших людей. Проследим путь следования одной транзакции через граф потока транзакций. Если бы не существовало узлов расщепления и порождения, это было бы эквивалентно маркировке пути в графе потоков управления.
Но две детали делают эту простую интерпретацию маловероятной — сушествование очередей и узлы слияния и поглощения. Мы можем использовать различные маркировки, определяя, какие маркеры и на каких связях появляются на каждом шагу. В нашей модели есть два вида символов: форма 1040 и Бланк С, сокращенные до «Ф!040» и «Б — С» соответственно. Если в модели есть только одна транзакция, то существуют две возможные маркировки в зависимости от того, выполняем ли мы Бланк С.
Без Бланка С. Шаг 1: П/12 Шаг 2. 12/13 С Бланкои С Шаг 1: 11/12 Ф1040 6.3. Отношения и модель 157 Шаг 2. 12!12.1 Ф1040 Шаг 3. 12.1Г12 2 Ф1040, 12 1ГС Б-С Шаг 4 12 1Г12.2 Ф1040 СГ12.2 Б-С, СГС-фин БС-С Шаг Б: 12.2113 Ф1040, СГС-фин Б-С Предположим, что дети Вилении ведут свой собственный бизнес, а Виления заполняет за них налоговые декларации. Ее дети вносят данные в свои индивидуальные Бланки С, если это необходимо, а она заполнит за них всех формы 1040. Формы 1040 инициируются в узле 11 (только для этой подмодели).
Они поступают в узел 12, который обрабатывает Виления. Она решает, необходим ли Бланк С. У Вилении много других дел, поэтому она может и не принять это решение немедленно. Следовательно, на входяшей связи узла 12 накапливается очередь из форм 1040. Когда у Вилении появляется время, она помещает те формы 1040, которым не нужен Бланк С, в очередь к узлу 13. А для тех форм 1040, которым действительно необходим Бланк С, она берет пустой бланк С, заносит туда имя ребенка и помещает его в очередь Бланка С (12.1гС). Обработка Бланка С осушествляется детьми Вилении.
Заполненные Бланки С поступают в очередь к Сгг12.2, откуда Виления забирает их путем переноса данных в подходящую форму 1040. На связи 12.1гг12.2 также накапливается очередь. Число маркеров на любой из связей потенциально бесконечно, а, следовательно, и число потенциально разных маркировок для всего графа потенциально бесконечно. Хотя у Виленни, как кажется, бесчисленное число детей, она имеет чуть лн не безграничное терпение, поэтому для нее это не проблема — но не для нас.
В идеале нам следует тестировать графы потока транзакций для всех возможных пометок. Практически же это невозможно, поэтому всегда следует искать определенный компромисс. 6.3.3. Очереди Детальное описание очередей можно встретить в 1СООР811. Все реальные очереди ограничены, то есть они имеют некий максимально возможный размер. При выходе за пределы этих размеров плохо протестированные системы могут неожиданно выйти из строя, так что стоит тестировать максимально возможный размер очереди.
Если существует очередь, то должно быть и правило упорядочения — то есть правило, определяюшее, в каком порядке транзакции будут поступать из очереди для обработки. Ниже приведены некоторые распространенные правила. Правило г1гΠ— «первым пришел — первым вышел» («6гаг-)п, (ггзс-оис»), называемое также «Е1гзс-Соте-Рггаь-Бегчег)» — («первым прибыл — первым обслужен»). Транзакция, которая раньше всех поступила в очередь, будет обработана раньше всех. Это самое простое правило очень распространено. Но представьте, что было бы, если бы Виления настаивала, чтобы все заполненные Бланки С возврашались к ней в том же порядке, в каком она отдавала их на обработку. Правило 1.ггΠ— «последним пришел — первым ушел» («!аа1-1п, Вгзг-оцг»), называемая также 1СРБ «ьааг-Соте-Г1гзь-Вегчес1» — («последним пришел— первым обслужен»).