Natalia Shabaldina. CSEDays

Preview:

DESCRIPTION

 

Citation preview

Тестирование телекоммуникационных протоколов

на основе моделей с конечным числом переходов

Радиофизический факультетКафедра информационных технологий в исследовании дискретных структур

Зав. кафедрой Евтушенко Нина Владимировна

Томский государственный университет

Шабалдина Наталия Владимировна

2

Понятие протокола

Протокол – набор правил о порядке передачи и способе представления данных

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

Протокол – алгоритм управления связью

3

Понятие телекоммуникационного протоколаТелекоммуникации (греч. tele - вдаль, далеко и лат. communicatio - общение) -

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

Телекоммуникационная сеть - это система технических средств, посредством которой осуществляются телекоммуникации

К телекоммуникационным сетям относятся: 1. Компьютерные сети (для передачи данных)2. Телефонные сети (передача голосовой информации)3. Радиосети (передача голосовой информации  - широковещательные услуги)4. Телевизионные сети (передача голоса и изображения - широковещательные услуги)

Источник – Компьютерные сети и телекоммуникации – онлайн учебник (http://www.lessons-tva.info/edu/telecom.html)

Телекоммуникационный протокол – алгоритм управления связью (набор правил о порядке передачи и способе представления данных) в телекоммуникационной (компьютерной) сети

4

Фрагмент из RFC-спецификации протокола POP3

5

1. Разработка спецификации

Этапы разработки и тестирования протоколов

6. Другие виды тестирования…

2. Анализ корректности спецификации

3. Реализация протокола

4. Тестирование реализации на соответствие спецификации

5. Тестирование взаимодействия

6

Тестирование на соответствие спецификации

Системы S (спецификация)

и Imp (реализация)

S: I* O*

Imp: I* O*

• Задача: проверить с помощью конечного множества входных последовательностей, что S и Imp имеют одинаковое поведение на допустимых входных данных

S

Imp

I

I

O

O

7

Модели с конечным числом переходов Конечные автоматы (детерминированные и

недетерминированные) Расширенные автоматы Временные автоматы

Все перечисленные модели используются для описания поведения систем, которые под воздействием входных символов переходят из состояния в состояние и выдают при этом выходные символы

Все модели инициальные, то есть предполагается, что в исследуемой системе есть исправный (надёжный) входной сигнал СБРОС

8

Некоторые работы по конечным автоматамМур Э. Ф. Умозрительные эксперименты с

последовательными машинами // Автоматы. – М.: Изд-во иностр. лит., 1956. – С. 179–210.

Гилл А. Введение в теорию конечных автоматов. – М: Наука,1966. – 272 с.

Грунский И. С., Петренко А. Ф. Построение проверяющих экспериментов с автоматами, описывающими протоколы // Автоматика и Вычислительная техника. – 1988. – № 4. – С. 7–14.

 Матросова А. Ю. Алгоритмические методы синтеза тестов. – Томск: Изд-во Томского госуниверситета, 1990. – 207 с.

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

9

S – множество состоянийX – входной алфавитY – выходной алфавитh – отношение переходов,

h S X Y Ss1 – начальное состояние

x1 / y2

s1s2

x1 / y1

s3

x2 / y2x1 / y1

Конечный автомат (Finite State Machine)

S = <S, X, Y, h, s1 >

Инициальный автомат – есть начальное состояние

Связный автомат – любое состояние достижимо из начального

10

x1 / y2

s1s2

x1 / y1

s3

x2 / y2x1 / y1

Типы конечных автоматов

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

Детерминированный автомат – из каждого состояния по каждому входному символу не более одного перехода. Иначе недетерминированный

11

Построение проверяющих тестов путем обхода графа переходов эталонного

автомата

V = {i | si S} – множество

достижимости, |V| = n,

n – число состояний эталонного автомата

V

s

1

s

3

s

2

… …

- Пройти по всем переходам графа переходов автомата

- Гарантирует обнаружение выходных неисправностей

Один из вариантов построения обхода – VX

s1 si

ii – кратчайшая последовательность, по которой состояние si достижимо из начального

12

Понятие модели неисправностей

< S, ~, >

СпецификацияОбласть неисправностей

Требуемое отношение соответствиямежду спецификацией и реализацией

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

mX Y

n – число состояний эталонного автомата, m – число состояний реализации

Далее прицепляются различающие последовательностиРазница методов – в построении различающих последовательностей

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

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

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

Входо-выходные полуавтоматы(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

Схема построения и подачи тестов для протокольных реализаций

Tester (подает на

реализацию команды,

сравнивает ответы с

ожидаемыми)

RFC-спецификация

протокола

Расширенный автомат

Конечный автомат,полученный путем

моделирования

Тест, построенный

обходом графа

переходов

Тест в «правильном»

формате

19

Протокол POP3

POP3 - почтовый протокол, с помощью которого пользователи могут забирать свою почту с почтовых серверов, стандартный порт POP3 сервера – 110

Начало взаимодействия клиента и сервера символизирует приветствие, которое сервер отсылает клиенту при успешном установлении соединения

POP3-клиент

POP3-сервер

Команды клиента

Ответы сервера

Ответ сервера всегда начинается с одного из двух идентификаторов "+OK" означает успешное выполнение команды клиента "-ERR" означает, что команда не была выполнена

20

Протокол POP3. Состояние AUTHORIZATION

USER <имя пользователя> (обязательный параметр) - с помощью этой команды клиент передает серверу имя пользователя

Если сервер ответил "+OK" на команду USER, то клиент в качестве следующей команды отсылает PASS

PASS <пароль> (обязательный параметр) - с помощью этой команды клиент передает серверу пароль пользователя

Если же сервер ответил "-ERR" на команду USER, то клиент либо может отправить команду USER повторно, либо отправить команду QUIT для того, чтобы закрыть соединение

Когда сервер получает команду PASS, он по аргументам этих двух

команд определяет, должен ли быть предоставлен клиенту доступ к одному из почтовых ящиков

21

Протокол POP3. Состояние TRANSACTION

STAT (нет параметров) - с помощью этой команды клиент запрашивает у сервера общую информацию о почтовом ящике пользователя (количество писем, суммарный размер)

LIST [<номер сообщения>] (опциональный параметр) - с помощью этой команды клиент запрашивает у сервера более подробную информацию о почтовом ящике пользователя (размер каждого письма), а при задании параметра - непосредственно информацию об указанном письме

RETR <номер сообщения> (обязательный параметр) - с помощью этой команды клиент запрашивает у сервера письмо с указанным номером

22

Протокол POP3. Состояния TRANSACTION и UPDATE

DELE <номер сообщения> (обязательный параметр) - с помощью этой команды клиент информирует сервер о том, что следует удалить письмо с указанным номером

RSET (нет параметров) - с помощью этой команды клиент запрашивает восстановление всех писем, отмеченных как удаленные

Письмо, отмеченное как удаленное, будет удалено в состоянии UPDATE (наступает после того, как сервер получит команду QUIT) - в этом состоянии сервер освобождает все ресурсы, удаляет письма, отмеченные как удаленные, посылает POP3-клиенту положительный ответ на команду QUIT

Затем TCP-соединение будет закрыто

23

Конечный автомат, описывающий работу почтового сервера (POP3)

S0Aut1

Trans Aut2

Connect / +OK

QUIT / +OK

QUIT / +OK

QUIT / +OK

USER / +OK PASS / -ERR

PASS / +OK ANY / -ERR

ANY / -ERR

{LIST | RETR | STAT | DELE} / +OKANY / -ERR

ANY – любой другой входной символ кроме перечисленных из этого же состояния

24

Расширенный автомат, описывающий работу почтового сервера (POP3)

25

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

При построении тестов для протоколов применялся следующий подход:

1) По расширенному автомату путем моделирования строится эквивалентный конечный автомат

2) Строится обход графа переходов полученного конечного автомата

Построение проверяющего теста для протокола, описанного расширенным автоматом

26

Для подачи построенных тестов на программную реализацию протокола можно использовать программу Tester, разработанную на кафедре ИТИДиС ТГУ

- 2003 г., проект ИДО ТГУ «Лабораторные работы по курсу Интернет-программирование», руководитель Н.В. Евтушенко, исполнители Шабалдин А.В., Шабалдина Н.В., Коломеец А.В. В первой версии поддерживалось только активное тестирование студенческих реализаций протоколов (тестировалась серверная часть протокола)

- На сегодняшний день добавлено пассивное тестирование (появилась возможность тестировать клиентскую часть протокола) и проверка взаимодействия (разработчик Шабалдин А.В.)

Тестирование программной реализации протокола

27

Тестирование программных реализаций сетевых протоколов

Архитектура тестера

Студенческая реализация

компоненты

База данных с тестами

Тестер-сервер

Тестер-клиент

Интерфейс для пополнения

базы тестов

28

Схема активного тестирования серверной компоненты протокола

Tester (подает

команды, сравнивает

ответы с ожидаемыми)

Серверная реализация

Команды клиента

Ответы сервера

При активном тестировании обычно система выключается из обычного функционирования на время тестирования

29

Журнал активного тестирования ошибочной серверной реализации протокола

[17:58:59] *** Test sequence begins 1 : Проверка правильности аутентификации последнего пользователя

[17:58:59] Request: USER user3\r\nExpected response: ^\\+OK(| .*)\\r\\n[17:59:05] Responce: +OK enter password for user user3\r\nCorrect![17:59:05] Request: PASS test\r\nExpected response: ^\\+OK(| .*)\\r\\n[17:59:11] Responce: -ERR user or password incorrect\r\nWrong!

user1:guestuser2:111user3:test

Содержимое файла с паролями

30

Пассивное тестирование реализации клиентской части протокола

Tester(наблюдает поведение)

Серверная реализация (исправная)

Клиентская реализация

Ответы сервера

Команды клиента

При пассивном тестировании обычно система работает в нормальном режиме, есть возможность только наблюдать ее работу

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 tigger\r\n Request:

+OK Hello, tigger. Please enter your password\r\n[18:21:14] Response: PASS thecat\r\n Request:

+OK Come in, tigger.\r\n[18:21:30] Response: stat\r\n Request: +OK 3 57\r\n[18:21:45] Response: list\r\n Request: +OK 1 18\r\n2 33\r\n3 6\r\n[18:22:01] Response: retr 1\r\n Request: +OK

Here comes the message\r\nmessage 1\r\nmess 12\r\n.\r\n[18:22:17] Response: retr 4\r\n Request: -ERR No message

with #4\r\n[18:22:32] Response: quit\r\n Request: +OK Bye-bye.\r\n[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

32

Тестирование взаимодействия

Wireshark(анализатор

пакетов)

Серверная реализация

Клиентская реализация

Команды клиента, ответы сервера

Tester (анализирует dump-файл)

dump-файл

33

Диаграмма DHCP

34

Проект ФЦП (2009-2010 гг)

НИР «Проведение прикладных и проблемно-

ориентированных поисковых исследований в области информационно-телекоммуникационных систем с участием научных организаций Франции»

Совместно с TELECOM&Management Южный Париж, г. Еври, Франция

Обнаружены ошибки в программных реализациях

POP3 и IRC протоколов

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

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), задающий режим работы

37

СПАСИБО ЗА ВНИМАНИЕ