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

Содержание

Слайд 2

Институт системного программирования РАН

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

/ 15

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

Слайд 3

Институт системного программирования РАН

Какие тесты нужны?

Глубокие тесты – вызывают каждую целевую функцию

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

/ 15

Слайд 4

Институт системного программирования РАН

Технологии автоматизации: какой ценой?

Глубокие тесты – тяжеловесные технологии, например

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

/ 15

Слайд 5

Институт системного программирования РАН

Базовая идея генерации базовых тестов

/ 15

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

Слайд 6

Институт системного программирования РАН

Базовая идея+

/ 15

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

Слайд 7

Институт системного программирования РАН

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

Дерево инициализации вызова

S1 = F ()
P1 =

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


Базовый тест

/ 15

Слайд 8

Институт системного программирования РАН

Дополнительная информация (опциональная)

как правильно инициализировать библиотеку
как получить корректное значение

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

/ 15

Слайд 9

Институт системного программирования РАН

Специальные конструкции в описании дополнительной информации

$(type) – создание объекта

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

/ 15

Слайд 10

Институт системного программирования РАН

Характеристика технологии

Даже без задания дополнительной информации получаются вполне работоспособные

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

/ 15

Слайд 11

Институт системного программирования РАН

Примеры использования (1)

Официальные тестовые наборы Linux Foundation:
libxml2
Qt3
Qt4
ALSA
Официальный тестовый набор

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

/ 15

Слайд 12

Институт системного программирования РАН

Примеры использования (2)

/ 15

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

Слайд 13

Институт системного программирования РАН

Примеры использования (3)

/ 15

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

Слайд 14

Институт системного программирования РАН

Распространение API Sanity Autotest

Лицензия GPL
Домашняя страница проекта:
http://ispras.linux-foundation.org/index.php/ API_Sanity_Autotest
Принят в репозитории:
Alt

Институт системного программирования РАН Распространение API Sanity Autotest Лицензия GPL Домашняя страница
Linux
Arch Linux
Debian
FreeBSD

/ 15

Имя файла: Автоматическая-генерация-базовых-тестов-для-программных-интерфейсов-библиотек-на-основе-заголовочных-файлов.pptx
Количество просмотров: 88
Количество скачиваний: 0