Jump to content

Динамический анализ программы

Динамический анализ программы — это анализ программного обеспечения , который включает в себя выполнение программы , в отличие от статического анализа программы , который ее не выполняет.

Анализ может быть сосредоточен на различных аспектах программного обеспечения, включая, помимо прочего: поведение , тестовое покрытие , производительность и безопасность .

Чтобы быть эффективной, целевая программа должна выполняться с достаточным количеством тестовых входных данных. [1] для рассмотрения диапазонов возможных входов и выходов. Меры тестирования программного обеспечения , такие как покрытие кода , и такие инструменты, как тестирование мутаций , используются для выявления случаев, когда тестирование неадекватно.

Функциональное тестирование

[ редактировать ]

Функциональное тестирование включает относительно распространенные методы программирования, такие как модульное тестирование , интеграционное тестирование и системное тестирование . [2]

Покрытие кода

[ редактировать ]

Вычисление покрытия кода тестом идентифицирует код, который не тестировался; не охваченные тестом.

Хотя этот анализ выявляет код, который не тестировался, он не определяет, является ли проверенный код адекватно протестированным. Код может быть выполнен, даже если тесты фактически не проверяют правильное поведение.

Динамическое тестирование

[ редактировать ]

Динамическое тестирование предполагает выполнение программы на наборе тестовых примеров.

Обнаружение ошибок памяти

[ редактировать ]

Фаззинг — это метод тестирования, который предполагает выполнение программы на самых разных входных данных; часто эти входные данные генерируются случайным образом (по крайней мере частично). Фаззеры серого ящика используют покрытие кода для управления генерацией входных данных.

Динамическое символическое исполнение

[ редактировать ]

Динамическое символьное выполнение (также известное как DSE или concolic выполнение) включает в себя выполнение тестовой программы на конкретных входных данных, сбор ограничений пути, связанных с выполнением, и использование решателя ограничений (обычно решателя SMT ) для генерации новых входных данных, которые могут привести к программе выбрать другой путь потока управления, тем самым увеличивая покрытие кода набора тестов. [3] DSE можно рассматривать как разновидность фаззинга («фаззинг белого ящика»).

Динамический анализ потока данных

[ редактировать ]

Динамический анализ потоков данных отслеживает поток информации от источников к получателям . Формы динамического анализа потока данных включают динамический анализ искажений и даже динамическое символьное выполнение . [4] [5]

Инвариантный вывод

[ редактировать ]

Daikon — это реализация динамического инвариантного обнаружения. Daikon запускает программу и наблюдает за значениями, которыепрограмма вычисляет, а затем сообщает о свойствах, которые были верны для наблюдаемых выполнений и, следовательно, вероятно, верны для всех исполнений.

Анализ безопасности

[ редактировать ]

Динамический анализ можно использовать для обнаружения проблем безопасности.

  • IBM Rational AppScan — это набор решений по обеспечению безопасности приложений, предназначенных для разных этапов жизненного цикла разработки. В пакет входят два основных продукта для динамического анализа: IBM Rational AppScan Standard Edition и IBM Rational AppScan Enterprise Edition. Кроме того, в комплект входит IBM Rational AppScan Source Edition — инструмент статического анализа.

Ошибки параллелизма

[ редактировать ]
  • Parasoft Jtest использует обнаружение ошибок во время выполнения для выявления таких дефектов, как состояния гонки , исключения, утечки ресурсов и памяти, а также уязвимости для атак безопасности.
  • Intel Inspector выполняет анализ потоков и ошибок памяти во время выполнения в Windows.
  • Parasoft Insure++ — это инструмент для анализа памяти во время выполнения и обнаружения ошибок. Его компонент Inuse обеспечивает графическое представление распределения памяти с течением времени, с конкретной видимостью общего использования кучи, распределения блоков, возможных невыполненных утечек и т. д.
  • Google Thread Sanitizer — это инструмент обнаружения гонок за данными. Он использует LLVM IR для захвата несанкционированного доступа к памяти.

Нарезка программы

[ редактировать ]

Для данного подмножества поведения программы нарезка программы состоит в сокращении программы до минимальной формы, которая по-прежнему обеспечивает выбранное поведение. Сокращенная программа называется «срезом» и является точным представлением исходной программы в области указанного подмножества поведения.Как правило, поиск среза является неразрешимой проблемой, но, задав подмножество целевого поведения значениями набора переменных, можно получить приблизительные срезы, используя алгоритм потока данных. Эти фрагменты обычно используются разработчиками во время отладки для определения источника ошибок.

Анализ производительности

[ редактировать ]

Большинство инструментов анализа производительности используют методы динамического анализа программ. [ нужна ссылка ]

Большая часть динамического анализа включает в себя инструментирование или преобразование.

Поскольку инструментирование может повлиять на производительность во время выполнения, интерпретация результатов тестирования должна учитывать это, чтобы избежать ошибочного определения проблемы с производительностью.

DynInst — это библиотека исправлений кода во время выполнения, которая полезна при разработке проб динамического анализа программ и их применении к скомпилированным исполняемым файлам. Dyninst в целом не требует исходного кода или перекомпиляции, однако неурезанные исполняемые файлы и исполняемые файлы с символами отладки легче инструментировать.

Iroh.js — это библиотека анализа кода времени выполнения для JavaScript . Он отслеживает путь выполнения кода, предоставляет прослушивателям среды выполнения прослушивание определенных шаблонов выполняемого кода и позволяет перехватывать и манипулировать поведением выполнения программы.

См. также

[ редактировать ]
  1. ^ Хативада, Сакет; Тушев, Мирослав; Махмуд, Анас (01 января 2018 г.). «Ровно достаточно семантики: теоретико-информационный подход для локализации ошибок программного обеспечения на основе ИК» . Информационные и программные технологии . 93 : 45–57. дои : 10.1016/j.infsof.2017.08.012 .
  2. ^ Майерс, Дж.Дж. (1979). Искусство тестирования программного обеспечения . Джон Уайли и сыновья.
  3. ^ Чен, Тин; Чжан, Сяо-сун; Го, Ши-цзэ; Ли, Хун-юань; Ву, Юэ (01 сентября 2013 г.). «Современное состояние: динамическое символьное выполнение для автоматизированной генерации тестов» . Компьютерные системы будущего поколения . Включая специальные разделы: Распределенные вычисления с поддержкой кибербезопасности для повсеместных облачных и сетевых сервисов, а также облачные вычисления и научные приложения — большие данные, масштабируемая аналитика и многое другое. 29 (7): 1758–1773. дои : 10.1016/j.future.2012.02.006 . ISSN   0167-739X .
  4. ^ Чен, Цзюй; Хан, Ухён; Инь, Минджун; Цзэн, Хаочэнь; Сун, Чэнъюй; Ли, Бёнён; Инь, Хэн; Шин, Инсик (2022). {SYMSAN}: эффективное выполнение Concolic во времени и пространстве посредством динамического анализа потока данных . стр. 2531–2548. ISBN  978-1-939133-31-1 .
  5. ^ Чанг, Уолтер; Штрайфф, Брэндон; Лин, Кэлвин (27 октября 2008 г.). «Эффективное и расширяемое обеспечение безопасности с использованием динамического анализа потоков данных» . Материалы 15-й конференции ACM «Компьютерная и коммуникационная безопасность» . ККС '08. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 39–50. дои : 10.1145/1455770.1455778 . ISBN  978-1-59593-810-7 . S2CID   6888893 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bf067f873a032be59ceb24e8d9a60c9f__1721021220
URL1:https://arc.ask3.ru/arc/aa/bf/9f/bf067f873a032be59ceb24e8d9a60c9f.html
Заголовок, (Title) документа по адресу, URL1:
Dynamic program analysis - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)