Научная статья на тему 'Тестирование системы автоматов с буферизацией сообщений'

Тестирование системы автоматов с буферизацией сообщений Текст научной статьи по специальности «Математика»

CC BY
232
40
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОРИЕНТИРОВАННЫЕ ГРАФЫ / ПОКРЫТИЕ ГРАФА / ВЗАИМОДЕЙСТВУЮЩИЕ АВТОМАТЫ / РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ / ТЕСТИРОВАНИЕ / СЕТИ / DIRECTED GRAPHS / GRAPH COVERAGE / COMMUNICATING AUTOMATA / DISTRIBUTED SYSTEMS / TESTING / NETWORKS

Аннотация научной статьи по математике, автор научной работы — Бурдонов И.Б., Косачев А.С.

Статья посвящена проблеме тестирования составных систем, компоненты которых моделируются конечными автоматами, а взаимодействие между ними обменом сообщениями по симплексным каналам связи. Система описывается ориентированным графом связей, вершины которого соответствуют автоматам компонентов, а дуги каналам связи. Предполагается выполненной следующая гипотеза о связях: граф связей статический, а отображаемая им структура связей не содержит ошибок. Автомат, находящийся в вершине графа, в каждом состоянии может принимать несколько сообщений по входным дугам (не более одного по каждой дуге) и посылать несколько сообщений по выходным дугам (не более одного по каждой дуге). Целью тестирования является покрытие переходов автоматов компонентов, которые достижимы при работе этих автоматов в системе. Предполагается, что при тестировании возможно наблюдение изменения состояний автоматов в вершинах графа и сообщений на дугах графа. Сначала рассматривается упрощённая модель системы, в которой циркулирует только одно сообщение. На её примере показывается, что гипотеза о связях позволяет существенно сократить время тестирования. Полное тестирование системы автоматов без учёта гипотезы о связях может потребовать число тестовых воздействий порядка произведения чисел состояний автоматов компонентов, а с учётом гипотезы о связях порядка суммы этих чисел. При равном числе состояний всех автоматов это даёт экспоненциальное уменьшение числа тестовых воздействий. Затем рассматривается более общая модель, когда в системе может быть одновременно много сообщений, но не более одного на каждой дуге. Определяется композиция автоматов системы и показывается, при каких ограничениях на автоматы их композиция детерминирована. Для детерминированной композиции предлагается алгоритм генерации тестов, основанный на фильтрации тестов, генерируемых для покрытия всех переходов композиции. Тест отбрасывается, если он покрывает только такие переходы в компонентах системы, которые покрываются остающимися тестами. В заключение определяются направления дальнейших исследований.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Testing of automata system

The problem of testing of aggregate systems is considered. The system is described with an oriented graph of links. The nodes correspond to automata of the components and arcs correspond to simplex communication channels. The hypothesis of the links is assumed: the graph of links is static and the link structure is error-free. In each state, the automaton can accept and send multiple messages through incoming and outgoing arcs (at most one message through each arc). The goal of testing is to cover transitions of the automata reachable during the system work. It assumed that during testing it is possible to observe the state changes of automata and the messages on the arcs. A simplified system model with only one message circulating is considered at the beginning. On its example we show that the hypothesis on links allows considerably reduce the number of required testing actions from the multiplication of numbers of the component automata states to the sum of these numbers. If the numbers of states of all automata are equal, it gives exponential reduction of the number of test actions. Then the more general model is considered when the system can simultaneously contain multiple messages, but not more than one on each arc. A composition of the system automata is defined and the restrictions on automata making the system deterministic are described. An algorithm of test generation is proposed basing on test filtration generated for covering all transitions of the deterministic composition system. Test is rejected if it covers only such transitions of the components that are covered by the remaining tests. In conclusion, the directions of future research are described.

Текст научной работы на тему «Тестирование системы автоматов с буферизацией сообщений»

Тестирование системы автоматов с буферизацией сообщений

И.Б. Бурдонов <igor@ispras.ru> А.С. Косачев <квs@ispras.ru> Институт системного программирования РАН, 109004, Россия, г. Москва, ул. А. Солженицына, д. 25

Аннотация. Статья посвящена проблеме тестирования составных систем, компоненты которых моделируются конечными автоматами, а взаимодействие между ними -обменом сообщениями по симплексным каналам связи. Система описывается ориентированным графом связей, вершины которого соответствуют автоматам компонентов, а дуги - каналам связи. Предполагается выполненной следующая гипотеза о связях: граф связей статический, а отображаемая им структура связей не содержит ошибок. Автомат, находящийся в вершине графа, в каждом состоянии может принимать несколько сообщений по входным дугам (не более одного по каждой дуге) и посылать несколько сообщений по выходным дугам (не более одного по каждой дуге). Целью тестирования является покрытие переходов автоматов компонентов, которые достижимы при работе этих автоматов в системе. Предполагается, что при тестировании возможно наблюдение изменения состояний автоматов в вершинах графа и сообщений на дугах графа. Сначала рассматривается упрощённая модель системы, в которой циркулирует только одно сообщение. На её примере показывается, что гипотеза о связях позволяет существенно сократить время тестирования. Полное тестирование системы автоматов без учёта гипотезы о связях может потребовать число тестовых воздействий порядка произведения чисел состояний автоматов компонентов, а с учётом гипотезы о связях - порядка суммы этих чисел. При равном числе состояний всех автоматов это даёт экспоненциальное уменьшение числа тестовых воздействий. Затем рассматривается более общая модель, когда в системе может быть одновременно много сообщений, но не более одного на каждой дуге. Определяется композиция автоматов системы и показывается, при каких ограничениях на автоматы их композиция детерминирована. Для детерминированной композиции предлагается алгоритм генерации тестов, основанный на фильтрации тестов, генерируемых для покрытия всех переходов композиции. Тест отбрасывается, если он покрывает только такие переходы в компонентах системы, которые покрываются остающимися тестами. В заключение определяются направления дальнейших исследований.

Ключевые слова: ориентированные графы, покрытие графа, взаимодействующие автоматы, распределенные системы, тестирование, сети.

DOI: 10.15514/ISPRAS-2016-28( 1)-7

Для цитирования: Бурдонов И.Б., Косачев А.С. Тестирование системы автоматов с буферизацией сообщений. Труды ИСП РАН, том 28, вып. 1, 2016 г., с. 103-130. DOI: 10.15514/ISPRAS-2016-28(1)-7

1. Введение

Большинство сложных, особенно распределённых, систем представляет собой набор взаимодействующих компонентов. В данной статье компоненты моделируются конечными автоматами, а взаимодействие - обменом сообщениями между автоматами. Мы будем предполагать, что структура связей между компонентами моделируется ориентированным графом (будем называть его графом связей), в вершинах которого находятся автоматы, а дуги соответствуют симплексным каналам передачи сообщений. Дугу можно понимать как очередь длины 1, буферизующую сообщение, передаваемое из автомата в начале дуги в автомат в конце дуги. Кроме внутренних дуг, то есть дуг, соединяющих автоматы между собой, существуют также внешние дуги, связывающие систему с её окружением. Если такая дуга ведёт из окружения в некоторый автомат, то будем называть её внешней входной дугой, а если дуга ведёт из автомата в окружение, то - внешней выходной дугой. При тестировании тест подменяет собой окружение: он передаёт сообщения в систему по внешним входным дугам и принимает от системы сообщения по внешним выходным дугам.

Мы будем считать, что граф связей статический, то есть не меняющийся в процессе работы системы. В этом случае система (также как её компоненты) может моделироваться конечным автоматом, получающимся из автоматов-компонентов с помощью подходящего оператора композиции, учитывающего граф связей. Частью состояния системы является набор состояний входящих в неё автоматов, поэтому число состояний системы не меньше произведения njn2...nk, где ni - число состояний i-го автомата, а к - число автоматов. Даже если учитывать только достижимые состояния системы, то есть те, которые достижимы из её начального состояния, то их число может иметь тот же порядок, что и произведение n¡n2...nk.

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

к автомату-компоненту, и вынужден осуществлять тестовые воздействия с помощью сообщений, посылаемых по внешним входным дугам, которые ведут, быть может, в другие автоматы. Тестирование компонента такой системы похоже на тестирование в контексте ([1], [2], [3], [4]), когда этот компонент рассматривается как тестируемая система, а остальные - как контекст. Существенное отличие, однако, в том, что в таком контексте тоже могут быть ошибки, хотя, если верна гипотеза о связях, то только в компонентах, а не в структуре связей между ними. С другой стороны, такое тестирование может проверять работу сразу нескольких компонентов, через которые проходят сообщения.

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

Тестирование автомата системы (получающегося композицией автоматов компонентов для заданного графа связей) обеспечивает проход по всем достижимым переходам автомата системы. При этом, конечно, проверяются все достижимые переходы автоматов компонентов, но, вообще говоря, делается много «лишней работы». Гипотеза о связях позволяет получить существенный выигрыш во времени тестирования. В следующем разделе статьи приведён пример, для которого соотношение времени тестирования системы без учёта и с учётом правильности графа связей такое же, как соотношение произведения пп^-.щ (число состояний автомата системы) и суммы чисел состояний автоматов-компонентов П]+п2+...+пк. В частности, если п1=п2=...=пк=п, имеем соотношение пк и пк, то есть для фиксированного числа к компонентов получаем экспоненциальное уменьшение времени тестирования.

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

например, при имитационном тестировании аппаратуры (simulation-based verification) (см. например, [5]).

Сначала, в разделе 2, изучается простейшая модель системы, в которой может циркулировать только одно сообщение. Даётся формальное определение автомата компонента и формулируются требования к автомату, обеспечивающие детерминизм системы. В разделе 3 модель усложняется: в системе может одновременно передаваться несколько сообщений, но не более одного сообщения по каждой дуге графа связей. Фактически, дуга представляет собой очередь сообщений длины 1. Обобщается формальное определение автомата компонента и формулируются требования к автомату, обеспечивающие детерминизм системы. В заключении намечаются направления дальнейших исследований.

2. Первая модель: только одно сообщение в системе 2.1. Определение модели

В этом разделе мы рассмотрим простейшую модель системы, в которой одновременно может быть не более одного сообщения; если в данный момент времени сообщение есть в системе, оно находится на одной из дуг. Если сообщение передаётся по внутренней дуге a—b, то оно было послано автоматом, находящимся в начале дуги, в вершине a, и будет принято автоматом, находящимся в конце дуги, в вершине b. Если a—b - это внешняя входная дуга, то a - это окружение системы. Если a—b - это внешняя выходная дуга, то b - это окружение системы.

Дугу будем рассматривать как очередь сообщений длины 1. По дуге можно послать сообщение, если дуга пуста (на ней нет сообщений), и с дуги можно принять сообщение, если дуга не пуста (на ней есть сообщение). Принимая сообщение с дуги, автомат может сам послать любое сообщение, но только одно и только по одной из дуг, выходящих из его вершины, либо не посылать никаких сообщений. Автомат предполагается детерминированным. Введём формальные определения и обозначения. Автомат - это набор (S,X,Y,T,s0), где S - конечное множество состояний автомата, X - множество стимулов (входных символов), Y - множество реакций (выходных символов), T с SxXxYxS - конечное множество переходов автомата, s0 e S - начальное состояние.

Обозначим: s—?x!y—t = (s,x,y,t) eT, s—?x!y— = 3t (s,x,y,t) eT.

Там, где это не приведёт к недоразумению, мы будем в неформальном тексте сам переход (s,x,y,t) обозначать стрелкой s—?x!y—t. Состояние t будем

называть постсостоянием перехода. Если постсостояние несущественно, то переход (в,х,у,1) будем обозначать стрелкой 5—?х!у—.

В графе связей мы допускаем кратные дуги, для различения которых будем помечать их символами из алфавита 2. Для простоты будем считать, что все вершины перенумерованы 0,1,2,...,к, где к - число вершин, в которых находятся автоматы, а номер 0 соответствует окружению. Граф связей определяется как набор О = (У,2,Е), где V = {0,1,...,к} - конечное множество вершин, Е с<Ух2хЮ \ ({0}х2х{0}) - конечное множество дуг (у окружения 0 нет дуг-петель). Дуга задаётся начальной вершиной V,

пометкой г и конечной вершиной V Дуга (0,2,^) - внешняя входная дуга, (у,г,0) - внешняя выходная дуга. Обозначим:

1у = {(а,2,у) | (а,2,у) еЕ} - множество дуг, заканчивающих в вершине у, Оу = {(у,2,Ъ)1(у,2,Ъ) еЕ} - множество дуг, начинающихся в вершине V. Если у=0, то 10 - это множество внешних входных дуг, О0 - это множество внешних выходных дуг. Множество внутренних дуг равно Е \ (10 иО0). См. рис. 1.

внешняя дуга внутренняя дуга 0) окружение

Т) 1-ая вершина

с автоматом

Рис. 1. Граф связей системы автоматов Fig.1. Communication graph for a system of automatons

Обозначим через M множество всех возможных сообщений. Система автоматов - это граф связей G, для которого каждой вершине v поставлен в соответствие автомат (Sv,Xv,Yv,Tv,sv0) такой, что Xv = {(i,m) | i elv & m eM) и Yv = {(j,m) | j eOv & m eM) и {0}. Такой автомат будем называть автоматом в вершине v. Дугу, заканчивающуюся в вершине v, будем называть входной дугой автомата, а дугу, начинающуюся в вершине v, будем называть выходной дугой автомата. Стимул автомата - это пара (i,m), где i - входная дуга автомата, а m -сообщение, принимаемое автоматом по этой дуге. Реакция автомата - это либо пара (j,m), где j - выходная дуга автомата, а m - сообщение, посылаемое автоматом по этой дуге, либо пустое множество 0, означающее отсутствие реакции (пустая реакция).

Определим условия выполнения перехода автомата s—?x!y^t: 1) автомат находится в состоянии s, 2) если x = (i,m), то на входной дуге i находится

107

сообщение m, 3) если y=(j,my), то выходная дуга j должна быть пуста. В результате выполнения перехода автомат оказывается в постсостоянии t, сообщение m принимается и входная дуга i становится пустой, если y=(j,my), то на выходную дугу j помещается сообщение m \

Замечание 1: о дуге-петле. В рассматриваемой модели в системе имеется не более одного сообщения. Поэтому переход s—?x!y—t, где x = (i,m) иy=(j,my), не выполняется из-за того, что выходная дуга j занята, только в том случае, когда i=j, то есть сообщение должно быть послано по той же дуге-петле, с которой принимается сообщение. Такой переход (когда i=j) никогда не может быть выполнен, и его можно удалить из автомата.

Будем говорить, что автомат детерминирован, если в любой момент времени может выполниться не более одного перехода. В этой модели это означает, что состояние и стимул однозначно определяют реакцию и постсостояние перехода: Vs,x,y,y\t,f (s—?x!y—t & s—?x!ys—f y=yy & t=f). Далее в этом разделе мы будем рассматривать только детерминированные автоматы. Состоянием системы является набор состояний её автоматов s¡,s2,...,sk, а также указание, имеется ли какое-либо сообщение на дуге и, если имеется, то какое именно и на какой дуге. Формально состояние системы - это набор (s¡,s2,...,sk,(e,m)), если на дуге e есть сообщение m, или набор (s¡,s2,...,sk,0, если нет сообщений на дугах. Финальным состоянием системы назовём такое её состояние, когда на дугах нет сообщений, то есть состояние вида (s¡,s2,...,sk,0). Начальным состоянием системы будем считать финальное состояние, в котором каждый автомат находится в своём начальном состоянии, то есть состояние (sw,s2o,...,sM0.

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

2.2. Композиция автоматов системы

Определим композицию автоматов при заданном графе связей, то есть автомат, отражающий работу системы в целом. Входными дугами такого автомата системы будут внешние входные дуги из 10, а выходными дугами -внешние выходные дуги из O0. Состояния системы описаны выше. Переходы делятся на три категории: 1) переходы по стимулам (без выдачи реакции) вида s—?x!0^t, 2) переходы по реакциям (без приёма стимулов), которые будем понимать как переходы по пустому стимулу и обозначать s—?0!y^t, 3) внутренние переходы (без приёма стимулов и без выдачи реакций), которые мы будем понимать как переходы по пустому стимулу и пустой реакции вида s—?0!0^t, которые для краткости будем обозначать s^t. Определим переходы формально:

1. В финальном состоянии s=(s1,s2,...,sk,0) окружение может послать по любой внешней входной дуге любое сообщение. Если по дуге (0,z,v) посылается сообщение m, то посылается непустой внешний стимул x=((0,z,v),m). В автомате системы имеется переход s—?x!0^t, где t=(s1,s2,...,sk,x) нефинальное состояние.

2. Пусть есть нефинальное состояние s=(s1,s2,...,sk,((v,z,w),m)), когда на внешней входной или внутренней дуге (v,z,w) находится сообщение m, то есть w^ü. Пусть автомат в вершине w находится в состоянии sw. Обозначим x=((v,z,w),m).

2.1. Пусть в состоянии sw имеется переход по приёму стимула x, то есть переход вида sw—?x!y^tw. Если реакция отсутствует, то есть y=0, то в автомате системы имеется внутренний переход s^t, где t=(s1,s2,...,sw.1,tw,sw+1,...,sk,0) финальное состояние. Если реакция y = ((w,z,wy),my), то в автомате системы имеется внутренний переход s^t\ где f=(s1,s2,...,sw_1,tw,sw+1,...,sk,y) нефинальное состояние. В состоянии s будет только один переход.

2.2. Пусть в состоянии sw нет перехода по стимулу x, то есть, нет перехода вида sw—?x!y^tw. Тогда в состоянии s нет переходов.

3. Пусть есть нефинальное состояние s=(s1,s2,...,sh((v,z,0),m)), когда на внешней выходной дуге (v,z,0) находится сообщение m. Обозначим y=((v,z,0),m). В состоянии s ни один автомат не выполняет перехода, окружение не может послать стимул, так как состояние не финально. Единственное, что может произойти, это приём окружением непустой внешней реакции y, то есть сообщения m, находящегося на дуге (v,z,0). В автомате системы это изображается переходом s—?0!y^t, где t=(s1,s2,...,sk,0) финальное состояние.

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

Утверждение 1: В первой модели композиция детерминированных автоматов детерминирована.

Доказательство: Из формального определения переходов композиции следует (рис. 2): 1) Из финального состояния ведут только переходы s—?x!0^t по непустым стимулам без выдачи реакций - не более одного перехода по каждому стимулу. Постсостояние такого перехода нефинально. 2) Из нефинального состояния ведёт не более одного перехода: либо внутренний переход s^t с финальным или нефинальным постсостоянием, либо переход s—?0!y^t без приёма стимула с выдачей реакции и финальным постсостоянием. Утверждение доказано.

не более

[ Ф ] финальное состояние Н нефинальное состояние

?х!

?0!

переход по стимулу х без выдачи реакции

■>• переход без приёма стимула с выдачей реакции у

внутренний переход

Рис. 2. Типы состояний и переходов автомата системы Fig. 2. Types of states and transitions of automaton system

Тупиком назовём нефинальное состояние системы, из которого нет перехода. Состоянием зацикливания назовём нефинальное состояние системы, расположенное на цикле переходов, не проходящем через финальные состояния. Очевидно, все переходы такого цикла внутренние. На рис. 3 изображены возможные цепочки переходов после приёма системой (непустого) внешнего стимула.

стимулы реакция

Л -О-

Рис. 3. Типы цепочек переходов в системе после приёма стимула Fig.4. Types of transitions chains in the system after receiving a stimulus

Наличие пустого стимула, то есть дополнительных внутренних переходов и переходов по выдаче реакции без приёма стимула, отличает автомат системы от того типа автомата, который мы определили выше как автомат в вершине. Однако автомат системы А может быть с помощью следующей процедуры финализации / преобразован к автомату /(А) того же типа, что автомат в вершине:

1) Цепочка переходов 5—?х1!0—...——?0!у—1, ведущая из финального состояния 5 в финальное состояние :1 заменяется на один переход 5—?х1!у—:1.

2) Цепочка переходов 5—?х2!0—...—12, ведущая из финального состояния 5 в финальное состояние Ь заменяется на один переход 5—?х2! 0—-12.

3) Цепочка переходов 5—?х3!0—...—1з, ведущая из финального состояния 5 в тупиковое нефинальное состояние :3 заменяется на один переход 5—?х3!0—:3.

4) Цепочка переходов 5—?х4! 0——...:4, ведущая из финального состояния 5 в нефинальное состояние зацикливания :4 с однократным проходом по циклу заменяется на один переход 5—?х4!0—:4. Более строго: в последовательности состояний этой цепочки переход каждое состояние, кроме :4, встречается по одному разу, а состояние :4 два раза.

Состояния :1 и :2 финальные, а состояния :3 и :4 после финализации будут тупиковыми, т.е. в них нет никаких переходов. Автомат А будем называть нефинальной композицией автоматов компонентов, а автомат /(А) - финальной композицией. Будем говорить, что два автомата эквивалентны, если любой набор тестов, покрывающий все достижимые переходы одного автомата, покрывает все достижимые переходы другого автомата.

Утверждение 2: Финальная композиция /(А) детерминированных автоматов детерминирована и эквивалентна нефинальной композиции А. Доказательство: Поскольку в нефинальной композиции А из финального состояния выходит не более одного перехода по каждому стимулу, это же будет и в автомате /(А). В автомате /(А) нефинальные состояния автомата А, оставшиеся достижимыми после финализации, являются терминальными. Поэтому финальная композиция /(А) детерминирована. Из нефинального состояния нефинальной композиции выходит не более одного перехода. Поэтому при тестировании проход какой-либо цепочки переходов в автомате А из тех, что указаны в процедуре финализации, вызовет в автомате /(А) проход соответствующего перехода. И наоборот, проход перехода в автомате /(А) соответствует проходу соответствующей цепочки переходов в автомате А. Следовательно, А и /(А) эквивалентны. Утверждение доказано.

2.3. Генерация тестов

Целью тестирования рассматриваемой системы автоматов является покрытие всех достижимых переходов автоматов компонентов системы. Иногда приходится различать тест как конечную последовательность тестовых воздействий на тестируемую систему и тест как программу, реализующую эти тестовые воздействия, или модель такой программы. Там, где по контексту не ясно, что имеется в виду, мы будем в первом случае писать тестовая последовательность. В первой модели тестовая последовательность - это последовательность стимулов, подаваемых из теста (подменяющего собой окружение) в тестируемую систему.

Стимул можно подать в систему только в финальном состоянии. Если стимул приводит систему в нефинальное состояние, при котором сообщение находится на внешней выходной дуге, тест должен сначала принять это сообщение, а потом подать следующий стимул. Поскольку такие действия как приём тестом сообщения с внешней выходной дуги очевидны и обязательны, мы опускаем указания на них в тестовой последовательности. Какие проверки выполняются при прогоне теста? В финальной композиции переходу s—?x!y—t, где x#0, соответствует цепочка переходов в нефинальной композиции. Первый в цепочке переход имеет вид s—?x!0—f и означает для x=(i,m) размещение тестом сообщения m на внешней входной дуге i. Последний в цепочке переход имеет вид sy—?0!y—t и для y=(j,m означает передачу сообщения m с внешней выходной дуги j в тест. Остальные переходы внутренние и имеют вид s" —t", только такие переходы нужно проверять, поскольку только их выполнение означает выполнение перехода в каком-либо автомате-компоненте (но не более, чем в одном). Проверяется, выполнил ли этот автомат какой-либо переход или нет, и правильно ли это. Если автомат выполнил переход (и это правильно), то проверяется, правильную ли реакцию автомат выдал, и правильно ли изменилось его состояние.

Прогон теста покрывает некоторое множество переходов автоматов компонентов системы. Поскольку система детерминирована, это множество одно и то же при разных прогонах данного теста (с рестартом между прогонами), поэтому тест достаточно прогонять один раз. Мы будем рассматривать только конечные наборы тестов, после завершения прогона одного теста выполняется рестарт системы и прогоняется следующий тест из набора. Набор тестов покрывает множество переходов автоматов компонентов, которое является объединением множеств переходов автоматов компонентов, покрываемых тестами из этого набора. Набор тестов будем называть полным, если он покрывает все переходы автоматов компонентов, достижимые при работе этих компонентов в системе. Ставится задача генерации полного набора тестов.

Для решения этой задачи мы предлагаем использовать любой алгоритм генерации полного набора тестов для одного автомата. Таких алгоритмов предложено довольно много, по сути, они сводятся к построению набора маршрутов, покрывающих граф переходов автомата, достижимых из его начального состояния (см., например, [6]). В качестве такого автомата для наших целей выбирается автомат системы, получаемый с помощью описанной в предыдущем подразделе композиции автоматов. Понятно, что покрывая все достижимые переходы композиционного автомата системы, мы покрываем все достижимые переходы автоматов компонентов. Однако такой набор тестов может оказаться сильно избыточным для решения нашей задачи: покрытие всех достижимых переходов автоматов компонентов не обязательно требует покрытия всех достижимых переходов композиционного автомата системы. Поэтому предлагается в процессе генерации полного набора тестов для композиционного автомата системы применять процедуру фильтрации, которая будет отбрасывать «лишние» тесты. Эта процедура работает следующим образом. С самого начала создаётся пустое множество Т генерируемого набора тестов и множество Р непокрытых переходов автоматов компонентов, которое сначала равно множеству всех переходов всех автоматов компонентов. Когда генерируется очередной /-ый тест Т, для композиционного автомата системы, вычисляется множество Р, переходов автоматов компонентов, покрываемое этим тестом. Тесту соответствует маршрут в композиционном автомате. Если рассматривается нефинальная композиция, то каждому внутреннему переходу этого маршрута соответствует один переход одного из автоматов компонентов; множество таких переходов и есть множество Р,-. Напомним, что при переходе по внешнему стимулу или внешней реакции в автоматах компонентов никаких переходов не происходит. Если рассматривается финальная композиция, то каждому переходу этого маршрута соответствует множество переходов некоторых автоматов компонентов; объединение этих множеств и есть множество Р,-. Далее алгоритм фильтрации проверяет, покрывает ли /-ый тест какой-либо новый, ещё не покрытый переход какого-либо автомата компонента. Если Р,/пР=0, то никаких новых переходов /-ый тест не покрывает, и он отбрасывается. В противном случае тест добавляется к набору тестов Т := Т и(Т,}, а из множества непокрытых переходов удаляются новые переходы Р := Р \ Р. После того как все тесты сгенерированы и отфильтрованы, получившееся множество Т является полным набором тестов, а множество Р - множеством недостижимых переходов автоматов компонентов.

Замечание 2: о рестарте. Необходимость в рестарте возникает из-за отсутствия сильной связности графа переходов композиции. Можно выделить два особых случая, когда прогон теста заканчивается в терминальном состоянии композиции. 1) Состояние тупика, когда сообщение «зависает» на внешней входной или внутренней дуге. «Убрать» это сообщение можно только рестартом. 2) Зацикливание, когда сообщение бесконечно циркулирует по

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

2.4. Пример

Утверждение 3: Для любых чисел состояний автоматов компонентов п1,п2,...,пк существует такая система, что число внешних стимулов, которые надо дать для покрытия всех достижимых переходов композиции, равно П(п1п2...пк), а минимальное число внешних стимулов, которых достаточно для покрытия всех достижимых переходов автоматов компонентов, равно

0(П1+П2+...+Пк).

Доказательство: Рассмотрим систему, изображённую на рис. 4.

?(av1)!(a1+1,1)

(bi,1)!(ai+i,1)

граф

переходов автомата

Рис. 4. Пример 1 Fig. 4. Example 1

Здесь имеется единственное сообщение 1, M = {1}. Все автоматы в вершинах однотипные и различаются числом состояний ni. Автомат в вершине i имеет две входные дуги, обозначенные at и Ъ, и одну выходную дугу a++1. Соответственно, имеются два стимула (ai,1) и (bi,1) и единственная непустая реакция - (ai+1,1). Автомат i в любом состоянии j #n-1, получая по входной дуге ai сообщение 1, переходит в следующее состояние j+1 без выдачи реакции. В последнем состоянии n-1 автомат, получая по входной дуге ai сообщение 1, переходит в начальное состояние 0 с посылкой сообщения 1 по единственной выходной дуге ai+1. Тем самым, автомат i на каждую порцию из принятых им ni сообщений по входной дуге ai посылает одно сообщение следующему автомату i+1, или окружению, если i=k. Кроме того, имеется переход-петля в состоянии 0 по приёму сообщения по дуге bi с выдачей сообщения следующему автомату i+1, или окружению, если i=k.

1

n

В финальной композиции нет тупиков и зацикливания, все состояния финальные и имеют вид где состояние /-ого автомата •¡=0..п-1.

Начальное состояние $о=(0,0,...,0,0). Обозначим •тах=(п1-1,п2-1,...,пк-1,0). Финальное состояние • можно понимать как пару в=(в~,0), где - число, записанное в позиционной системе счисления слева направо от младшей позиции 1 к старшей позиции к: 1,2,...к, и п, - основание системы счисления в позиции /.

Рассмотрим в финальной композиции переходы по приёму стимула (а1,1), то есть по приёму сообщения по внешней входной дуге а1, ведущей в автомат 1. Для каждого состояния •?$тах есть переход (в~,0—?(а1,1)!0^(в~+1,0), а также есть переход (•тах~,0)—?(а1,1)!(ак+1,1)^($0~,0). Это не все переходы композиции, но число таких переходов равно произведению п1п2...пк. Следовательно, число переходов в финальной композиции не менее произведения п1п2...пк. Поскольку в финальной композиции один внешний стимул вызывает ровно один переход, число внешних стимулов, которые надо дать для покрытия композиции, равно £2(п1п2...пк).

Как наиболее быстро покрыть все переходы автомата /? Для этого достаточно 1) ni раз послать сообщение по дуге а/ и 2) один раз по дуге Ъ/. Для автомата 0 пункт 1 тест может выполнить непосредственно, поскольку дуга а1 внешняя. Для автомата />1 пункт 1 можно выполнить, посылая п/ раз сообщение по внешней дуге Ъ-1 в предыдущий автомат /-1. Пункт 2 тест также может выполнить непосредственно, поскольку дуга Ъ/ внешняя. В целом получается следующий тест:

1. п1 раз посылается сообщение в автомат 1 по внешней дуге а1,

автомат 1 проходит цикл переходов по состояниям 0,...,п1-1,0, во время последнего перехода будет послано сообщение по дуге а2, при получении этого сообщения автомат 2 переходит из состояния 0 в состояние 1 , остальные автоматы находятся в состоянии 0;

2. п2-1 раз посылается сообщение в автомат 1 по внешней дуге Ъ1, автомат 1 проходит п2-1 раз по петле в состоянии 0, каждый раз посылая сообщение по дуге а2, при получении всех этих сообщений автомат 2 проходит цепочку переходов из состояния 1 в состояние 0, при последнем переходе посылается сообщение по дуге а3, при получении этого сообщения автомат 3 переходит в состояние 1 , остальные автоматы остаются в состоянии 0;

3. п3-1 раз посылается сообщение в автомат 2 по внешней дуге Ъ2, автомат 2 проходит п3-1 раз по петле в состоянии 0, каждый раз посылая сообщение по дуге а3, при получении всех этих сообщений автомат 3 проходит цепочку переходов из состояния 1 в состояние 0, при последнем переходе посылается сообщение по дуге а4, при получении этого сообщения автомат 4 переходит в состояние 1 , остальные автоматы остаются в состоянии 0;

к-1. пк-1-1 раз посылается сообщение в автомат к-2 по внешней дуге Ък-2,

автомат к-2 проходит пк-1-1 раз по петле в состоянии 0, каждый раз посылая сообщение по дуге ак-1, при получении всех этих сообщений автомат к-1 проходит цепочку переходов из состояния 1 в состояние 0, при последнем переходе посылается сообщение по дуге ак, при получении этого сообщения автомат к переходит в состояние 1 , остальные автоматы остаются в состоянии 0; к. пк-1 раз посылается сообщение в автомат к-1 по внешней дуге Ък-1,

автомат к-1 проходит пк-1 раз по петле в состоянии 0, каждый раз посылая сообщение по дуге ак, при получении всех этих сообщений автомат к проходит цепочку переходов из состояния 1 в состояние 0, при последнем переходе посылается внешнее сообщение по дуге ак+1, которое принимается тестом, остальные автоматы остаются в состоянии 0; к+1. 1 раз посылается сообщение в автомат к по внешней дуге Ък,

автомат к проходит петлю в состоянии 0 и по внешней выходной дуге ак+1 посылает сообщение. Длина тестовой последовательности п1+(п2-1)+...+(пк-1)+1 = (п1+...+пк)-к+2 = в(п1+...+пк). Утверждение доказано.

3. Вторая модель: обобщение автомата в вершине 3.1. Определение модели

В этом разделе мы сохраняем предположения о дуге (дуга реализует очередь сообщений длины 1), но обобщаем понятие автомата в вершине. Такой обобщённый автомат может принимать одновременно несколько сообщений по нескольким (необязательно всем) входным дугам, но не более одного сообщения по каждой дуге, и посылать несколько сообщений по нескольким (необязательно всем) выходным дугам, но не более одного сообщения по каждой дуге.

Дадим формальное определение автомата в вершине. Автомат в вершине такой же, как в разделе 2, но с изменёнными множествами стимулов и реакций, поскольку стимул и реакция теперь могут содержать несколько сообщений принимаемых или посылаемых по нескольким дугам. Формально для графа связей 0=(У,%,Е) и множества сообщений М автомат в вершине V -это такой автомат (БКХК У,, что XV = {х \/х /еМ

У, = {у \3/у /еМА}, где через Ав обозначено множество всех отображений из В в А.

Стимул автомата - это частично определённое отображение х:1—М, которое каждой входной дуге ¡еБош(х) ставит в соответствие сообщение х(1), принимаемое по этой дуге. Реакция автомата - это частично определённое отображение у:Оу^М, которое каждой выходной дуге ] еБош(у) ставит в соответствие сообщение уф, посылаемое по этой дуге.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Для описания состояния входных и выходных дуг автомата в вершине V введём два частично-определённых отображения х*:1—М и у*:О—{М}. Первое отображение каждой непустой входной дуге I еЦ ставит в соответствие сообщение т еМ, находящееся на этой дуге. Второе отображение каждой пустой выходной дуге ] еOV ставит в соответствие множество сообщений М. Эти отображения х* и у* порождают множества потенциальных стимулов и потенциальных реакций, которые автомат может, соответственно, принять и послать при данном состоянии входных и выходных дуг, если, конечно, в текущем состоянии автомата определены соответствующие переходы: X* = {х:1—М \ Бош(х)сБош(х„*) & ЫеБош(х) х(1)=х*(1)}, У* = {у:О-—М \ Бош (у) сБош (у/)}.

Теперь можно формально определить условие выполнения перехода

5—?х!у— : хеХу & уеУ*.

3.2. Детерминированный автомат

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

1) s—?х!у-— & 5—?х!у=^у=уу & t=t\

В отличие от первой модели во второй модели распределение сообщений по входным дугам автомата не однозначно определяет стимул, который может принять автомат, поскольку автомат может не принимать сообщения с некоторых входных дуг, даже если дуги не пусты. Например, если на входных дугах 11 и 12 находятся сообщения т1 и т2, соответственно, то может быть принят любой из стимулов {(¡1,т1),(12,т2)}, {(I1,т1)}, {(I2,т2)} или 0. Если в автомате в текущем состоянии есть переходы хотя бы по двум из этих стимулов, то поведение автомата недетерминировано: может быть выбран приём любого из этих стимулов.

Будем говорить, что два стимула х и х" совместимы, и обозначать хях\ если при некоторых сообщениях на входных дугах автомата, т.е. при некотором отображении xv, автомат может принять любой из этих стимулов, т.е. xеXV и х'еХ/. Формально: х«х' = V еБош(х) гБош(хУ х(\) = х*(1). Заметим, что все стимулы во множестве Xv совместимы друг с другом. Отсюда вытекает второе требование детерминизма автомата:

2) Нет переходов из одного состояния по разным совместимым стимулам:

Vs,x,x\y,y" & XXXs —i(s—?x!y — & s-?x\lyS—).

Утверждение 4: Если выполнены оба требования детерминизма, то состояние sv автомата в вершине v и отображения xv* и y* однозначно определяют, выполняет ли автомат какой-либо переход, и, если выполняет, то сам переход, т.е. однозначно определяют принимаемый стимул xv, посылаемую реакцию yv и постсостояние tv.

Доказательство: По определению отображения xv* и y* однозначно определяют множества Xv и Yv*. Из второго требования детерминизма следует, что при любом распределении xv* сообщений на входных дугах автомата, порождающим множество X* потенциальных стимулов, не более одного из этих стимулов xveXv* может быть принято автоматом в данном состоянии sv. Такой стимул xv будем называть выбираемым, он может отсутствовать. Правда, это не означает, что выбираемый стимул xv (если он есть) обязательно будет принят автоматом, поскольку выполнение перехода с приёмом этого стимула обусловлено возможностью послать реакцию. Рассмотрим все случаи поведения автомата в состоянии sv при заданных xv* и y* (однозначно определяющих X* и Y*), определяя, будет ли выполнен переход и, если будет, то сам переход, т.е. принимаемый стимул xv, посылаемую реакцию yv и постсостояние tv.

1. Имеется выбираемый стимул xveXv*, он единственный по 2-ому требованию детерминизма.

1.1. Для некоторой реакции y есть переход sv—?x!y—t и yeYv*, т.е. реакция y может быть послана (нужные выходные дуги пусты). Автомат выполнит этот переход (он единственный по 1-ому требованию детерминизма),

xv x?i yv У, ^v t.

1.2. Для любой реакции y либо нет перехода s—?x!y—, либо y^Y*. Автомат не выполнит никакого перехода, xv =0, yv =0, tv =sv.

2. Нет выбираемого стимула. Автомат не выполнит никакого перехода, xV=0, yv"=0, U=sv.

Утверждение доказано.

3.3. Интерпретация 1-ой модели в терминах 2-ой модели

Утверждение 5: Автомат 1-ой модели (раздел 2) - частный случай автомата 2-ой модели (раздел 3).

Доказательство: Утверждение очевидно, если применить интерпретацию 1-ой модели в терминах 2-ой модели так, как отображено на табл.1., и сравнить определения выполнимости перехода автомата в обеих моделях.

Табл. 1. Интерпретация 1-ой модели в терминах 2-ой модели Table. 1. Interpretation of the first model in terms of the second model

1-ая модель интерпретация особенности 1-ой модели

стимул x=(i,m) x={(i,m)} принимается ровно одно сообщение

реакция y=(j,m) или y=0 y={(j,m)} или y=0 посылается не более одного сообщения

переход s—?x!y^t s—?x!y^t

Утверждение доказано.

В то же время детерминированный автомат в 1 -ой модели, вообще говоря, не является детерминированным автоматом во 2-ой модели. Например, в 1-ом случае могут быть два перехода •—?(/,т)!у^ и •—?(Г,тУ)!у^, где />/", наличие которых во 2-ой модели означает нарушение 2-го требования детерминизма. Это объясняется тем, что 1-ая модель ограничивает циркуляцию сообщений в системе, допуская только одно сообщение, поэтому требования детерминизма в 1-ой модели оказываются слабее, чем во 2-ой.

3.4. Композиция автоматов системы

Определим композицию детерминированных автоматов с данным графом связей. Результатом композиции будет автомат (^,Х,У,Т,80), отражающий работу системы в целом, включая все автоматы-компоненты и все дуги. Поскольку теперь, в отличие от первой модели, сообщения могут быть на нескольких дугах одновременно, но не более одного сообщения на каждой дуге, состояние системы - это набор состояний её автоматов $1,в2,...,$к, а также распределение сообщений по дугам графа связей. Формально состояние системы - это набор • = (•1,а2,...,а\,Б), где Б:Е^М - частично-определённое отображение, которое для каждой непустой дуги указывает находящееся на ней сообщение. Начальным состоянием системы, как и для первой модели, будем считать состояние, в котором каждый автомат находится в своём начальном состоянии, а сообщений на дугах нет, то есть состояние 0).

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

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

дуги. Это определяет допустимые стимулы и реакции. Стимул x:I0^M допустимо послать из окружения в систему, если Dom(x)nDom(D)=0, в частности, всегда допустим пустой стимул x=0. Реакцию y:O0^Mдопустимо принять из системы в окружение, если y cD, в частности, всегда допустима пустая реакция y=0. Если стимул x и реакция y допустимы, то в композиции

Л А А А А А ^^

определяется переход s—rxjy^-t, где t = (t¡ ,t2 ,...,tk,D). Определим для каждой вершины v постсостояние tv, а также определим D . Для v=1..k рассмотрим автомат в вершине v. Для данного состояния системы s отображение xv# определяется однозначно как сужение отображения D на множество Iv входных дуг v-ого автомата: xv = {(i,m)\(i,m) eD & ieIv}, и отображение yv#, которое каждой пустой выходной дуге v-го автомата ставит в соответствие множество M всех сообщений: yv# = {(j,M) \ j eOvDom(D)}. По утверждению 4 при заданных sv, xv# и y* автомат выполняет не более одного

перехода, и однозначно определяются принимаемый стимул xv и посылаемая

АА

реакция yv, а также постсостояние tv. Именно это постсостояние и

записывается в t.

Определим D.

Сначала положим D :=D.

Рассмотрим, как должно меняться расположение сообщений на дуге e=(i,z,j).

1) В состоянии s дуга e была пустой, т.е. e^Dom(D). Тогда при j¿0 j-ый автомат не принимает с неё сообщения, т.е. egDom(xj). При i¿0 i-ый автомат посылает по этой дуге сообщение m, если eeDom(yi) &yi (e)=m; тогда пара (e,m) добавляется в D. Если j=0, то e^Dom(y). Если i=0, то eeDom(x) =^eeDom(D) & D (e)=x(e), т.е. если окружение посылает по внешней входной дуге e сообщение x(e), то пара (e,x(e)) добавляется в D .

2) В состоянии s на дуге e было сообщение m, т.е. eeDom(D) & D(e)=m. Тогда при j^ü j-ый автомат принимает это сообщение, если eeDom(xj) & xj (e)=m; тогда пара (e,xj (e)) удаляется из D . При i¿0 i-ый автомат не может послать по этой дуге никакого сообщения, поскольку дуга в состоянии s занята, т.е. e0Dom(yi). Если j=0, то eeDom(y) =^e0Dom(D) & D(e)=y(e), т.е. если окружение принимает по внешней выходной дуге e сообщение y(e), то пара (e,y(e)) удаляется из D . Если i=0, то e^Dom(x).

Тем самым, D = (D ux uy¡ и... uyk) \ (y ux¡ и... uxk).

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

Утверждение 6: Во второй модели композиция детерминированных автоматов детерминирована.

Доказательство: Достаточно показать, что 1) каждый автомат вершины графа связей может выполнить не более одного перехода, и 2) распределение Б сообщений по дугам определяется однозначно. И то, и другое следует из утверждения 4 и определения композиции. Утверждение доказано.

3.5. Генерация тестов

При тестировании на каждом такте тест посылает в тестируемую систему сообщения по пустым внешним входным дугам (не обязательно всем) и принимает от системы по занятым внешним выходным дугам (не обязательно всем) имеющиеся на них сообщения. Определим композицию системы и теста. Состояние композиции - это пара состояний системы и теста. Переход композиции соответствует паре из допустимого стимула и допустимой реакции, что определяет возможные постсостояния системы и теста, т.е. возможные постсостояния композиции. Сам переход композиции является внутренним, т.е. ничем не помечен, поскольку композиция системы и теста замкнута и ни с чем не взаимодействует. Формально в композиции системы и теста переходы определяются следующим правилом композиции: •—?х!у-— & —?у!х— -М\

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

Тестовая последовательность - это конечная последовательность пар (х1,у1),...,(хп,уп), которой в тестируемой системе соответствует маршрут (цепочка смежных переходов) я0—?х1!у1—я1—...—п-1—?хп!уп—яп, а в тесте -маршрут я'0—?у1!х1—я"1—-...—•'п.1—?уп!хп—я'п. Каждое состояние • и соответствует префиксу тестовой последовательности длиной /. Для такой тестовой последовательности детерминированной тест состоит только из указанной выше цепочки переходов. Детерминированный тест выбирает только одну допустимую реакцию, принимаемую от системы, как подмножество сообщений на занятых внешних выходных дугах системы, и посылает в систему только один допустимый стимул как набор сообщений, размещаемых на подмножестве пустых внешних входных дуг системы. Какие проверки выполняются при прогоне теста? На каждом /-ом такте проверяется следующее. 1) Выполнился ли в тесте переход • \—?у+1!х+1—я\+1, если не выполнился, то фиксируется ошибка. 2) Для

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

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

Во-первых, теперь тест может посылать сообщения в систему не только в её финальном состоянии, а в любом состоянии.

Во-вторых, если в первой модели сообщение не посылается в систему в её финальном состоянии, то ничего не происходит: система не меняет своего состояния. Во второй модели система в финальном состоянии (т.е. при отсутствии сообщений на дугах), вообще говоря, может продолжать работать, поскольку допустимы переходы, при которых сообщения не принимаются. В-третьих, если в первой модели сообщение (единственное в системе) находится на внешней выходной дуге, то также ничего не происходит, т.е. система не меняет своего состояния, до тех пор, пока тест не примет это сообщение и, тем самым, не переведёт систему в финальное состояние. Именно поэтому такое действие теста очевидно и обязательно, и в тестовой последовательности для 1 -ой модели опущены принимаемые от системы сообщения, т.е. реакции системы. Во второй модели, с одной стороны, тестируемая система может выполнять переходы и в том случае, когда на внешних выходных дугах имеются сообщения, а, с другой стороны, тест может принимать часть сообщений с внешних выходных дуг. В-четвёртых, в первой модели выполнимость перехода зависит только от наличия нужного сообщения на нужной входной дуге, поскольку выходные дуги всегда свободны. По замечанию 1 исключение составляет только переход s—?(i,m)!(i,my)—t по приёму сообщения с дуги-петли i с одновременной посылкой сообщения по этой же дуге, такой переход никогда не выполним. Во второй модели также всегда невыполним аналогичный переход s—?x!y—t, где некоторая дуга-петля ieDom(x)nDom(y), с приёмом сообщения x(i) c дуги-петли и посылкой сообщения y(i) по ней же. Однако во второй модели в системе может быть несколько сообщений и выполнимость перехода всё же зависит от того, заняты или нет выходные дуги, по которым нужно послать сообщения.

Замечание 3: о приёме тестом сообщений от системы. Приём или не приём тестом сообщений с внешних выходных дуг системы, по сути, является дополнительным тестовым воздействием на систему, поскольку меняет её поведение (выполнимость тех или иных переходов). Для того чтобы описать это формально, такое тестовое воздействие нужно трактовать как часть 122

стимула, т.е. нужно приём тестом сообщений от системы заменить посылкой тестом сообщений в систему. Поведение дуги как очереди длины 1 можно изобразить в виде автомата с одним входом и одним выходом, изображённого на рис. 5 вверху.

?(О,а1)!0

M = (a1,...,amj

пусто г

-

вход Of---fbixodl ?0!(1,ат)

=С> дуга

>

? 01(1,0!) ?(О,ат)!0 . •

?(Q,a1)!0

пусто г

-

вход 0.-, вход 1

?(1,aJ!0

?(1,а1)!0 ?(О,ат)!0 .

a

т

a

т

Рис. 5. Автомат очереди длины 1 Fig. 5. Automata of a queue of length 1

Такой автомат дуги взаимодействует синхронно с автоматами начальной и конечной вершин дуги: либо одновременно происходит посылка сообщения по дуге из автомата начала дуги и приём этого сообщения в автомат дуги, либо одновременно происходит посылка сообщения из автомата дуги и приём этого сообщения по дуге в автомате конца дуги. Для того чтобы в тесте заменить приём посылкой, достаточно преобразовать автоматы внешних выходных дуг, объявляя выход 1 входом 1 и заменяя на переходах автомата дуги пометку ?0!(1,a) - на пометку ?(1,a)!0 (рис. 5 внизу). Соответственно, в автомате теста все входы превращаются в выходы, а на переходах вместо ?y!x записывается ?0!(yux), т.е. для тестируемой системы вместо стимула x будет стимул yux.

Замечание 4: о внешних реакциях. Для теста всё равно, какую именно реакцию y посылает система, поскольку правильность реакции y проверяется во время проверки правильности перехода системы, т.е. правильности сообщений, которые автоматы компонентов посылают на свои выходные дуги, которые являются внешними выходными дугами. Поэтому после преобразования, когда реакции становятся частью стимулов, для стимула y^x в паре (j,m) ey, где j - выходная дуга теста, бывшая до преобразования входной дугой теста, сообщение m можно заменить на специально выделенное сообщение «принять».

4. Заключение

В заключение сформулируем направления дальнейших исследований.

1) Предложенный алгоритм фильтрации не обязательно даёт оптимальный полный набор тестов. Оптимальность может пониматься как минимальное число или минимальная суммарная длина тестовых последовательностей. Соответственно, возникает задача оптимизации, т.е. поиска оптимального набора, которая, вообще говоря, сводима к задаче о поиске минимального покрытия ([7], [8]).

2) В этой статье определена композиция автоматов системы, наиболее удобная для тестирования. Её результатом является автомат без входных и выходных дуг, поскольку они «погружены» внутрь системы. Поэтому такой автомат не может использоваться как компонент при построении более сложной системы. В дальнейшем мы предполагаем (в рамках более общей модели) определить композицию другим способом так, чтобы её результатом был автомат с входными и выходными дугами, т.е. автомат, который можно помещать в вершину графа связей.

3) В этой статье мы предполагали, что дуга реализует очередь длины 1. Это легко обобщается на случай очередей большей длины, в том числе неограниченных очередей; более того, разные дуги могут реализовывать очереди разной длины. Длина очереди является статическим атрибутом дуги и задаётся при задании графа связей. Для второй модели отображение D, описывающее состояние дуг, теперь должно отображать дугу в последовательность сообщений, находящихся в очереди, в частности, пустая последовательность соответствует пустой дуге.

Однако для очереди длины больше 1 возникает другая проблема. В конце 3-го раздела определён автомат дуги, которая понимается как очередь длины 1. Здесь нам, что называется, «повезло», поскольку очередь большей длины невозможно изобразить в виде автомата того типа, что определён в разделе 3. Дело в том, что в «промежуточном» состоянии, когда очередь не пуста, но и не полностью заполнена, вместе с каждым переходом s—?(0,x)!(1,y)—t, при котором в конец очереди вставляется сообщение x, а из головы очереди удаляется сообщение y, должны быть два других перехода. Второй переход -это переход s—?(O,x)!0—t, при котором в конец очереди вставляется сообщение x, а из головы очереди не удаляется сообщение y, поскольку конец дуги его не принимает. Третий переход - это переход s—?0!(1,y)—t, при котором из головы очереди удаляется сообщение y, но в конец очереди не вставляется никакого сообщения, поскольку начало дуги не посылает по дуге никакого сообщения. Однако в рамках второй модели наличие первого и второго переходов противоречит 1 -ому требованию детерминизма: одному стимулу (0,x) соответствуют две реакции (1,y) и 0. Кроме того, третий переход - это переход по пустому стимулу, который совместим с любым другим стимулом, в том числе со стимулом (0,x), что противоречит 2-ому

требованию детерминизма. Решение этой проблемы мы предполагаем искать на пути подходящего обобщения модели автомата.

4) Кроме очереди длины больше 1, могут быть и другие дуги графа связей. Например, очередь с приоритетами, стек и т.п. Мы предполагаем обобщить понятие дуги с помощью определения автомата дуги. Для детерминизма системы, по-видимому, к автомату дуги придётся предъявить дополнительные (по сравнению с автоматом вершины) требования. Композиция должна быть определена для пары автоматов, выход одного из которых соединён с входом другого. На таком соединении происходит синхронное взаимодействие автоматов, когда один автомат посылает сообщение тогда и только тогда, когда другой автомат это сообщение принимает.

5) При тестировании, как обычно, возникает задача «огрубления», когда проверяется не «всё подряд», а проверка делается выборочно. Это называют факторизацией тестирования [9]. Например, для проверки правильности реализации числовой функции домены её аргументов разбиваются на поддомены, и из каждого поддомена выбирается хотя бы одно число для проверки. В терминах рассматриваемой здесь задачи факторизация означает, что на переходах автомата компонента определяется отношение эквивалентности, и считается, что достаточно проверить хотя бы один переход из класса эквивалентности.

6) В данной статье предлагается решение проблемы тестирования компонентов только детерминированной системы автоматов. Одним из направлений дальнейших исследований могло бы стать исследование проблемы недетерминизма. Более точно, ставится задача определить такие ограничения на недетерминизм системы и/или составляющих её автоматов, которые позволяли бы выполнять полное тестирование за конечное время. Для автономного тестирования, когда автомат находится под непосредственным управлением теста (не в контексте окружающей его части системы), предложенные неплохие решения этой задачи ([10], [11], [12], [13]).

7) В данной статье предполагается, что известно, каким должен быть автомат каждого компонента: задан граф переходов автомата с точностью до изоморфизма. В более общем случае между автоматом компонента в реализации и автоматом компонента в спецификации задаётся то или иное отношение конформности, которое слабее изоморфизма: квази-редукция, симуляция и т.п. Это требует более сложного алгоритма тестирования. Если тестирование компонента автономное, т.е. не в контексте других компонентов системы и связующих их дуг, то возможно полное тестирование за конечное время конформности типа редукции или слабой симуляции ([2], [3], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20]). Для составной системы возникает проблема декомпозиции системных требований, называемая также проблемой несохранения конформности. Она заключается в том, что композиция реализаций компонентов, конформных спецификациям этих компонентов, в общем случае неконформна спецификации системы, в

частности, композиции спецификаций компонентов. Этой проблеме посвящён ряд работ ([2], [4], [21]), но возникает задача переосмысления предложенных решений для рассматриваемой в этой статье задачи тестирования компонентов системы при условии, что верна гипотеза о связях.

Список литературы

[1]. Revised Working Draft on "Framework: Formal Methods in Conformance Testing". JTC1/SC21/WG1/Project 54/1, ISO Interim Meeting, ITU-T on, Paris, 1995 г.

[2]. И.Б.Бурдонов, Косачев А.С., В.В.Кулямин. Теория соответствия для систем с блокировками и разрушением. «Физ-мат лит» Наука, Москва, 2008 г., 412 стр.

[3]. И.Б.Бурдонов. Теория конформности (функциональное тестирование программных систем на основе формальных моделей). LAP Lambert Academic Publishing, 2011 г., 428 стр.

[4]. И.Б.Бурдонов, А.С.Косачев. Пополнение спецификации для ioco. Программирование, 2011 г., №1, стр. 3-18.

[5]. А. Камкин, М. Чупилко. Обзор современных технологий имитационной верификации аппаратуры. Программирование, 2011 г., №3, стр. 42-49.

[6]. И.Б. Бурдонов, А.С. Косачев, В.В. Кулямин. Неизбыточные алгоритмы обхода ориентированных графов. Детерминированный случай. Программирование, 2003 г., №5, стр. 59-69.

[7]. Ананий В. Левитин. Алгоритмы: введение в разработку и анализ. М.: «Вильямс»,

2006 г., стр. 160-163, ISBN 0-201-74395-7.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

[8]. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ. 2-ое издание. М.: «Вильямс», 2006 г., стр. 456458, ISBN 0-07-013151-1.

[9]. Бурдонов И.Б., Косачев А.С., Кулямин В.В. Использование конечных автоматов для тестирования программ. Программирование. 2000 г., № 2, стр.12-28.

[10]. И.Б. Бурдонов, А.С. Косачев. Полное тестирование с открытым состоянием ограниченно недетерминированных систем. Программирование, 2009 г., №6, стр. 3-18.

[11]. И.Б.Бурдонов, А.С.Косачев. Семантики взаимодействия с отказами, дивергенцией и разрушением. Часть 2. Условия конечного полного тестирования. Вестник Томского Государственного Университета, № 2(15), 2011 г., стр. 89-98.

[12]. И.Б. Бурдонов, А.С. Косачев. Тестирование конформности на основе соответствия состояний. Труды ИСП РАН, volume 18, 2010 г., стр. 183-220.

[13]. И.Б.Бурдонов, А.С.Косачев, Безопасное тестирование симуляции систем с отказами и разрушением. Моделирование и анализ информационных систем, том 17(4), 2010 г., стр. 27-40.

[14]. I.B.Bourdonov, A.S.Kossatchev, V.V.Kuliamin. Formal Conformance Testing of Systems with Refused Inputs and Forbidden Actions. Proceedings of the Workshop on Model Based Testing (MBT 2004), Elsevier, 2006.

[15]. И.Б.Бурдонов, А.С.Косачев, В.В.Кулямин. Формализация тестового эксперимента. Программирование, 2007 г., №5, стр. 3-32.

[16]. И.Б.Бурдонов, А.С.Косачев, В.В.Кулямин. Безопасность, верификация и теория конформности. Материалы второй международной научной конференции по проблемам безопасности и противодействия терроризму. МГУ 2006, М., МЦНМО,

2007 г., стр. 135-158.

[17]. И.Б.Бурдонов, Косачев А.С. Системы с приоритетами: конформность, тестирование, композиция. Труды ИСП РАН, том 14 (1), 2008 г., стр.23-54.

[18]. И.Б. Бурдонов, А.С. Косачев. Тестирование с преобразованием семантик. Труды ИСП РАН, том 17, 2009 г., стр.193-208.

[19]. A.Kossachev, I.Burdonov. Formal Conformance Verification, Short Papers of the 22nd IFIP ICTSS, Alexandre Petrenko, Adenilso Simao, Jose Carlos Maldonado (eds.), Nov. 08-10, 2010, Natal, Brazil, pp.1-6.

[20]. А.С. Косачев, И.Б.Бурдонов. Семантики взаимодействия с отказами, дивергенцией и разрушением. Программирование, 2010 г., №5, стр. 3-23.

[21]. И.Б.Бурдонов, А.С.Косачев. Согласование конформности и композиции. Программирование, 2013 г., №6, стр. 3-15.

Testing of automata system

I.B. Burdonov <igor@ispras.ru> A.S. Kossatchev <kos@ispras.ru> Institute for System Programming of the Russian Academy of Sciences, 25, Alexander Solzhenitsyn st., Moscow, 109004, Russia

Abstract. The problem of testing of aggregate systems is considered. The system is described with an oriented graph of links. The nodes correspond to automata of the components and arcs correspond to simplex communication channels. The hypothesis of the links is assumed: the graph of links is static and the link structure is error-free. In each state, the automaton can accept and send multiple messages through incoming and outgoing arcs (at most one message through each arc). The goal of testing is to cover transitions of the automata reachable during the system work. It assumed that during testing it is possible to observe the state changes of automata and the messages on the arcs. A simplified system model with only one message circulating is considered at the beginning. On its example we show that the hypothesis on links allows considerably reduce the number of required testing actions from the multiplication of numbers of the component automata states to the sum of these numbers. If the numbers of states of all automata are equal, it gives exponential reduction of the number of test actions. Then the more general model is considered when the system can simultaneously contain multiple messages, but not more than one on each arc. A composition of the system automata is defined and the restrictions on automata making the system deterministic are described. An algorithm of test generation is proposed basing on test filtration generated for covering all transitions of the deterministic composition system. Test is rejected if it covers only such transitions of the components that are covered by the remaining tests. In conclusion, the directions of future research are described.

Keywords: directed graphs; graph coverage, communicating automata, distributed systems, testing, networks.

DOI: 10.15514/ISPRAS-2016-28(1)-7

For citation: Burdonov I.B., Kossatchev A.S. Testing of automata system. Trudy ISP RAN /Proc. ISP RAS, 2016, vol. 28, issue 1, pp. 103-130 (in Russian). DOI: 10.15514/ISPRAS-2016-28(1)-7

References

[1]. Revised Working Draft on "Framework: Formal Methods in Conformance Testing". JTC1/SC21/WG1/Project 54/1, ISO Interim Meeting, ITU-T on, Paris, 1995.

[2]. Bourdonov I.B., Kossatchev A.S., Kuliamin V.V. Teoriya sootvetstviya dlya system s blokirovkami I razrusheniem [Conformance theory of the systems with Refused Inputs and Forbidden Actions]. Moscow, «Nauka», 2008, 412 p. (in Russian)

[3]. Bourdonov I. Teoriya konformnosti (funkcional'noe testirovanie prorammny'kh system na osnove formal'ny'kh modelej [Conformance theory (functional testing on formal model base)]. LAP LAMBERT Academic Publishing, Saarbrucken, Germany, 2011, ISBN 978-3-8454-1747-9, 428 p. (in Russian)

[4]. Bourdonov I.B., Kossatchev A.S. Specification Completion for IOCO. Programming and Computer Software, vol. 37(1), 2011, pp. 1-14. DOI: 10.1134/S0361768811010014

[5]. A. S. Kamkin, M. M. Chupilko. Survey of modern technologies of simulation-based verification of hardware. Programming and Computer Software, vol. 37 (3), 2011, pp. 147-152. DOI: 10.1134/S0361768811030017

[6]. I. B. Burdonov, A. S. Kossatchev, V. V. Kuliamin. Irredundant Algorithms for Traversing Directed Graphs: The Deterministic Case. Programming and Computer Software, vol. 29(5), 2003, pp. 245-258. DOI: 10.1023/A.1025733107700

[7]. A. Levitin. Algoritmy: vvedenie v razrabotku i analiz [Introduction to The Design and Analysis of Algorithms]. M.: «Viliams», 2006, pp. 160-163, ISBN 0-201-74395-7. (in Russian)

[8]. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein. Introduction to Algorithms. 2-nd Edition. MIT Press Cambridge, MA, USA, 2001, ISBN 0-262-03293-7.

[9]. Bourdonov I.B., Kossatchev A.S., Kuliamin V.V. Application of Finite Automatons for Program Testing. Programming and Computer Software, vol. 26 (2), 2000, pp. 61-73. DOI: 10.1007/BF0275 9192

[10]. Bourdonov I.B., Kossatchev A.S. Complete Open-State Testing of Limitedly Nondeterministic Systems. Programming and Computer Software, vol. 35 (6), 2009, pp.301-313. DOI: 10.1109/HASE.2014.39

[11]. Bourdonov I.B., Kossatchev A.S. Semantiki vzaimodejstviya s otkazami, divergentsiej i razrusheniem. Chast' 2. Usloviya konechnogo polnogo testirovaniya. [Semantics of Interaction with Refused Inputs, Divergence and Forbidden Actions. Part 2. The condition of finite complete testing]. Vestnik Tomskogo gosudarstvennogo universiteta. Upravlenie, vychislitel'naya tekhnika i informatika. [Tomsk State University. Journal of Control and Computer Science], 2011, №2, pp. 89-98. (in Russian)

[12]. Bourdonov I.B., Kossatchev A.S. Testirovanie konformnosti na osnove sootvetstviya sostoyanij [Conformance testing based on a state relation]. Trudy ISP RAN [Proceeding of ISP RAS], vol. 18, 2010, pp. 183-320 (in Russian)

[13]. 84. Bourdonov I.B., Kossatchev A.S.. Safe simulation testing of systems with refusals and destructions. Automatic Control and Computer Sciences, vol. 45(7), 2011, pp. 380389. DOI: 10.3103/S0146411611070042

[14]. I.B.Bourdonov, A.S.Kossatchev, V.V.Kuliamin. Formal Conformance Testing of Systems with Refused Inputs and Forbidden Actions. Proceedings of the Workshop on Model Based Testing (MBT 2004), Elsevier, 2006. DOI: 10.1016/j.entcs.2006.09.008

[15]. Bourdonov I.B., Kossatchev A.S., Kuliamin V.V. Formalization of Test Experiments. Programming and Computer Software, vol. 33(5), 2007, pp. 239-260. 10.1134/S0361768807050015

[16]. Bourdonov I.B., Kossatchev A.S., Kuliamin V.V. Bezopasnost', verifikatsiya i teoriya konformnosti [Safety, Verification and Conformance Theory]. Materialy Vtoroj mezhdunarodnoj nauchnoj konferentsii po problemam bezopasnosti i protivodejstviya terrorizmu [The proceeding of the Second international conference on the problems of safety and counteraction against terrorizm], Moscow, MNCMO, 2007, pp. 135-158. (in Russian)

[17]. Bourdonov I.B., Kossatchev A.S. Sistemy s prioritetami: konformnost', testirovanie, kompozitsiya [Systems with priority: conformance, testing, composition]. Trudy ISP RAN [Proceeding of ISP RAS], vol. 14(1), 2008, pp.23-54 (in Russian)

[18]. Bourdonov I.B., Kossatchev A.S. Testirovanie s preobrazovaniem semantic [Testing with Semantics Conversion] Trudy ISP RAN [Proceeding of ISP RAS], vol. 17, 2009, pp. 193-208. (in Russian)

[19]. A.Kossachev, I.Burdonov. Formal Conformance Verification, Short Papers of the 22nd IFIP ICTSS, Alexandre Petrenko, Adenilso Simao, Jose Carlos Maldonado (eds.), Nov. 08-10, 2010, Natal, Brazil, pp.1-6.

[20]. Bourdonov I.B., Kossatchev A.S. Interaction Semantics with Refusals, Divergence, and Destruction. Programming and Computer Software, vol. 36(5), 2010, pp. 247-263. DOI: 10.1134/S0361768810050014

[21]. Bourdonov I.B., Kossatchev A.S. Agreement between Conformance and Composition. Programming and Computer Software, vol. 39(6), 2013, pp. 269-278. DOI: 10.1134/S0361768813060029

i Надоели баннеры? Вы всегда можете отключить рекламу.