1. Тестирование
телекоммуникационных протоколов
на основе моделей с конечным
числом переходов
Радиофизический факультет
Кафедра информационных технологий в исследовании дискретных структур
Зав. кафедрой Евтушенко Нина Владимировна
Томский государственный университет
Шабалдина Наталия Владимировна
2. 2
Понятие протокола
Протокол – набор правил о порядке передачи и способе
представления данных
Протокол передачи данных (Википедия)— набор
соглашений логического уровня интерфейса, который
определяет обмен данных между различными
программами. Эти соглашения задают
единообразный способ передачи сообщений и
обработки ошибок при взаимодействии программного
обеспечения разнесённой в пространстве
аппаратуры, соединённой тем или иным
интерфейсом
Протокол – алгоритм управления связью
3. 3
Понятие телекоммуникационного протокола
Телекоммуникации (греч. tele - вдаль, далеко и лат. communicatio - общение) -
это передача и прием любой информации (звука, изображения, данных,
текста) на расстояние по различным электромагнитным системам
(кабельным и оптоволоконным каналам, радиоканалам и другим проводным
и беспроводным каналам связи)
Телекоммуникационная сеть - это система технических средств, посредством
которой осуществляются телекоммуникации
К телекоммуникационным сетям относятся:
1. Компьютерные сети (для передачи данных)
2. Телефонные сети (передача голосовой информации)
3. Радиосети (передача голосовой информации - широковещательные
услуги)
4. Телевизионные сети (передача голоса и изображения -
широковещательные услуги)
Источник – Компьютерные сети и телекоммуникации – онлайн учебник (
http://www.lessons-tva.info/edu/telecom.html)
Телекоммуникационный протокол – алгоритм управления связью (набор
правил о порядке передачи и способе представления данных) в
телекоммуникационной (компьютерной) сети
5. 5
1. Разработка спецификации
Этапы разработки и тестирования протоколов
6. Другие виды тестирования…
2. Анализ корректности спецификации
3. Реализация протокола
4. Тестирование реализации на соответствие
спецификации
5. Тестирование взаимодействия
6. 6
Тестирование на соответствие
спецификации
Системы S (спецификация)
и Imp (реализация)
S: I* → O*
Imp: I* → O*
• Задача: проверить с
помощью конечного
множества входных
последовательностей, что S
и Imp имеют одинаковое
поведение на допустимых
входных данных
S
Imp
I
I
O
O
7. 7
Модели с конечным числом переходов
Конечные автоматы (детерминированные и
недетерминированные)
Расширенные автоматы
Временные автоматы
Все перечисленные модели используются для
описания поведения систем, которые под
воздействием входных символов переходят из
состояния в состояние и выдают при этом выходные
символы
Все модели инициальные, то есть предполагается,
что в исследуемой системе есть исправный
(надёжный) входной сигнал СБРОС
8. 8
Некоторые работы по конечным автоматам
Мур Э. Ф. Умозрительные эксперименты с
последовательными машинами // Автоматы. – М.: Изд-во
иностр. лит., 1956. – С. 179–210.
Гилл А. Введение в теорию конечных автоматов. – М:
Наука,1966. – 272 с.
Грунский И. С., Петренко А. Ф. Построение проверяющих
экспериментов с автоматами, описывающими протоколы //
Автоматика и Вычислительная техника. – 1988. – № 4. – С.
7–14.
Матросова А. Ю. Алгоритмические методы синтеза тестов. –
Томск: Изд-во Томского госуниверситета, 1990. – 207 с.
Бурдонов И. Б., Косачев А. С., Кулямин В. В. Использование
конечных автоматов для тестирования программ //
Программирование. – 2000. – №2. – С. 12–28.
9. 9
S – множество состояний
X – входной алфавит
Y – выходной алфавит
h – отношение переходов,
h ⊆ S × X × Y × S
s1 – начальное состояние
x1 / y2
s1
s2
x1 / y1
s3
x2 / y2x1 / y1
Конечный автомат (Finite State Machine)
S = <S, X, Y, h, s1 >
Инициальный автомат – есть начальное состояние
Связный автомат – любое состояние достижимо из
начального
10. 10
x1 / y2
s1
s2
x1 / y1
s3
x2 / y2x1 / y1
Типы конечных автоматов
Полностью определенный автомат –
из каждого состояния
по каждому входному символу
есть хотя бы один переход.
Иначе автомат частичный
Детерминированный автомат –
из каждого состояния
по каждому входному символу
не более одного перехода.
Иначе недетерминированный
11. 11
Построение проверяющих тестов путем
обхода графа переходов эталонного
автомата
V = {αi | ∀ si ∈ S} – множество
достижимости, |V| = n,
n – число состояний эталонного автомата
V
s
1
s
3
s
2
… …
- Пройти по всем переходам графа переходов автомата
- Гарантирует обнаружение выходных неисправностей
Один из вариантов построения обхода – VX
s1
si
αi
αi – кратчайшая последовательность,
по которой состояние si достижимо из
начального
12. 12
Понятие модели неисправностей
< S, ~, ℜ >
Спецификация
Область
неисправностей
Требуемое отношение соответствия
между спецификацией и реализацией
13. 13
Методы синтеза тестов относительно
модели <S,≅,ℑm(X,Y)>
V
s
1
s
3
s
2
W, Wp, UIOv, HSI, UIO, DS, H, SPY
V – множество достижимости, |V|=n, основа теста VXm-n+1
m
X Y
n – число состояний эталонного автомата, m – число состояний реализации
Далее прицепляются различающие последовательности
Разница методов – в построении различающих последовательностей
14. 14
Некоторые работы по методам синтеза тестов
для конечных автоматов
Василевский М.П. О распознавании неисправностей автоматов //
Кибернетика.- 1973.- №4.- С.98 108‑
Евтушенко Н.В., Петренко А.Ф. Метод построения проверяющего
эксперимента для произвольного детерминированного автомата //
Автоматика и Вычислительная техника.-1990.-№5.-C.73-76
Куфарева И.Б., Дорофеева М.Ю. Минимизация проверяющих тестов
для конечных автоматов // Вестник ТГУ. Приложение. № 1(II). - 2002.
-С. 357-362
A. Simao, A. Petrenko, N. Yevtushenko. Generating Reduced Tests for
FSMs with Extra States. TestCom/FATES 2009, p. 129-145
15. 15
S = (S, X, Y, V, T)
t = (s, x, P, op, up, y, s’)
P: Dinp × Dv → { Истина, Ложь }
op: Dinp × Dv → Dout
up: Dinp × Dv → Dv
Dinp – множество значений входных параметров входного символа x
Dout – множество значений выходных параметров выходного символа y
Dv – множество значений контекстных переменных
Задача достижимости конфигураций в общем случае решается
только полным моделированием расширенного автомата
Конфигурация: пара (s, v)
Расширенный автомат
(Extended Finite State Machine)
16. 16
A. Cavalli, D. Lee, C. Rinderknecht, F. Zaidi. Hit-or-Jump: An algorithm for
embedded testing with applications to IN services // Proceedings of
Joint Inter., Conf. FORTE/PSTV99. –1999. – P. 41-58
A. Petrenko, S. Boroday, R. Groz. Confirming configurations in EFSM testing
// IEEE TSE. – 2004. – Vol. 30(1). – P. 29-42
K. El-Fakih, S. Prokopenko, N. Yevtushenko, G. Bochmann. Fault diagnosis
in extended Finite State Machine // Lecture Notes in Computer
Science. – 2003. – P. 197–210
K. El-Fakih, A. Kolomeez, S. Prokopenko, N. Yevtushenko. Extended Finite
State Machine Based Test Derivation Driven by User Defined Faults //
ICST. – 2008. – P. 308-317
Некоторые работы по расширенным
автоматам
17. 17
Входо-выходные полуавтоматы
(Input/Output automata)
- Более общая модель по сравнению с автоматом
- За входным символом не обязательно следует выходной
- Методы синтеза полных проверяющих тестов для входо-
выходных полуавтоматов относительно отношения ioco
доставляют бесконечные тесты
Q. M. Tan, A. Petrenko. Test Generation for Specifications Modeled by
Input/Output Automata // The Proceedings of the IFIP 11th International
Workshop on Testing of Communicating Systems, IWTCS'98, Russia. –
1998
Громов М.Л. Метод построения полного проверяющего теста для входо-
выходных полуавтоматов // Вестник Томского государственного
университета, сер. управление, вычислительная техника и
информатика.– Томск, ТГУ, 2008.– № 3(4). – С. 85-98
18. 18
Схема построения и подачи тестов для
протокольных реализаций
Tester
(подает на
реализацию
команды,
сравнивает
ответы с
ожидаемыми)
RFC-
спецификация
протокола
Расширенный
автомат
Конечный автомат,
полученный путем
моделирования
Тест,
построенный
обходом
графа
переходов
Тест в
«правильном»
формате
19. 19
Протокол POP3
POP3 - почтовый протокол, с помощью которого пользователи
могут забирать свою почту с почтовых серверов, стандартный
порт POP3 сервера – 110
Начало взаимодействия клиента и сервера символизирует
приветствие, которое сервер отсылает клиенту при успешном
установлении соединения
POP3-
клиент
POP3-
сервер
Команды клиента
Ответы сервера
Ответ сервера всегда начинается с одного из двух идентификаторов
"+OK" означает успешное выполнение команды клиента
"-ERR" означает, что команда не была выполнена
20. 20
Протокол POP3. Состояние AUTHORIZATION
USER <имя пользователя> (обязательный параметр) - с помощью
этой команды клиент передает серверу имя пользователя
Если сервер ответил "+OK" на команду USER, то клиент в качестве
следующей команды отсылает PASS
PASS <пароль> (обязательный параметр) - с помощью этой
команды клиент передает серверу пароль пользователя
Если же сервер ответил "-ERR" на команду USER, то клиент либо
может отправить команду USER повторно, либо отправить
команду QUIT для того, чтобы закрыть соединение
Когда сервер получает команду PASS, он по аргументам этих двух
команд определяет, должен ли быть предоставлен клиенту
доступ к одному из почтовых ящиков
21. 21
Протокол POP3. Состояние TRANSACTION
STAT (нет параметров) - с помощью этой команды клиент
запрашивает у сервера общую информацию о почтовом ящике
пользователя (количество писем, суммарный размер)
LIST [<номер сообщения>] (опциональный параметр) - с
помощью этой команды клиент запрашивает у сервера более
подробную информацию о почтовом ящике пользователя
(размер каждого письма), а при задании параметра -
непосредственно информацию об указанном письме
RETR <номер сообщения> (обязательный параметр) - с
помощью этой команды клиент запрашивает у сервера письмо с
указанным номером
22. 22
Протокол POP3. Состояния TRANSACTION и
UPDATE
DELE <номер сообщения> (обязательный параметр) - с
помощью этой команды клиент информирует сервер о том, что
следует удалить письмо с указанным номером
RSET (нет параметров) - с помощью этой команды клиент
запрашивает восстановление всех писем, отмеченных как
удаленные
Письмо, отмеченное как удаленное, будет удалено в состоянии
UPDATE (наступает после того, как сервер получит команду
QUIT) - в этом состоянии сервер освобождает все ресурсы,
удаляет письма, отмеченные как удаленные, посылает POP3-
клиенту положительный ответ на команду QUIT
Затем TCP-соединение будет закрыто
23. 23
Конечный автомат, описывающий работу
почтового сервера (POP3)
S0
Aut1
Trans Aut2
Connect / +OK
QUIT / +OK
QUIT / +OK
QUIT / +OK
USER / +OK PASS / -ERR
PASS / +OK ANY / -ERR
ANY / -ERR
{LIST | RETR | STAT | DELE} / +OK
ANY / -ERR
ANY – любой другой входной символ кроме перечисленных из
этого же состояния
25. 25
По расширенному автомату в общем случае нельзя
построить обход графа переходов (не можем
выполнить переход пока контекстная переменная не
приняла нужное значение, т.е. пока не стал
выполним предикат)
При построении тестов для протоколов применялся
следующий подход:
1) По расширенному автомату путем моделирования
строится эквивалентный конечный автомат
2) Строится обход графа переходов полученного
конечного автомата
Построение проверяющего теста для протокола,
описанного расширенным автоматом
26. 26
Для подачи построенных тестов на программную реализацию
протокола можно использовать программу Tester,
разработанную на кафедре ИТИДиС ТГУ
- 2003 г., проект ИДО ТГУ «Лабораторные работы по
курсу Интернет-программирование», руководитель Н.В.
Евтушенко, исполнители Шабалдин А.В., Шабалдина
Н.В., Коломеец А.В.
В первой версии поддерживалось только активное
тестирование студенческих реализаций протоколов
(тестировалась серверная часть протокола)
- На сегодняшний день добавлено пассивное
тестирование (появилась возможность тестировать
клиентскую часть протокола) и проверка
взаимодействия (разработчик Шабалдин А.В.)
Тестирование программной реализации
протокола
27. 27
Тестирование программных
реализаций сетевых протоколов
Архитектура тестера
Студенческая
реализация
компоненты
База данных с
тестами
Тестер-
сервер
Тестер-
клиент
Интерфейс для
пополнения
базы тестов
28. 28
Схема активного тестирования серверной
компоненты протокола
Tester
(подает
команды,
сравнивает
ответы с
ожидаемыми)
Серверная
реализация
Команды клиента
Ответы сервера
При активном тестировании обычно система выключается
из обычного функционирования на время тестирования
29. 29
Журнал активного тестирования ошибочной
серверной реализации протокола
[17:58:59] *** Test sequence begins 1 : Проверка правильности
аутентификации последнего пользователя
[17:58:59] Request: USER user3rn
Expected response: ^+OK(| .*)rn
[17:59:05] Responce: +OK enter password for user user3rn
Correct!
[17:59:05] Request: PASS testrn
Expected response: ^+OK(| .*)rn
[17:59:11] Responce: -ERR user or password incorrectrn
Wrong!
user1:guest
user2:111
user3:test
Содержимое файла с паролями
30. 30
Пассивное тестирование реализации
клиентской части протокола
Tester
(наблюдает
поведение)
Серверная
реализация
(исправная)
Клиентская
реализация
Ответы сервера
Команды клиента
При пассивном тестировании обычно система работает в
нормальном режиме, есть возможность только наблюдать
ее работу
31. 31
Журнал пассивного тестирования
[18:20:37] OnStart(): testing process started
[18:20:37] *** Waiting for client connection 20 sec.
[18:20:43] *** Client connected to port 2525.
[18:20:58] Response: USER tiggerrn Request:
+OK Hello, tigger. Please enter your passwordrn
[18:21:14] Response: PASS thecatrn Request:
+OK Come in, tigger.rn
[18:21:30] Response: statrn Request: +OK 3 57rn
[18:21:45] Response: listrn Request: +OK 1 18rn2 33rn3 6rn
[18:22:01] Response: retr 1rn Request: +OK
Here comes the messagernmessage 1rnmess 12rn.rn
[18:22:17] Response: retr 4rn Request: -ERR No message
with #4rn
[18:22:32] Response: quitrn Request: +OK Bye-bye.rn
[18:22:32] *** Waiting for client connection 20 sec.
[18:22:53] test_client(): timeout waiting for client
[18:23:13] OnStart(): testing process stopped
34. 34
Проект ФЦП (2009-2010 гг)
НИР «Проведение прикладных и проблемно-
ориентированных поисковых исследований в области
информационно-телекоммуникационных систем с участием
научных организаций Франции»
Совместно с TELECOM&Management Южный Париж, г. Еври,
Франция
Обнаружены ошибки в программных реализациях
POP3 и IRC протоколов
35. 35
Post Office Protocol v.3
По расширенному автомату был промоделирован конечный автомат и
построен тест
Количество тестовых последовательностей для POP3-сервера – 73,
средняя длина тестовой последовательности – 10,
максимальное время тестирования 1723 секунд
Тест для POP3-протокола обнаружил ошибку в
реализации tpop3d-1.5.5
Когда отправляются две подряд команды DELE применительно к одному и
тому же сообщению, в обоих случаях сервер возвращает +OK, хотя во
втором случае должно быть -ERR
(RFC1939, chapter 5, "DELE msg" description)
Тестом, построенным по конечному автомату со слайда 24, такая ошибка
не может быть обнаружена, т.к. в этом автомате вообще нет параметров, в
том числе при команде DELE
36. 36
Internet Relay Chat Protocol
Тестировалась программная реализация IRC протокола ngIRCd ver. 16
Обнаруженные ошибки:
1.Неправильный код ответа на команду NICK с пустым параметром (т.е. без
указанного псевдонима)
Согласно спецификации [RFC2812, section 3.1.2 (раздел 3.1.2)], ответом на
NICK без параметра должно быть сообщение с кодом 431
(ERR_NONICKNAMEGIVEN), сервер же возвращает код ответа 461
(ERR_NEEDMOREPARAMS)
2. Неправильная обработка сервером попытки использования уже занятого
псевдонима
В том случае, когда псевдоним, который передается в параметре команды
NICK, уже занят, сервер должен вернуть ответ с кодом 433
(ERR_NICKNAMEINUSE). Тестируемая реализация в ответ на попытку
повторной регистрации уже используемого псевдонима вернула пустое
сообщение.
3. Неправильная обработка команды MODE с отсутствующим псевдонимом, но в
которой присутствует второй параметр (+i), задающий режим работы
Поэтому в данной работе была выбрана более компактная модель представления – расширенный автомат. В отличие от конечного автомата в расширенный автомат добавлены предикаты, входные и выходные параметры, а так же контекстные переменные, которые играют роль глобальных переменных в описании протокола. Расширенный автомат является более компактным. Однако в отличие от конечных автоматов для расширенных автоматов неизвестны необходимые и достаточные условия эквивалентности двух расширенных автоматов, т.е. неизвестны необходимые и достаточные условия того, что два автомата (спецификация и реализация) имеют одинаковое поведение.
***ТОЖЕ НУЖЕН РИСУНОК***
Кроме того, здесь нужен краткий обзор, (можно на одном слайде), кто и как строил тесты для расширенных автоматов.