'

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

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

Институт системного программирования РАН Тестируем библиотеки и модули 2 / 15


Слайд 2

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


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

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


Слайд 8

Институт системного программирования РАН Специальные конструкции в описании дополнительной информации $(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


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

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


Слайд 13

Институт системного программирования РАН Распространение API Sanity Autotest Лицензия GPL Домашняя страница проекта: http://ispras.linux-foundation.org/index.php/ API_Sanity_Autotest Принят в репозитории: Alt Linux Arch Linux Debian FreeBSD … 14 / 15


Слайд 14

Институт системного программирования РАН Ссылки API Sanity Autotest http://ispras.linux-foundation.org/index.php/ API_Sanity_Autotest Центр верификации OC Linux http://linuxtesting.org Институт системного программирования РАН http://ispras.ru Докладчик Владимир Рубанов, к.ф.-м.н., зав. сектором операционных систем ИСП РАН, руководитель Центра верификации ОС Linux vrub@ispras.ru 15 / 15


×

HTML:





Ссылка: