SynTESK @MODULE.VERSION.MAJOR@.@MODULE.VERSION.MINOR@: Краткое описание

Зеленов Сергей

$Id$

Введение

SynTESK (Syntax Testing Kit) -- инструмент для тестирования синтаксических анализаторов (парсеров) формальных языков. SynTESK позволяет втоматически генерировать тесты для проверки того, что реализация парсера соответствует спецификации данного формального языка, т.е. что парсер распознает именно данный формальный язык.

В настоящее время существует много надежных систем автоматизарованной генерации парсеров. Однако сложность реальных языков такова, что даже при использовании систем автоматизарованной генерации разработка парсеров требует дополнительно написания ручного кода, в основном для разрешения конфликтов при синтаксическом разборе -- так называемые look-ahead процедуры.

Инструмент SynTESK позволяет находить ошибки в таких вручную написанных процедурах.

SynTESK реализует технологию UniTesK автоматизированного тестирования, основанную на использовании спецификаций и моделей целевой системы.

При использовании инструмента SynTESK тесты строятся полностью автоматически на основе описания грамматики в виде BNF (форма Бэкуса-Наура). Для данного описания грамматики формального языка SynTESK позволяет получить тесты следующих видов:

Это позволяет проверять как то, что тестируемый парсер принимает корректные предложения целевого языка, так и то, что парсер отвергает некорректные предложения.

Инстумент SynTESK позволяет получать эффективные и при этом относительно небольшие множества тестов.

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

Инструменты

В состав системы SynTESK входят инструменты, необходимые для создания тестов на основе описания грамматики. Возможно использование этих инструментов из командной строки.

Анализатор BNF

Для автоматического построения тестов системе SynTESK требуется формальное описание грамматики в виде BNF (форма Бэкуса-Наура).

Анализатор BNF дает возможность проверить корректность данного описания грамматики.

Генератор позитивных тестов

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

Генератор позитивных тестов дает возможность автоматически получить такое множество предложений.

Генератор негативных тестов

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

Генератор негативных тестов дает возможность автоматически получить такое множество предложений.

Системные требования

Операционная система:

Программное обеспечение:

Аппаратные требования:

Установка SynTESK

Распаковать zip-архив syntesk-@MODULE.VERSION@.zip

Структура каталогов:

Исполняемые файлы:

Запуск SynTESK

Для запуска генератора тестов нужно:

Виды генераторов

Генераторы тестов имеются следующие:

Входные данные

Формат файла с грамматикой

Формат допустимого файла с грамматикой представлен в файле examples/BNF.bnf

Свойства генератора

Значения свойств задаются так:

syntesk.<имя_плагина_генератора_тестов>.<имя_свойства> = <значение_свойства>

Имена свойств конкретного плагина и их описание можно узнать, запустив команду:

syntesk - <имя_плагина_генератора_тестов>

например,

syntesk - neg_test_token

Простейшие конфигурации

Для pos_test_alt:

syntesk.pos_test_alt.start.rule=<имя_стартового_правила>
syntesk.pos_test_alt.lexeme.file=<имя_файла_с_лексемами>
syntesk.pos_test_alt.processor=print_xml
syntesk.print_xml.output.test.dir=<каталог_для_вывода_тестов>

print_xml -- это плагин, выводящий тесты в файлы. Его свойства можно узнать тем же способом, что и свойства генераторов.

Для neg_test_point:

syntesk.neg_test_point.start.rule=<имя_стартового_правила>
syntesk.neg_test_point.lexeme.file=<имя_файла_с_лексемами>
syntesk.neg_test_point.processor=print_xml
syntesk.print_xml.output.test.dir=<каталог_для_вывода_тестов>

Для neg_test_token:

syntesk.neg_test_token.start.rule=<имя_стартового_правила>
syntesk.neg_test_token.lexeme.file=<имя_файла_с_лексемами>
syntesk.neg_test_token.processor=print_xml
syntesk.print_xml.output.test.dir=<каталог_для_вывода_тестов>

Пример файла с кофигурацией для грамматики BNF представлен в файле examples/BNF.bnf.properties

Файл со значениями лексем

Файл с лексемами устроен так: в строчке пишется лексема в угловых скобках, после нее через пробелы в кавычках значение лексемы. Например:

<IntegerLiteral>       "123"
<FloatingPointLiteral> "45.67"
<CharacterLiteral>     "'a'"
<StringLiteral>        "\"my string\""
<ID>                   "Name"

Пример файла с лексемами для грамматики BNF представлен в файле examples/BNF.bnf.lxm

Получение дополнительной информации

О том, какие доступны плагины, можно узнать, запустив команду

syntesk -

Подробно о структуре командной строки запуска генератора можно узнать, запустив команду

syntesk