Использование автогенерации кода для тестирования...
DESCRIPTION
Санкт-Петербургский Государственный Университет Математико-Механический Факультет Кафедра Системного Программирования. Использование автогенерации кода для тестирования драйверов ОС Windows. Дипломная работа студента 545 группы Комольцева Дмитрия Владимировича - PowerPoint PPT PresentationTRANSCRIPT
Использование автогенерации кода для тестирования драйверов ОС Windows
Дипломная работа студента 545 группыКомольцева Дмитрия Владимировича
Научный руководитель: Сабашный В.Е.Рецензент: Лабутин И.А.
2008 год
Санкт-Петербургский Государственный Университет
Математико-Механический Факультет
Кафедра Системного Программирования
Автоматическое тестирование Быстрее, чем ручное Некоторые области неудобно тестировать
вручную Удобно проводить регрессионное тестирование Перехват функций
Тестирование путей обработки ошибок Эмуляция ситуации нехватки системных ресурсов Формирование «специфических» запросов системе
Существующая система
Операционная система
Тестируемый драйвер
Wrapper
ExAllocatePool(…)
Ker
nel
mod
eU
ser
mod
e Тестовое окружениеУстановка параметров перехвата.
w_ExAllocatePool(…){ изменение параметров; задержка; ExAllocatepool(…); Возврат кода ошибки;}
…ExAllocatePool(…);…
WDF как среда разработки драйверов OS Windows Самая новая технология разработки драйверов
от Microsoft Поддерживаются версии Windows начиная с
Windows 2000 Kernel Mode Driver Framework и User Mode Driver
Framework Простота разработки драйверов Берет на себя работу с PnP, WMI, DMA,... Поддержка версий
Проблема WDF поддерживает одновременную работу с
разными версиями окружения Требуемая версия определяется в процессе
загрузки драйвера Старый метод перехвата не работает
Требуется добавить поддержку перехвата WDF функций
Нельзя нарушать работу старой системы перехвата
Решение
Wrapper
Ker
nel
mod
e
w_WdfDriverCreate (…){ Изменение параметров; ws_WdfDriverCreate (…); Возврат кода ошибки;}
Тестируемый драйвер
Работа…WdfDriverCreate(DG,…);Снова работа;…
Операционная система
WdfDriverCreate(DG,…)
ts_WdfDriverCreate(DG,…){ return w_WdfDriverCreate(…);}
ws_WdfDriverCreate(…){ return WdfDriverCreate(DG, …);}
Схема генерации
Заголовочные файлыWindows DDK
Заголовки функций
Шаблоны функций-перехватчиков
Выбранные заголовки
Сгенерированные функции-перехватчики для всех функций
Исходные коды драйвера-перехватчика
Готовый драйвер
Сгенерированные функции-обертки для WDF функций
Выбранные заголовки с помеченными WDF функциями
Результаты
В тестовое окружение добавлена поддержка перехвата WDF функций
Вспомогательный код генерируется автоматически
Сохранена совместимость со старыми тестами Найдены критические ошибки в коммерческом
продукте