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

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

Виды динамического анализа

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

Вычисление покрытие кода в соответствии с набором тестов или рабочей нагрузкой - это стандартный метод динамического анализа.

  • Gcov это программа покрытия исходного кода GNU.
  • VB Смотреть внедряет код динамического анализа в программы Visual Basic для мониторинга покрытие кода, стек вызовов, трассировка выполнения, экземпляры объектов и переменных.

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

Локализация неисправности

Локализация ошибки относится к обнаружению кода с ошибкой (например, оператора с ошибкой) в соответствии с неудачными и успешными тестовыми случаями. Например, Tarantula - это хорошо известный подход к локализации неисправностей, основанный на покрываемом коде.[2] Локализация сбоев иллюстрирует важное свойство динамического анализа: результаты анализа зависят от рассматриваемой рабочей нагрузки, входных данных или тестовых примеров. Было показано, что для локализации сбоев можно провести рефакторинг тестовых примеров, чтобы получить лучшие результаты.[3]

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

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

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

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

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

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

  • Parasoft Jtest использует обнаружение ошибок во время выполнения, чтобы выявить такие дефекты, как условия гонки, исключения, утечки ресурсов и памяти, а также уязвимости атак безопасности.
  • Intel Thread Checker это инструмент анализа ошибок потоковой передачи во время выполнения, который может обнаруживать потенциальные гонки данных и взаимоблокировки в многопоточный Приложения для Windows или Linux.
  • Intel Parallel Inspector выполняет распараллеливание во время выполнения и анализ ошибок памяти в Windows.
  • Parasoft Страхование ++ это инструмент для анализа оперативной памяти и обнаружения ошибок. Его компонент Inuse обеспечивает графическое представление распределения памяти с течением времени, с особым обзором общего использования кучи, распределения блоков, возможных невыполненных утечек и т. Д.

Программа нарезки

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

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

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

  • Призма из КритическийСиний - это инструмент, который динамически отслеживает программные приложения во время выполнения и собирает данные, которые можно использовать для анализа и выявления причин низкой производительности.

Методы

Большинство методов динамического анализа основаны на каком-то инструментарий кода или трансформация.

  • DynInst - это библиотека для исправления кода среды выполнения, которая полезна при разработке зондов динамического анализа программ и их применении к скомпилированным исполняемым файлам. Dyninst не требует исходного кода или перекомпиляции в целом, однако исполняемые файлы без удаления и исполняемые файлы с отладочными символами легче инструментировать.
  • Iroh.js - это библиотека анализа кода времени выполнения для JavaScript. Он отслеживает путь выполнения кода, предоставляет слушателей времени выполнения для прослушивания определенных шаблонов исполняемого кода и позволяет перехватывать и управлять поведением выполнения программы.

Смотрите также

Рекомендации

  1. ^ Майерс, Г. Дж. (1979). Искусство тестирования программного обеспечения. Джон Уайли и сыновья.
  2. ^ Джонс, Джеймс А .; Харролд, Мэри Джин (2005). «Эмпирическая оценка методики автоматической локализации разломов птицеедов». Материалы 20-й международной конференции IEEE / ACM по автоматизированной разработке программного обеспечения - ASE '05. ACM. С. 273–282. Дои:10.1145/1101908.1101949. ISBN  1581139934.
  3. ^ Сюань, Цзифэн; Монперрус, Мартин (2014). «Очистка тестового примера для улучшения локализации неисправностей». Материалы 22-го Международного симпозиума ACM SIGSOFT по основам программной инженерии - FSE 2014. С. 52–63. CiteSeerX  10.1.1.477.2525. Дои:10.1145/2635868.2635906. ISBN  9781450330565.