Синтез проверяющих последовательностей для недетерминированных автоматов относительно редукции
Антон Ермаков <[email protected]> Национальный исследовательский Томский государственный университет, 634050, пр. Ленина, 36, Томск, Россия
Аннотация. В данной статье предлагается алгоритм построения адаптивной проверяющей последовательности для недетерминированного конечного полностью определенного автомата относительно редукции.
Ключевые слова: синтез тестов; недетерминированный автомат; отношение редукции;
1. Введение
В большинстве методов построения проверяющих тестов по автоматной модели рассматривается инициальный конечный автомат, и соответственно проверяющие тесты строятся как набор входных последовательностей, перед каждой из которых подается сигнал СБРОС, переводящий автомат в начальное состояние. Если последний является достаточно дорогим, то имеет смысл попытаться построить одну последовательность, которая позволяет выяснить, является ли проверяемая реализация конформной спецификации. Кроме того, обычно под тестом понимается множество заранее построенных входных последовательностей. В том случае, когда проверяющий тест строится по недетерминированному автомату-спецификации, а автомат-реализация является детерминированным, имеет смысл говорить об адаптивном тестировании. В этом случае следующий входной символ определятся по выходной реакции тестируемой реализации на предыдущие входные символы. За счет адаптивности длина теста может оказаться более короткой, чем длина тестовых последовательностей, построенных заранее до начала процесса тестирования [1].
В данной работе мы предполагаем, что автомат-спецификация обладает разделяющей последовательностью и детерминированным сильно связным подавтоматом. Эти условия гарантируют, что только автомат, изоморфный
111
некоторому подавтомату спецификации с тем же числом состояний, может быть редукцией автомата-спецификации [2]. Соответственно для проверки, является ли проверяемый автомат редукцией спецификации, необходимо пройти по всем переходам проверяемого автомата; последовательность, покрывающую переход, необходимо продолжить разделяющей последовательностью для проверки финального состояния перехода. Как обычно, тестирование осуществляется в два шага. На первом шаге в каяедом состоянии проверяемого автомата определяется реакция на разделяющую последовательность. После этого осуществляется обычная проверка переходов в проверяемом автомате посредством покрытия соответствующего перехода и последующей подачей разделяющей последовательности. В заключение мы отмечаем, что, поскольку проверяющая последовательность будет прикладываться адаптивно, вместо д-передаточных последовательностей можно использовать определенно-достижимые состояния и соответствующие преамбулы [1]. Кроме того, вместо разделяющей последовательности можно использовать различающий тестовый пример [3], если таковые существуют в автомате-спецификации. Структура работы следующая. Раздел 2 содержит основные определения и обозначения, используемые в работе, а также пример автомата для иллюстрации предложенного алгоритма. В разделе 3 предложен алгоритм построения адаптивной проверяющей последовательности и доказаны соответствующие утверждения. В разделе 4 предложенный алгоритм иллюстрируется на простом примере.
2. Основные определения и обозначения
Конечным автоматом называется пятерка = (5", /, О, к8, 50), где - конечное непустое множество состояний с выделенным начальным состоянием / -входной алфавит, О - выходной алфавит, и с X х / х О х ^ - отношение переходов. При этом четверка (5, /, о, У) 6 называется переходом в автомате А из состояния 5 в У. Инициальные автоматы используются для описания реактивных систем, в которых присутствует сигнал СБРОС, переводящий систему из любого состояния в некоторое фиксированное (начальное) состояние. Предполагается, что этот сигнал реализован правильно в любой реализации, но является достаточно дорогим, чтобы использовать его в течение тестирования несколько раз (например, включение/выключение компьютера).
Автомат называется детерминированным, если для любой пары (5, /) 6 х / существует не более одной пары (о, л') е О / Л', такой, что (5, /, о, У) 6 В противном случае автомат называется недетерминированным. При этом, если для каждой пары (5, /) 6 х / существует хотя бы один переход, то автомат называется полностью определенным. Кроме того, если для любой тройки (5, /,
о) 6 х / х О существует не более одного состояния я' Е Я такого, что (5, /, о, У) 6 то автомат называется наблюдаемым.
Далее в работе для обозначения множества выходных символов о 6 О автомата в состоянии 5 6 5" под воздействием входного символа / 6 / будем использовать обозначение ои/^, /).
Пусть 5, У е 5", а = ¡1 г2... ¡к е А и (3 = о2... ок е О*. Тогда (5, а, (3, У) 6 если существует последовательность состояний 5 = 52,..., л> = 5' таких, что (л;,. /',. о,, ¿у+1) е /г& ] = 1, ..., к - 1; в этом случае а/(3 называется вход-выходной последовательностью или траекторией автомата в состоянии 5. Множество выходных последовательностей (3, таких что а/(3 е Тг5(я), обозначается оии:^. а). Множество всех вход-выходных последовательностей автомата в состоянии 5 будем обозначать Тг5(я). Если 5 - начальное состояние, то множество всех траекторий обозначается Тг8. При этом автомат называется сильно связным, если каждое состояние достижимо из любого другого состояния по некоторой траектории а/(3 е Тг8.
В нашей работе мы будем рассматривать отношения конформности между двумя автоматами, один из которых будет описывать эталонное поведение системы, т.е. является автоматом-спецификацией (обозначение: 5), а второй описывает поведение некоторой реализации системы, т.е. является автоматом-реализацией (обозначение: Р). В настоящей работе автоматы 1' и Л' являются полностью определенными автоматами, причем является наблюдаемым, а Р - детерминированным автоматом. Автомат Р называется конформным спецификации, если Р есть редукция автомата 5".
Формально полностью определенный автомат Р является редукцией полностью определенного автомата 5", если для любой входной последовательности справедливо: оШР(р0, а) с ои1,{.\и. а). Автомат Р является подавтоматом автомата 5", если ^ р0=А0 и ИРЯ:Ь8.
Пересечением автоматов = (5", I, О, я0) и Р = (Р, I, О, !гР, р0) называется максимальный связный подавтомат <2 автомата (5" х Р, I, О, /г, /?,,). в котором /, о, я'р ') 6 Ид, если и только если (5, /, о, У) 6 и (р, /, о,р') 6 1гР.
Утверждение 1 [1]. Полностью определенный детерминированный автомат Р является редукцией полностью определенного наблюдаемого автомата 5", если и только если пересечение этих автоматов есть полностью определенный автомат.
Состояния автомата называются разделимыми, если существует входная последовательность а, такая, что множества выходных последовательностей в любых двух состояниях 5 и р автомата на последовательность а не пересекаются, т.е. а) П оШР(р, а) = 0 (обозначение 5 -ра р).
Последовательность а называется разделяющей для автомата 5", если эта
последовательность является разделяющей для любых двух различных состояний автомата.
Состояние s' автомата S называется детерминировано достижимым или д-достижимым из состояния s, если существует входная последовательность а, такая что для любой последовательности (3 е outs(s, а), последовательность а/р переводит автомат из состояния s в состояние s'. Последовательность а в этом случае называется д-передаточной последовательностью из состояния s в состояние s' (обозначение: avv>).
В данной работе мы рассматриваем построение проверяющих тестов относительно модели неисправности <S, <, Л >, в которой S - полностью определенный наблюдаемый автомат-спецификация, называемый часто эталонным автоматом, < - отношение редукции, Л - область неисправности, т.е. конечное множество полностью определенных сильно связных детерминированных автоматов, которые описывают поведение систем со всеми возможными неисправностями, т.е. мы предполагаем, что поведение тестируемой реализации описывается некоторым автоматом из множества Я. Под проверяющей последовательностью относительно модели неисправности <S, <, Л > понимается входная последовательность а, такая что при адаптивной подаче последовательности на любой автомат Р 6 Я, который не является редукцией автомата S, наблюдаемая выходная реакция не содержится в множестве выходных реакций автомата S.
В настоящей работе мы полагаем, что автомат-спецификация обладает разделяющей последовательностью и сильно связным детерминированным подавтоматом с таким же числом состояний, т.е. для любой пары состояний s и s' существует с)-передаточная последовательность avv>. Эти условия гарантируют, что только автомат, изоморфный некоторому подавтомату спецификации с тем же числом состояний, может быть редукцией автомата-спецификации [2].
Утверждение 2 [2]. Полностью определенный детерминированный автомат Р является редукцией полностью определенного наблюдаемого автомата Sen состояниями, который обладает разделяющей последовательностью и сильно связным детерминированным подавтоматом с таким же числом состояний, если и только если автомат Р имеет п состояний и изоморфен подавтомату автомата S.
В качестве примера рассмотрим автомат на рис. 1.
Рис. 1 Автомат-спецификация Б.
Автомат на рис. 1 обладает разделяющей последовательностью ь'ь Реакции на эту последовательность для каждого состояния автомата приведены в таблице 1.
Табл. 1 Выходные реакции на разделяющую последовательность.
Состояние Выходные реакции на входную последовательность ь/1
1 22
2 02, 20, 10
3 12
Кроме того, автомат обладает сильно связным детерминированным подавтоматом: а12 = /> ск,31 = /, и а2з = /|.
В следующем разделе мы предлагаем метод построения адаптивной проверяющей последовательности относительно модели неисправности <S, <, Я >, в которой S - полностью определенный наблюдаемый автомат-спецификация с п состояниями, обладающий сильно связным детерминированным подавтоматом с таким же числом состояний и разделяющей последовательностью 5, < - отношение редукции, Л - множество всех полностью определенных детерминированных автоматов с числом состояний не более п.
3. Алгоритм построения адаптивной проверяющей последовательности
Вход. Автомат S = (S, /, О, hS- so) с п состояниями, разделяющая последовательность 5 для автомата S, д-передаточные последовательности avV для каждой пары состояний s и .v'. полностью определенный детерминированный автомат Р с числом состояний не более п
Выход. Вердикт pass, если P есть редукция S. или вердикт fail, если Р не есть редукция S: проверяющая последовательность ст.
Как обычно, алгоритм проверки, является ли предъявленный автомат редукцией автомата-спецификации, содержит две части. Данное разбиение изображено в виде блочной схемы на рис. 2.
Рис. 2 Алгоритм построения адаптивной проверяющей последовательности
В первом блоке алгоритма идентифицируются состояния проверяемого автомата. Если автомат-реализация Р реагирует на эту часть проверяющей последовательности ожидаемым образом, то в этом блоке посредством разделяющей последовательности устанавливается взаимно однозначное соответствие между состояниями проверяемого автомата и автомата-спецификации. Во втором блоке алгоритма устанавливается взаимно однозначное соответствие между переходами проверяемого автомата и автомата-спецификации.
3.1. Построение множества Separate
Множество Separate, формируемое в первом блоке алгоритма, содержит тройки (s, р, .v'). где s - текущее состояние автомата Р, р = outP(s, 5), т.е. выходная реакция автомата Р в состоянии s на разделяющую последовательность 5, s' - состояние, в которое автомат Р при этом перешел.
Алгоритм 1 идентификации состояний проверяемого автомата
Вход. Автомат-спецификация S, разделяющая последовательность 5 и д-передаточные последовательности проверяемый автомат Р, текущая
проверяющая последовательность ст;
Выход: Множество Separate или сообщение, что предъявленный автомат не является редукцией автомата S,
ст: = в;
Separate: = 0; 5: = s0-, flag-. = 0;
Шаг 1.
Пока flag = 0 выполнить: {
Подать на автомат Р последовательность 5; ст: = стб;
Если реакция р на 5 автомата Р не содержится в множестве реакций автомата S на последовательность 5, то выдать вердикт 'fail' и сообщение, что предъявленный автомат не является редукцией автомата S, КОНЕЦ алгоритма;
Иначе определить преемник s' состояния s по траектории 5/р;
Если в множестве Separate есть тройка (s, р, s'), то flag : = 1; /"произошло зацикливание по разделяющей последовательности;*/ Иначе занести тройку (s, р, s') в множество Separate;
s\ = s'; }
Шаг 2.
Если мощность множества Separate равна и, то КОНЕЦ алгоритма; /*установлено взаимно однозначное соответствие между состояниями автоматов PuS */
Иначе определить состояние s', для которого не проверена выходная реакция
на последовательность 5, т.е. в множестве Separate нет тройки (У, *, *); {
Подать а^у на автомат Р
ст: = ст а
}
Если реакция автомата Р не содержится в множестве реакций автомата S на последовательность ос^, то выдать вердикт 'fail' и сообщение, что предъявленный автомат не является редукцией автомата S, КОНЕЦ алгоритма; Иначе Шаг 1.
3.2. Построение множества Transition
Под множеством Transition понимается множество четверок (s, /, о, 5'), т.е. практически множество переходов в автомате-реализации Р.
Алгоритм 2 проверки всех переходов предъявленного автомата Р
Вход. Автомат-спецификация S, разделяющая последовательность 5 и текущее состояние автомата после подачи первой части проверяющей последовательности на проверяемый автомат Р, множество Separate;
Выход. Вердикт pass, если Р есть редукция S, или вердикт fail, если Р не есть редукция S; множество переходов автомата Р\
Transition'. = 0;
Пока мощность множества Transition не равна произведению п на число входных
символов выполнить: {
Если в текущем состоянии s есть переход по входному символу i, не входящий в множество Transition, то
Подать на автомат Р последовательность i 5; ст: = ст i 5;
Если реакция ор автомата Р на последовательность i 5 не содержится в множестве реакций автомата S на эту последовательность, то выдать вердикт 'fail' и сообщение, что предъявленный автомат не является редукцией автомата S, КОНЕЦ алгоритма;
Иначе по множеству Separate определить тройку (У, р, s") е Separate; Занести четверку (s, i, о, s') в множество Transition; 5: = s"-
Иначе по множеству Transition найти входную последовательность у для перехода из текущего состояния s в состояние s', в котором есть переход по входному символу г, не входящий в множество Transition; /* Последовательность существует, т.к. по свойствам автомата-спецификации S редукциями S могут быть только автоматы с тем же числом состояний*/ Подать на проверяемый автомат последовательность у; ст: = ст у; s\ = s'\
}
Выдать вердикт 'pass' и сообщение, что предъявленный автомат является редукцией автомата S, КОНЕЦ алгоритма;_
Сформулируем ряд утверждений, из которых следует, что во второй части алгоритма выдается вердикт pass, если Р есть редукция S, и вердикт fail, если Р не есть редукция S.
Во-первых, по свойствам разделяющей последовательности, справедливо следующее утверждение.
Утверждение 3. Если перед переходом ко второй части алгоритма не было выдано сообщение, что предъявленный автомат не является редукцией автомата S, то можно сделать следующие выводы о предъявленном автомате Р:
1) Автомат Р имеет в точности п состояний;
2) Множество троек Separate, в котором тройка (s, р, s') означает, что предъявленный автомат Р под действием разделяющей последовательности 5 из состояния, соответствующего состоянию s в автомате S, выдает выходную последовательность р и переходит в состояние, соответствующее в автомате S состоянию s'.
Утверждение 4. Если во второй части алгоритма мощность множества Transition не равна произведению п на число входных символов и переходы из текущего состояния по всем входным символам присутствуют в множестве Transition, то в множестве Transition существует последовательность переходов с входной последовательностью у для перехода из текущего состояния s в состояние s', в котором есть переход по входному символу /, не входящий в множество Transition.
Утверждение доказывается методом от противного. Если это не так, то построен подавтомат автомата Р с числом состояний меньше п, который есть редукция автомата S, что невозможно в силу свойств автомата S (утверждение 2).
Теорема 1. Алгоритм выдает вердикт 'pass'. если и только если предъявленный автомат является редукцией спецификации.
Доказательство. Если реакция на построенную входную последовательность автомата Р содержится в множестве реакций автомата S на эту последовательность (т.е. в результате работы алгоритма выдан вердикт 'pass'). то после выполнения первой части алгоритма установлено взаимно однозначное соответствие между состояниями автоматов Р и S. Во второй части алгоритма устанавливается такое соответствие между переходами автоматов. Таким образом, в пересечении Р и S присутствуют только пары ps состояний, такие что выходная реакция автомата в состоянии р на каждый входной символ содержится в множестве выходных реакций автомата S в состоянии s на этот входной символ. Соответственно, если в процессе тестирования не было выдано сообщения, что автомат Р не является редукцией автомата S, которое выдается только в случае, когда реакция автомата Р на некоторую входную последовательность не содержится в множестве выходных реакций автомата S на эту входную последовательность, то, согласно утверждению 1, предъявленный автомат есть редукция автомата S.
4. Иллюстрация алгоритма на примере
Рассмотрим работу алгоритма построения проверяющей последовательности на примере, приведенном на рисунке 1. Для данного автомата разделяющая последовательность 5: i2i\. В качестве реализации рассмотрим автомат на рис. 3
Рис. 3 Проверяемый автомат P, рассматриваемый как реализация автомата на рис. 1
Согласно алгоритму, в первой части алгоритма на автомат Р подаем входную последовательность 5, пока не перейдем в уже рассмотренное состояние. В данном случае получаем в ответ на /'2/1 выходную последовательность 22, что соответствует спецификации. Далее, заносим тройку (1, 22, 3) в множество Separate. При дальнейшей подаче i-j\i-j\ выясняем, что произошло зацикливание, т.к. в множестве Separate уже есть тройка (3, 12, 3). Согласно шагу 2 определяем состояние, для которого нет соответствующей строки в множестве Separate - это состояние 2. Поэтому подаем о.Ъ2=Н для перехода из состояния 3 в состояние 2 и возвращаемся на шаг 1.
Подаем i2i\ и получаем новую тройку в множество Separate: (2, 10, 1). При повторной подаче /'2/1 выясняем, что тройка (1, 22, 3) уже есть в Separate. Таким образом, на выходе первого алгоритма множество Separate имеет вид, представленный в таб. 2
Таблица 2.
S Р s'
1 22 3
2 10 1
3 12 3
Кроме того, проверяющая последовательность ст имеет вид: i2i\ hhhh '2 '2'i':'i и текущим состоянием является состояние 3.
Далее необходимо проверить множество переходов. В соответствии с алгоритмом проверки переходов определяем, есть ли в текущем состоянии 3 переход, которого нет в Transition. Такой переход есть - например, переход по входному символу i\. После подачи /1 на выходе автомата Р получаем 0, далее подаем 5 и получаем на выходе 22, что соответствует третьей строке множества Separate и означает, что после подачи /, автомат Р перешел,
соответствующее состоянию 3. По множеству Separate определяем, что после подачи 5 мы возвращаемся в состояние 3. В данном состоянии есть непроверенный по входному символу /2. После подачи этого символа, на выходе автомата Р получаем выходной символ 1, и после подачи 5 по полученной реакции 10 можно установить, что проверяемый автомат из состояния 3 под действием входного символа /г перешел в состояние, соответствующее состоянию 2 в автомате-спецификации. На данном этапе ст =
Аналогичным образом проверяются остальные
переходы автомата Р.
По завершению построения проверяющей последовательности на выходе будет получен вердикт pass, и действительно автомат на рис. 3 является редукцией автомата на рис. 1. При этом ст = + h hh
i2/2/1/1/2/1/1/2^2^1^2^1^2^1^2^2^2^1•
5. Заключение
В данной работе представлен предложенный нами алгоритм построения адаптивной проверяющей последовательности для недетерминированного автомата относительно редукции. Данный алгоритм позволяет определить, является ли предъявленный для тестирования детерминированный автомат редукцией автомата-спецификации.
Необходимо отметить, что в данной работе мы не рассматривали оптимизацию строящейся проверяющей последовательности; задачи оптимизации проверяющей последовательности требуют дальнейших исследований.
В заключение мы отмечаем, что поскольку проверяющая последовательность будет прикладываться адаптивно, вместо д-пере даточных последовательностей можно использовать определенно-достижимые состояния и соответствующие преамбулы [1]. Кроме того, вместо разделяющей последовательности можно использовать различающий тестовый пример [3], если таковой существует в автомате-спецификации. Использование таких адаптивных установочных и различающих тестовых примеров может существенно сократить длину проверяющей последовательности.
Благодарность. Работа частично поддержана проектом 2.739 госзадания МинОбрНауки РФ. В заключение хочу выразить благодарность профессору Евтушенко Н.В. за интересные дискуссии при подготовке статьи.
Список литературы
[1]. Petrenko A. Adaptive Testing of Deterministic Implementations Specified by Nondeterministic FSMs / A. Petrenko, N. Yevtushenko // ICTSS, 2011. P. 162-178.
[2]. M.B. Ветрова. Разработка алгоритмов синтеза и тестирования конечно автоматных компенсаторов. Дисс. На соискание степени канд. техн. наук, Томский госуниверситет, 2004..
[3]. Н.Г. Кушик. Методы синтеза установочных и различающих экспериментов с недетерминированными автоматами. Дисс. На соискание степени канд. физ.-мат. наук, Томский госуниверситет, 2013.
Deriving checking sequences for nondeterministic Finite State Machines with respect to the reduction relation
Anton Ermakov <[email protected]> National Research Tomsk State University, 634050, Lenina ave., 36, Tomsk, Russia
Abstract. Most FSM based methods for test derivation are developed for initialized Finite State Machines (FSM) and the latter means that a reliable reset is assumed in an implementation under test in order to glue test sequences together. If the reset is rather expensive then the number of test sequences has to be reduced and when it is reduced to a single sequence, this sequence is called a checking sequence. In this paper, a methods is proposed for deriving an adaptive checking sequence when the specification FSM is nondeterministic and the conformance relation is the reduction relation. The latter means that the behavior of a conforming implementation should be contained in the behavior of the specification. A method returns an adaptive checking sequence that detects each nonconforming implementation that has not more states than the specification FSM under the conditions that the specification has a distinguishing sequence and a deterministic strongly connected submachine. These conditions can be weakened for the case when the specification has a distinguishing test case and each state of the specification is definitely reachable from another state. The testing process is adaptive, i.e., the next input is determined based on the outputs produced for the previous inputs. Such adaptive distinguishing sequences can be shorter than preset checking sequences.
Keywords: test derivation, checking sequence, nondeterministic Finite State Machine, reduction relation
References
[1]. Petrenko A. Adaptive Testing of Deterministic Implementations Specified by Nondeterministic FSMs / A. Petrenko, N. Yevtushenko // ICTSS, 2011. P. 162-178.
[2]. M.V. Vetrova. Razrabotka algoritmov sinteza i testirovaniya konechno avtomatnih kompensatorov. Diss, na soiskanie stepeni kand. techn. nauk, Tomskiy gosuniversitet [Tomsk State University], 2004.
[3]. N.G. Kushik. Metodi sinteza ustanovochnih i razlichaushih eksperimentov s nedeterminirovannimi avtomatami. Diss, na soiskanie stepeni kand. phis.-mat. nauk, Tomskiy gosuniversitet [Tomsk State University], 2013.