37
Тестирование телекоммуникационных протоколов на основе моделей с конечным числом переходов Радиофизический факультет Кафедра информационных технологий в исследовании дискретных структур Зав. кафедрой Евтушенко Нина Владимировна Томский государственный университет Шабалдина Наталия Владимировна

Natalia Shabaldina. CSEDays

  • Upload
    lilosea

  • View
    1.145

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Natalia Shabaldina. CSEDays

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

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

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

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

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

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

Page 2: Natalia Shabaldina. CSEDays

2

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

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

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

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

Page 3: Natalia Shabaldina. CSEDays

3

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

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

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

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

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

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

Page 4: Natalia Shabaldina. CSEDays

4

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

Page 5: Natalia Shabaldina. CSEDays

5

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

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

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

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

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

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

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

Page 6: Natalia Shabaldina. CSEDays

6

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

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

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

S: I* O*

Imp: I* O*

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

S

Imp

I

I

O

O

Page 7: Natalia Shabaldina. CSEDays

7

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

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

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

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

Page 8: Natalia Shabaldina. CSEDays

8

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

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

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

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

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

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

Page 9: Natalia Shabaldina. CSEDays

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 >

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

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

Page 10: Natalia Shabaldina. CSEDays

10

x1 / y2

s1s2

x1 / y1

s3

x2 / y2x1 / y1

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

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

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

Page 11: Natalia Shabaldina. CSEDays

11

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

автомата

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

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

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

V

s

1

s

3

s

2

… …

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

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

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

s1 si

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

Page 12: Natalia Shabaldina. CSEDays

12

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

< S, ~, >

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

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

Page 13: Natalia Shabaldina. CSEDays

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 – число состояний реализации

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

Page 14: Natalia Shabaldina. CSEDays

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

Page 15: Natalia Shabaldina. CSEDays

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)

Page 16: Natalia Shabaldina. CSEDays

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

Некоторые работы по расширенным автоматам

Page 17: Natalia Shabaldina. CSEDays

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

Page 18: Natalia Shabaldina. CSEDays

18

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

Tester (подает на

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

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

ожидаемыми)

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

протокола

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

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

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

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

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

переходов

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

формате

Page 19: Natalia Shabaldina. CSEDays

19

Протокол POP3

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

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

POP3-клиент

POP3-сервер

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

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

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

Page 20: Natalia Shabaldina. CSEDays

20

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

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

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

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

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

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

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

Page 21: Natalia Shabaldina. CSEDays

21

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

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

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

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

Page 22: Natalia Shabaldina. CSEDays

22

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

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

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

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

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

Page 23: Natalia Shabaldina. CSEDays

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 – любой другой входной символ кроме перечисленных из этого же состояния

Page 24: Natalia Shabaldina. CSEDays

24

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

Page 25: Natalia Shabaldina. CSEDays

25

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

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

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

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

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

Page 26: Natalia Shabaldina. CSEDays

26

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

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

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

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

Page 27: Natalia Shabaldina. CSEDays

27

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

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

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

компоненты

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

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

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

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

базы тестов

Page 28: Natalia Shabaldina. CSEDays

28

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

Tester (подает

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

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

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

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

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

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

Page 29: Natalia Shabaldina. CSEDays

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

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

Page 30: Natalia Shabaldina. CSEDays

30

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

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

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

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

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

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

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

Page 31: Natalia Shabaldina. CSEDays

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

Page 32: Natalia Shabaldina. CSEDays

32

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

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

пакетов)

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

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

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

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

dump-файл

Page 33: Natalia Shabaldina. CSEDays

33

Диаграмма DHCP

Page 34: Natalia Shabaldina. CSEDays

34

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

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

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

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

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

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

Page 35: Natalia Shabaldina. CSEDays

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

Page 36: Natalia Shabaldina. CSEDays

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

Page 37: Natalia Shabaldina. CSEDays

37

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