1 / 20

Комбинаторная генерация программных конфигураций ОС

Комбинаторная генерация программных конфигураций ОС. В. Кулямин kuliamin@ispras.ru ИСП РАН. Конфигурационное тестирование. Программная конфигурация операционной системы Использование форматов, сигналов, устройств, файловых систем, … Размеры буферов, страниц, пулов, …

ciel
Download Presentation

Комбинаторная генерация программных конфигураций ОС

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Комбинаторная генерация программных конфигураций ОС В. Кулямин kuliamin@ispras.ru ИСП РАН

  2. Конфигурационное тестирование • Программная конфигурация операционной системы • Использование форматов, сигналов, устройств, файловых систем, … • Размеры буферов, страниц, пулов, … • Количества очередей, мьютексов, портов, … • Значения по умолчанию для приоритетов, политик, режимов, … • Имена и номера устройств, спец. файлы, адреса, … • Нужно проверить работу ОС при различных комбинациях значений конфигурационных параметров

  3. Общие задачи тестирования • Как проверить корректность работы системы? • Можно считать, что есть достаточно много тестов работоспособности ОСОни будут выполняться в разных конфигурациях и проверять корректность работы ОС • Как оценить полноту тестового набора? • Для этого нужно знать, что такое конфигурация, какие конфигурации бывают вообще, какие из них существенно отличаются по поведению ОС

  4. Основные вопросы • Как задается одна конфигурация? • Как определяются текущие значения параметров • Результат работы генератора – набор таких описаний • Какие конфигурации бывают? • Какие есть параметры и какие значения они могут принимать • Это – входные данные генератора • Как понять, что набор конфигураций «достаточно полный»? • И как построить такой набор? • Так будет устроен механизм генерации

  5. Определение конфигурации

  6. Определение одной конфигурации • Файлы configos.h, x_configbrd.h с набором макроопределений в виде #define/#undef • Файл usermake.def для make, в котором определения даются в виде<имя> = <значение>

  7. Возможные конфигурации • Набор параметров и их возможных значений зависит от аппаратной платформы • Между параметрами есть зависимости • При включенной сети можно определить поддерживаемые протоколы, адреса шлюзов, …При выключенной эти протоколы и адреса не имеют смысла • Полный набор параметров с их возможными значениями и зависимостями описан в TCL-скрипте для настройки конфигурации перед сборкой • Этот скрипт и дает входные данные • Это удобно с точки зрения возможных модификаций системы параметров

  8. Виды параметров • Типы • Булевский (#define/#undef) • Целое число (десятичное, шестнадцатеричное) • Идентификатор C • Строка • Перечисление • Будем работать только с булевскими и перечислимыми

  9. Зависимости • Примеры • INCLUDE_REMOTE_DEBUG_SERVER:$INCLUDE_DEBUG && $INCLUDE_NETWORK==1 • ERASE_MEMORY :[string compare $OUTPUT_MSG_TO flash_memory]==0 || [string compare $OUTPUT_EMERG_TO flash_memory]==0 • Почти все имеют вид логических выражений над формулами вида $x = v, $x != v • Дизъюнкции используются редко (нет дизъюнкций из трех выражений)

  10. Критерий полноты • Все возможные комбинации значений • Нереализуем • mips64/cprio64 – 563 (17215153413152541) 2.23875·10176 • Некоторые комбинации • Использование: каждый участок кода закрыт не более чем двумя-тремя условиями #ifdef •  достаточно сочетаний пар или троек значений!

  11. Формальная постановка задачи • Задан класс конфигураций • Набор параметров • Для каждого – конечное множество значений • Для каждого – условие использования : логическое выражение из элементарных формул p = v • Задано число t = 2,3,4 • Построить набор корректных конфигураций, в рамках которого для каждых t параметров и каждого возможного сочетания их значений это сочетание встречается в одной из конфигураций

  12. Покрывающие наборы • Есть k параметров, имеющих n1, …, nkвозможных значений • Покрывающий набор глубины t – матрица из k столбцов • В каждом столбце j встречаются только nj значений • Для каждого набора из t параметров и для каждого сочетания их возможных значений в некоторой строке есть это сочетание

  13. Пример • 35 параметров со значениями {0,1} • 34 359 738 368 всех комбинаций • Есть набор из 8 тестов, покрывающих все сочетания пар значений 00000 00000 00000 00000 00000 00000 0000011111 11111 11111 11111 00000 00000 0000011111 11111 00000 00000 11111 11111 0000011110 00000 11111 10000 11111 10000 1111010001 11000 11100 01110 11100 01110 1110101001 00110 10011 01101 10011 01101 1101100100 10101 01010 11011 01010 11011 1011100010 01011 00101 10111 00101 10111 01111

  14. Методы построения • Комбинаторные и алгебраические • Рекурсивные • Оптимизационные • Жадный алгоритм

  15. Учет условий использования • Для данного набора t параметров • Условия использования могут быть противоречивы • Условия использования могут ограничивать допустимые комбинации значений

  16. Проверка противоречивости • В общем виде – NP-полная задача • Есть только алгоритмы, экспоненциальные от числа используемых элементарных формул • У нас дизъюнкции имеют не более 2-х элементов • Задача 2-SAT • Естьлинейный алгоритм Тарьяна

  17. Алгоритм Тарьяна (-Аспвала-Пласса) • Преобразуем X || Y в две импликации!X  Y и !Y  X • Строим граф с вершинами X, !X,соединенных дугами, соответствующими импликациям • Поиск в глубину за линейное от числа дуг время находит компоненты сильной связности • Противоречие есть тогда и только тогда, когда в одной компоненте есть X и !X

  18. Общая схема • Разбор TCL-файла • дает набор параметров, множества их значений и зависимости • Транзитивное замыкание зависимостей • дает полные условия использования • Построение покрывающего набора без учета условий использования • комбинаторная инициализация части + жадный алгоритм • Достраивание набора с учетом условий использования • Выдача результатов • Набор директорий с файлами, описывающими конфигурации

  19. Практические результаты

  20. Спасибо за внимание!

More Related