Для студентов МГУ им. Ломоносова по предмету МенеджментУправление ограничениями в символьной виртуальной машине V#Управление ограничениями в символьной виртуальной машине V#
2024-08-252024-08-25СтудИзба
Курсовая работа: Управление ограничениями в символьной виртуальной машине V#
Описание
Оглавление
3
4
Введение
Качественное тестирование достаточно сложной, чтобы быть полез-ной не только для ее создателя, программы — это, как правило, тру-доёмкая задача. Тестирование требует значительного количества вре-мени, которое не всегда удаётся выделить в реальном процессе разра-ботки. При этом даже после тестирования и отладки в программном коде могут оставаться незамеченные специалистами уязвимости, при-водящие к ошибкам или нежелательному поведению только при испол-нении на специфичных комбинациях входных данных. Для решения данных проблем часто применяются инструменты автоматической ге-нерации тестов, в том числе инструменты тестирования «белого ящика» (которым доступен исходный код программы, в отличие от тестирова-ния «черного ящика»). В основе таких инструментов лежат различные механизмы статического анализа кода, один из которых — механизм символьного исполнения.
Техники символьного исполнения кода заключаются в исполнении программы не на конкретных значениях входных данных, а на так на-зываемых символьных переменных. Это даёт возможность для каждого пути исполнения получить логические ограничения на значения вход-ных параметров, при выполнении которых этот путь достигается. После этого при помощи SMT1-решателя такие значения могут быть найдены и сгенерирован тест, реализующий данный путь.
Механизм символьного исполнения обладает таким достоинством, как теоретически полное покрытие кода, что даёт
Введение | 5 | ||
1. | Постановка задачи | 7 | |
2. | Обзор предметной области | 8 | |
2.1. | Символьноеисполнение ................... | 8 | |
2.2. | SMT-решатели......................... | 11 | |
2.3. | АрхитектурапроектаV# . . . . . . . . . . . . . . . . . . | 12 | |
2.4. | Модель символьной памяти в V# . . . . . . . . . . . . . . | 13 | |
3. | Независимое управление ограничениями | 15 | |
3.1. | Существующие реализации . . . . . . . . . . . . . . . . . | 16 | |
3.2. | ПодходкреализациивV#. . . . . . . . . . . . . . . . . . | 17 | |
4. | Кэширование моделей SMT-решателя | 19 | |
4.1. | Существующие реализации . . . . . . . . . . . . . . . . . | 19 | |
4.2. | ПодходкреализациивV#. . . . . . . . . . . . . . . . . . | 21 | |
5. | Инкрементальное использование SMT-решателя | 22 | |
5.1. | Инкрементальность на основе стека . . . . . . . . . . . . | 23 | |
5.2. | Инкрементальность на основе предпосылок . . . . . . . . | 24 | |
5.3. | Существующие реализации . . . . . . . . . . . . . . . . . | 26 | |
5.4. | ПодходкреализациивV#. . . . . . . . . . . . . . . . . . | 26 | |
6. | Особенности реализации | 28 | |
6.1. | Независимое управление ограничениями . . . . . . . . . . | 28 | |
6.2. | Кэширование моделей SMT-решателя . . . . . . . . . . . | 30 | |
6.3. | Инкрементальное использование SMT-решателя . . . . . | 31 | |
7. | Эксперименты | 32 | |
7.1. | Тестовыеданные........................ | 32 | |
7.2. | Исследовательские вопросы . . . . . . . . . . . . . . . . . | 32 | |
7.3. | Результаты........................... | 33 |
3
Заключение | 37 |
Список литературы | 38 |
4
Введение
Качественное тестирование достаточно сложной, чтобы быть полез-ной не только для ее создателя, программы — это, как правило, тру-доёмкая задача. Тестирование требует значительного количества вре-мени, которое не всегда удаётся выделить в реальном процессе разра-ботки. При этом даже после тестирования и отладки в программном коде могут оставаться незамеченные специалистами уязвимости, при-водящие к ошибкам или нежелательному поведению только при испол-нении на специфичных комбинациях входных данных. Для решения данных проблем часто применяются инструменты автоматической ге-нерации тестов, в том числе инструменты тестирования «белого ящика» (которым доступен исходный код программы, в отличие от тестирова-ния «черного ящика»). В основе таких инструментов лежат различные механизмы статического анализа кода, один из которых — механизм символьного исполнения.
Техники символьного исполнения кода заключаются в исполнении программы не на конкретных значениях входных данных, а на так на-зываемых символьных переменных. Это даёт возможность для каждого пути исполнения получить логические ограничения на значения вход-ных параметров, при выполнении которых этот путь достигается. После этого при помощи SMT1-решателя такие значения могут быть найдены и сгенерирован тест, реализующий данный путь.
Механизм символьного исполнения обладает таким достоинством, как теоретически полное покрытие кода, что даёт
Характеристики курсовой работы
Предмет
Учебное заведение
Семестр
Просмотров
1
Размер
660 Kb
Список файлов
Управление ограничениями в символьной виртуальной машине V#.doc