Институт системного программирования РАН Автоматическая генерация базовых тестов для программных интерфейсов библиотек на основе заголовочных файлов Владимир.

Презентация:



Advertisements
Похожие презентации
Автоматизированный анализ совместимости Linux приложений с различными дистрибутивами Владимир Рубанов, Константин Власов, Андрей Смачев Институт системного.
Advertisements

Технологии разработки программного обеспечения Исследования Института системного программирования РАН к.ф.-м.н В.В.Кулямин.
Методы автоматизации тестирования Лекция 2. Архитектура теста в UniTesK Генератор тестовой последовательности Оракул Медиатор на целевом языке Целевая.
Тестирование функциональности, не зависящей от истории взаимодействия системы с окружением Занятие 3.
Использование TLM при тестировании моделей аппаратуры Михаил Чупилко Институт системного программирования РАН
Software engineering Дмитриев Андрей Владиславович ©
Нужно много различных протоколов связи Каждый из них может реализовываться на разных платформах Современные сети Много устройств, компьютеров и сетей Разные.
Model/View-архитектура CASE-пакета REAL-MV Тимофей Брыксин, гр. 545 Научный руководитель: А.Н.Терехов Рецензент: Д.В.Кознов.
Автоматическое построение тестов для аппаратного обеспечения с использованием разрешения ограничений проф. А.Петренко, Е.Корныхин.
Расширение технологии UniTESK средствами генерации структурных тестов Дмитрий Воробьев
МГУ имени Ломоносова, механико-математический факультет, кафедра вычислительной математики Исследование проблемы переполнения буферов в программах Пучков.
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
Унифицированный программный интерфейс для работы с системами контроля версий Разработчик: Лаптев Николай Иванович ПС-51 Руководитель: Муреев Павел Павлович.
ДЕЛЕГАТЫ Лекция 7 1. Зачем нужны делегаты 2 И данные, и код располагаются в памяти компьютера по определенным адресам. Передача адресов данных в C# происходит.
Магистрант кафедры телекоммуникаций и информационных технологий Комиссар Дмитрий Семёнович Руководители: Доцент Резников Геннадий Константинович.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Генерация оптимизированных для ручного выполнения сценариев тестирования приложений с графическим интерфейсом пользователя А.В.Баранцев, С.Г.Грошев, В.А.Омельченко.
1 Программирование на языке Си++. 2 Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ Методы преобразования. Классы потоков Си++ Операции замещения и вставки Ввод/вывод в.
Применение генетического программирования для реализации систем со сложным поведением Санкт-Петербургский Государственный Университет Информационных Технологий,
Системные вызовы и библиотеки Unix SVR4 Введение.
Транксрипт:

Институт системного программирования РАН Автоматическая генерация базовых тестов для программных интерфейсов библиотек на основе заголовочных файлов Владимир Рубанов, Андрей Пономаренко Институт системного программирования РАН

Тестируем библиотеки и модули 2 / 15

Институт системного программирования РАН Какие тесты нужны? 1.Глубокие тесты – вызывают каждую целевую функцию и их цепочки сотни раз с различными параметрами и в различных внутренних состояниях целевой системы. Тщательно контролируется корректность результатов работы. 2.Средние тесты – вызывают целевые функции в нескольких основных сценариях использования. Контролируются основные результаты работы. 3.Базовые тесты – каждая функция вызывается хотя бы один раз с некоторым корректным набором параметров. Контролируется отсутствие грубых ошибок. 3 / 15

Институт системного программирования РАН Технологии автоматизации: какой ценой? 1.Глубокие тесты – тяжеловесные технологии, например model based на основе конечных автоматов (UniTESK) Высокая удельная стоимость разработки тестов в расчете на одну целевую функцию. 2.Средние тесты – классические unit тесты (CUnit, TET, T2C) Средняя удельная стоимость разработки тестов в расчете на одну целевую функцию. 3.Базовые тесты – ? Целесообразно при низкой стоимости создания тестов. 4 / 15

Институт системного программирования РАН Базовая идея генерации базовых тестов 5 / 15

Институт системного программирования РАН Базовая идея+ 6 / 15

Институт системного программирования РАН Построение цепочки инициализации Дерево инициализации вызова S1 = F () P1 = F1 (S1) I1 = 10 P2 = G1 (I1) P3 = test string Res = Target (P1, P2, P3) CHECK (Res != error) Базовый тест 7 / 15

Институт системного программирования РАН Дополнительная информация (опциональная) как правильно инициализировать библиотеку как получить корректное значение определенного типа данных каким должно быть корректное значение определенного параметра функции какие проверки можно сделать для возвращаемых значений определенного типа 8 / 15

Институт системного программирования РАН Специальные конструкции в описании дополнительной информации $(type) – создание объекта данного типа void create_QProxyModel(QProxyModel* Obj) { Obj->setSourceModel($(QItemModel*)); } $[function] – вызов данной функции с корректными параметрами xmlListPtr create_filled_list() { xmlListPtr l = $[xmlListCreate]; int num = 100; xmlListPushBack(l,&num); return l; } 9 / 15

Институт системного программирования РАН Характеристика технологии Даже без задания дополнительной информации получаются вполне работоспособные тесты, которые могут обнаруживать ошибки. Введение дополнительной информации позволяет значительно повысить качество тестирования, при этом такая информация автоматически повторно используется в сотнях и тысячах тестов. Получаемые тесты могут служить готовой базой для разработки более глубоких тестов. 10 / 15

Институт системного программирования РАН Примеры использования (1) Официальные тестовые наборы Linux Foundation: libxml2 Qt3 Qt4 ALSA Официальный тестовый набор rpm5 Десятки upstream применений в качестве дополнительного шага контроля качества. 11 / 15

Институт системного программирования РАН Примеры использования (2) 12 / 15

Институт системного программирования РАН Примеры использования (3) 13 / 15

Институт системного программирования РАН Распространение API Sanity Autotest 1.Лицензия GPL 2.Домашняя страница проекта: API_Sanity_Autotest 3.Принят в репозитории: Alt Linux Arch Linux Debian FreeBSD … 14 / 15

Институт системного программирования РАН Ссылки API Sanity Autotest API_Sanity_Autotest API_Sanity_Autotest Центр верификации OC Linux Институт системного программирования РАН Докладчик Владимир Рубанов, к.ф.-м.н., зав. сектором операционных систем ИСП РАН, руководитель Центра верификации ОС Linux 15 / 15