ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
2009 Прикладная теория автоматов №3(5)
ПРИКЛАДНАЯ ТЕОРИЯ АВТОМАТОВ
УДК 519.713
К ПОСТРОЕНИЮ ПРОВЕРЯЮЩИХ ТЕСТОВ ОТНОСИТЕЛЬНО НЕРАЗДЕЛИМОСТИ ДЛЯ НЕДЕТЕРМИНИРОВАННЫХ АВТОМАТОВ1
Е. А. Акеньшина, Н. В. Шабалдина Томский государственный университет, г. Томск, Россия E-mail: [email protected], [email protected]
Предлагается способ улучшения метода построения тестов для недетерминированных автоматов относительно неразделимости. Показывается, что тест, построенный согласно модифицированному методу, будет по-прежнему полным, но при этом менее избыточным.
Ключевые слова: недетерминированный автомат, отношение неразделимости, полный проверяющий тест.
Введение
Поведение многих дискретных систем можно описать моделью с конечным числом переходов, например моделью конечного автомата. Для детерминированных автоматов методы построения проверяющих тестов достаточно хорошо развиты. Для недетерминированных автоматов, в которых одной входной последовательности может сопоставляться несколько выходных последовательностей, методы построения тестов активно развиваются, но в основном при тестировании используется предположение «о всех погодных условиях», т. е. предполагается, что есть возможность подавать входную последовательность, пока не пронаблюдаем все выходные реакции на нее. Такое предположение перестает быть реалистичным, если при тестировании нет возможности полностью контролировать проверяемый автомат, что имеет место, например, при удаленном тестировании реализаций телекоммуникационных протоколов. В данной работе предлагается модификация метода построения тестов для недетерминированных автоматов относительно неразделимости для модели «черного ящика», описанного в [1], в которой не используется ограничение «все погодные условия».
1. Основные определения и обозначения
Недетерминированным автоматом называется пятерка A = (S, I, O, h, si), где S — множество состояний с выделенным начальным состоянием s1; I и O — соответственно входной и выходной алфавиты; h С S х I х S х O — отношение переходов - выходов. Обозначим out(s,a) = {в : 3 s' £ S[(s,a,s',P) £ h], т. е. out(s,a) есть множество выходных реакций автомата в состоянии s на входную последовательность а.
Состояние s' называется i-преемником состояния s, если существует такой выходной символ o £ O, что четверка (s,i,s',o) содержится в h. Множество состояний
1 Работа выполнена при поддержке ФЦП «Исследования и разработки по приоритетным направлениям развития научно-технологического комплекса России на 2007-2012 годы», ГК №02.514.12.4002.
M' С S называется i-преемником множества состояний M Ç S, если M' есть множество всех i-преемников всех состояний множества M.
При тестировании проверяются различные отношения соответствия между эталонным и проверяемым автоматами.
Пусть A и B — полностью определенные автоматы. Состояние t автомата B называется редукцией состояния s автомата A (обозначение: t ^ s), если Va G I * [out(t, a) Ç out(s,a)]. Если ti ^ Si, то автомат B называется редукцией автомата A.
Состояние s автомата A и состояние t автомата B неразделимы (обозначение: s ~ t), если Va G I *[out(s, a) П out(t, a) = 0]. Если 3a G I * [out(s, a) П out(t, a) = 0], то состояния s и t разделимы по a (обозначение: s фа t), или просто разделимы (обозначение: s ф t). Автоматы A и B неразделимы, если s1 ~ t1. Если s1 фа t1, то автоматы A и B разделимы по a (обозначение: A фа B), или просто разделимы (обозначение: A ф B); последовательность a называется разделяющей последовательностью для автоматов A и B. Разделяющая последовательность a G I * называется кратчайшей, если любая другая входная последовательность, разделяющая автоматы A и B, не короче a.
2. Построение проверяющих тестов относительно неразделимости
В работе [2] был предложен алгоритм построения кратчайшей разделяющей последовательности для автоматов A и B и показано, что если данные автоматы имеют соответственно не более n и m состояний, то длина кратчайшей разделяющей последовательности будет не более чем 2nm— 1, и данная экспоненциальная оценка является достижимой.
Для построения качественных тестов необходима не только формальная модель описания эталонной и проверяемой систем, но и формальное задание модели неисправности. В работе [1] был предложен метод построения полного проверяющего теста относительно неразделимости для модели «черного ящика». Этот метод позволяет строить тесты относительно модели неисправности (A, ф,Rm(A)), где область неисправности Rm(A) есть множество всех полностью определенных автоматов с теми же входным и выходным алфавитами, что и у A, и числом состояний не более m, разделимых с эталоном или являющихся редукциями эталона, где m — целое положительное число. Отношение конформности ф предполагает, что полный проверяющий тест обнаружит всякий автомат из области неисправности Rm(A), разделимый с эталоном.
В основу рассматриваемого метода положен метод построения разделяющей последовательности для двух автоматов, и при формулировке условия усечения дерева использовалась экспоненциальная оценка длины разделяющей последовательности. Алгоритм 1. Построение полного проверяющего теста относительно модели неисправности (A, ф, Rm(A)).
Вход: Полностью определенный автомат A и верхняя граница m числа состояний автоматов из области неисправности Rm(A).
Выход: Полный проверяющий тест TS относительно модели неисправности
(A, ф^т^)).
Ш!аг 1. Построим усеченное дерево преемников автомата спецификации A. Корнем дерева на нулевом уровне является начальное состояние s1 автомата A; вершины дерева помечены подмножествами состояний автомата A. Пусть уже построены j уровней дерева, j ^ 0. Для заданной нетерминальной вершины j-го уровня, помеченной подмножеством состояний K, и для заданного входного символа i в дереве есть ребра, помеченные символом i, в вершину, помеченную i-преемниками подмножества K.
Текущая вершина Current на k-м уровне, k > 0, помеченная подмножеством K состояний из множества S, объявляется листом дерева, если путь из корня в эту вершину содержит 2|K|^m вершин, помеченных подмножествами множества K, и начальное состояние si не содержится в K. Если начальное состояние принадлежит K, то вершина Current объявляется листом, если путь из корня в эту вершину покрывает (2|K^m-i + 1) вершин, помеченных подмножествами множества K.
Ш!аг 2. Включаем в TS каждую входную последовательность, которая помечает путь из корня к листу в усеченном дереве.
В качестве примера рассмотрим спецификацию A, представленную на рис. 1, и построим полный проверяющий тест относительно модели неисправности (A, ~,R2(A)).
A a b
x a/0,1,2,3 a/1, 2
У b/1, 2 a/0 b/3
Рис. 1. Автомат А
Полученное по данному алгоритму усеченное дерево преемников представлено на рис. 2. Суммарная длина полного проверяющего теста составляет 277 символов.
Рис. 2. Усеченное дерево преемников, построенное по алгоритму 1
3. Модификация метода построения проверяющих тестов относительно неразделимости
Алгоритм 1 не доставляет кратчайшего теста. Для иллюстрации этого факта рассмотрим тестовую последовательность из предыдущего примера, которой
в усеченном дереве преемников (рис. 2) соответствует путь ах ау Ьу {а, Ь}у {а, Ь}у {а, Ь}у {а,Ь}у {а^}у {а^}. Прямым перебором можно убедиться, что если автомат-реализация имеет состояния 1 и 2, то соответствующий путь в усеченном дереве TreeAnB, построенном по пересечению эталонного автомата и реализации, будет уже усечен по-
сле {a1}x{a2}y{b1,b2}y{b1}y{b2}y{a,b}, так как для подмножества a были перебраны все варианты и из последующих подмножеств его можно исключить. Таким образом, при уточнении условий усечения дерева данную тестовую последовательность можно сократить на три символа.
Сократить тестовую последовательность можно также и в более общем случае, когда на рассматриваемом пути дерева перебраны все возможные варианты для состояний некоторого множества P, являющегося подмножеством множества K, или для нескольких подмножеств Pi множества K, в том числе и в случае, когда эти подмножества пересекаются.
Таким образом, можно модифицировать метод построения полного проверяющего теста относительно модели неисправности (A, ~,Rm(A)), уточнив условия усечения дерева преемников.
Алгоритм 2. Построение полного проверяющего теста относительно модели неисправности (A, Rm(A)).
Вход: Полностью определенный автомат A и верхняя граница m числа состояний автоматов из области неисправности Rm(A).
Выход: Полный проверяющий тест TS относительно модели неисправности
(A, ~,Rm(A)).
Ш!аг 1. Построим усеченное дерево преемников автомата спецификации A. Корнем дерева на нулевом уровне является начальное состояние s1 автомата A; вершины дерева помечены подмножествами состояний автомата A. Пусть уже построены j уровней дерева, j ^ 0. Для заданной нетерминальной вершины j-го уровня, помеченной подмножеством состояний K, и для заданного входного символа i в дереве есть ребра, помеченные символом i, в вершину, помеченную i-преемниками подмножества K. Текущая вершина Current на k-м уровне, к > 0, помеченная подмножеством K состояний из множества S, объявляется листом дерева, если выполняется любое из перечисленных ниже условий усечения, т. е. если путь из корня в вершину Current содержит:
1) 2|K|^m вершин, помеченных подмножествами множества K, если s1 Е K;
2) 2|K|^m-i + 1 вершин, помеченных подмножествами множества K, если s1 Е K;
3) 2(|K|-|P|)^m + n вершин, помеченных подмножествами множества K, если s1 Е K или s1 Е K и s1 Е P;
4) 2(|K|-|P|)^m-1 +n+1 вершин, помеченных подмножествами множества K, если s1 Е K и s1 Е P.
Здесь P — это такое подмножество состояний из множества K, что до некоторого /-го уровня (/ < к) перебраны все возможные подмножества P, а n — это количество вершин на данном пути, помеченных подмножествами K, содержащими подмножества P, которые находятся на уровнях не ниже /-го уровня дерева (если P = 0, то n = 0). Множество P строится итеративно:
1) P = 0;
2) P = P U Pj для каждого подмножества Pj множества K, такого, что Pj П P = Q и путь из корня в вершину Current содержит (2(|Pj|-|Q|)^m — 1) вершин, помеченных подмножествами Pj, если s1 Е Pj или s1 Е Q (для Q = 0), либо (2(|Pj|-|Q|)^m-1) вершин в случае s1 Е Pj.
Шаг 2. Включаем в TS каждую входную последовательность, которая помечает путь из корня к листу в усеченном дереве.
Теорема 1. Для заданного эталонного автомата A и целого числа m алгоритм 2 доставляет полный проверяющий тест относительно модели неисправности
(A, ~,Rm(A)).
Доказательство. Рассмотрим самый общий случай — подмножество K состояний из множества S и начальное состояние s1 Е K. Согласно алгоритму 1, который доставляет полный проверяющий тест относительно модели неисправности (A, ~,Rm(A)), вершина усеченного дерева преемников Tree а, помеченная подмножеством K, объявляется листом дерева, если путь из корня в эту вершину содержит 2|K|^m вершин, помеченных подмножествами множества K. Это соответствует перебору всех возможных подмножеств K' в усеченном дереве преемников TreeAnB, построенному по пересечению эталонного автомата A и некоторой реализации B, где K' — это подмножество состояний пересечения A П B, таких, что первый символ каждой пары из K' содержится в K.
Если вершина, помеченная подмножеством K, не будет объявлена листом согласно условию 1 усечения дерева преемников, то, возможно, для данной вершины выполняется условие 3, т. е. существует такое подмножество состояний P из множества K, что до некоторого /-го уровня дерева на пути из корня в вершину Current перебраны все возможные подмножества P. Множество P итеративно объединяется с каждым подмножеством Pj множества K, таким, что Pj П P = Q и путь из корня в вершину Current содержит (2(|Pj|-|Q|)^m — 1) вершин, помеченных подмножествами Pj. Добавление каждого такого Pj в множество P справедливо, так как если путь содержит указанное количество повторов, то тем самым перебраны все возможные варианты подмножеств Pj.
Для построенного таким образом P (если P = 0) на соответствующем пути в дереве TreeAnB будут перебраны все возможные подмножества P' (P' — это подмножество состояний A П B, таких, что первый символ каждой пары из P' содержится в P). Значит, далее на данном пути в дереве TreeAnB из рассмотрения можно исключить вершины, помеченные подмножествами K', которые содержат подмножества P'; поэтому рассматриваемых вершин, помеченных подмножествами K, не содержащих подмножеств P, будет 2(|K|-|P|)то. Но также необходимо учесть все n вершин, помеченных подмножествами K, содержащими подмножества P, которые встретились на рассматриваемом пути в дереве Tree а выше, чем /-й уровень, так как из данных вершин подмножества P исключать не можем. Следовательно, количество вершин, помеченных подмножествами K, для усечения дерева в таком случае составляет 2(|K|-|P|)^m + n вершин.
Далее рассмотрим случай, когда s1 Е K. По алгоритму 1 вершина, помеченная подмножеством K, объявляется листом, если путь из корня в данную вершину содержит (2|K|-m-1 + 1) вершин, помеченных подмножествами множества K, что соответствует условию усечения 2 алгоритма 2. Если вершина, помеченная подмножеством K, не будет объявлена листом согласно данному условию, то для случая s1 Е K и s1 Е P может иметь место выполнение условия усечения 4. То есть если на данном пути для каждого Pj С P встретилось, как и в предыдущем случае, необходимое число вершин, помеченных подмножествами Pj, то листовой будет являться вершина, путь из корня в которую содержит 2(|K|-|P|)то-1 + n +1 вершин, помеченных подмножествами K.
Если s1 Е K и s1 Е P, т. е. s1 принадлежит одному из подмножеств Pj С P, то необходимо, чтобы на рассматриваемом пути дерева встретилось (2(|Pj|-|Q|)TO-1) вершин, помеченных подмножествами Pj. Для остальных подмножеств Pj из P требуется
встретить такое же количество вершин, как и в первом случае. Тогда при подсчете вершин, помеченных подмножествами К, можно исключить из рассмотрения подмножества Р начиная с /-го уровня, и вершина, помеченная подмножеством К, объявляется листом, если путь из корня в данную вершину содержит 2(|К|-|Р+ п вершин, помеченных подмножествами множества К (условие усечения 3). ■
На рис. 3 представлено усеченное дерево преемников для спецификации, изображенной на рис. 1, построенное согласно алгоритму 2. Суммарная длина полного проверяющего теста в этом случае составляет 194 символа, что на 83 символа меньше, чем для алгоритма 1.
Рис. 3. Усеченное дерево преемников, построенное по алгоритму 2
Заключение
В данной работе предложена модификация метода построения тестов для недетерминированных автоматов относительно неразделимости, описанного в работе [1]. Эта модификация, в отличие от других методов синтеза тестов для недетерминированных автоматов, не ориентирована на выполнение предположения «о всех погодных условиях». Показано, что тест, построенный согласно модифицированному методу, будет по-прежнему полным, но при этом в большинстве случаев менее избыточным.
ЛИТЕРАТУРА
1. Shabaldina N., El-Fakih K. and Yevtushenko N. Testing Nondeterministic Finite State Machines With Respect to the Separability Relation // Lect. Not. Comp. Sci. 2007. V. 4581. P. 305-318.
2. Евтушенко Н. В., Спицына Н. В. О верхней оценке длины разделяющей последовательности // Вестник Томского госуниверситета. Приложение. Сер. Математика. Кибернетика. Информатика. 2006. №18. C. 54-58.