Жизненный цикл любого программного обеспечения содержит фазу его тестирования. Сетевые протоколы не являются исключением, поскольку своевременное выявление возможных ошибок является необходимым условием для качественной работы сетевых приложений. Наиболее активно разрабатываются и обновляются протоколы прикладного уровня, что мотивирует разработку универсальных инструментов тестирования таких протоколов.
Для синтеза тестов с гарантированной полнотой покрытия неисправностей, достаточно часто применяются формальные модели. Модели с конечным числом состояний, такие как конечные автоматы, полуавтоматы и связанные с ними модели, достаточно активно применяются для решения задач анализа и синтеза телекоммуникационных систем. Конечные автоматы [1,2] позволяют построить достаточно адекватную для задачи тестирования модель реальных телекоммуникационных систем и формально определить класс обнаруживаемых неисправностей [3].
Однако, при тестировании современных протоколов прикладного уровня, достаточно часто приходится учитывать хранимые такими протоколами данные, такие как, например, учётные данные, количество текущих соединений и т.д. Такая информация часто не может быть описана конечным числом состояний и, соответственно, построенный по конечному автомату тест не гарантирует обнаружение связанных с ней ошибок. Для моделирования подобных систем, конечные автоматы были расширены контекстными переменными, предикатами на переходах, а также входными и выходными параметрами. Расширенные автоматы позволяют более точно описать современные телекоммуникационные протоколы, но, их язык не является регулярным, что усложняет решение многих задач анализа и синтеза. Тем не менее, существуют методы синтеза тестов для расширенных автоматов, преимущественно основанные на построении по расширенному автомату соответствующих конечно-автоматных абстракций.
Для синтеза тестов по конечному атвомату могут быть использованы существующие инструменты, например, онлайн-сервис FSMTestOnline [4], предоставляющий возможность моделировать конечные и расширенные конечные автоматы и строить тесты различными методами, включающими в себя обход графа переходов и модификации метода Василевского.
Таким образом, тест для протокола прикладного уровня может быть построен с использованием существующих инструментов, но нерешённой остаётся проблема подачи теста на реализацию такого протокола. Подача тестов вручную является слишком трудозатратным в связи с большими размерами тестов и такой подход часто не может быть достаточно эффективно использован на практике [5]. Решением этой проблемы является автоматизация тестирования, которой и посвящена данная работа.
В данной работе разрабатывается приложение, которое позволит тестировать функциональные требования серверных реализаций сетевых протоколов прикладного уровня. Ключевая роль программы - сокращение трудозатрат при тестировании путем автоматизации подачи тестовых последовательностей на сервер.
В результате проведенной работы было разработано консольное приложение, позволяющее проводить автоматизированную подачу конечноавтоматных и параметризованных конечно-автоматных тестов на различные сетевые протоколы прикладного уровня. В качестве примера был построен автомат, моделирующий протокол POP3. В результате тестирования различных реализаций данного протокола были выявлены некоторые, на первый взгляд, незаметные неисправности.
Тестирование на основе конечного автомата и расширенного конечного автомата в совокупности, позволяет в наибольшей мере покрыть ошибки различных классов.
1) Агибалов Г. П. Лекции по теории конечных автоматов. / Г. П. Агибалов, А.
M. Оранов. - Томск : Издательство ТГУ, 1984. - 185 с.
2) Гилл А. Введение в теорию конечных автоматов / А. Гилл. - М. : Издательство Наука, 1966. - 272 с.
3) Василевский М. П. О распознавании неисправности автоматов // Кибернетика. - 1973. - № 4. - С. 93-108.; Chow T. S. Test software design modeled by finite state machine // IEEE Transactions on Software Engineering.
- 1978. - Vol. 4. - № 3. - P. 178-187.
4) Инструмент FSMTestonline. - URL: http://www.fsmtestonline.ru (дата
обращения: 20.03.2022).
5) Dorofeeva R. FSM-based conformance testing methods: A survey annotated with experimental evaluation / R. Dorofeeva, K. El-Fakih, S. Maag, A. Cavalli,
N. Yevtushenko // Information & Software Technology. - 2010. - 52(12). - P. 1286-1297.
6) Бурдонов И. Б. Теория соответствия для систем с блокировками и разрушениями / И.Б. Бурдонов, А.С. Косачев, В.В. Кулямин. - М. : ФИЗМАТЛИТ. - 2008. - 412 с.]
7) Socket документация - https://docs.microsoft.com/en-
us/windows/win32/api/winsock2/nf-winsock2-socket (дата обращения:
20.03.2022).
8) Post office Protocol - Version 3 документация - https://www.ietf.org/rfc/rfc1939.txt (дата обращения: 20.03.2022).
9) Cavalli A.R. Hit-or-Jump: An algorithm for embedded testing with applications to IN services / A. R. Cavalli et al. // In Proceedings of the FORTE’1999., 1999.
- pp. 41-56
10) Карибский В.В., Пархоменко П.П., Согомонян Е.С., Халчев В.Ф. Основы технической диагностики. М.: Энергия, 1976. 464 с.