RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2022, том 34, выпуск 4, страницы 49–62 (Mi tisp704)

Эта публикация цитируется в 1 статье

Автоматическое тестирование LLVM-программ со сложными входными структурами данных

А. В. Мисонижникa, А. А. Бабушкинa, С. А. Морозовb, Ю. О. Костюковa, Д. А. Мордвиновa, Д. В. Козновa

a Санкт-Петербургский государственный университет
b Национальный исследовательский университет «Высшая школа экономики»

Аннотация: Символьное исполнение является известным подходом для автоматической генерации регрессионных тестов и поиска ошибок/уязвимостей в программах. Данная работа посвящена созданию практичного метода к символьному исполнению LLVM-программ, пригодного для работы со сложными входными структурами данных. Метод основан на известной идее ленивой инициализации, позволяющей избавить пользователя от необходимости вручную создавать ограничения на входные структуры данных и полностью автоматизировать процесс символьного исполнения программы. Предлагается два улучшения ленивой инициализации для сегментированной символьной моделей памяти – использование временных меток и информации о типах. Предложенный метод реализован в символьной виртуальной машине KLEE для платформы LLVM и протестирован на реальных C-структурах данных — списках, биномиальных кучах, AVL-деревьях, красно-чёрных деревьях, двоичных деревьях и борах (префиксных деревьях).

Ключевые слова: автоматическое тестирование, символьное исполнение, ленивая инициализация, платформа LLVM, KLEE, структуры данных

DOI: 10.15514/ISPRAS-2022-34(4)-4



© МИАН, 2024