Динамический анализ кода (англ. Dynamic program analysis) — анализ программного обеспечения, производящийся при помощи выполнения программ на реальном или виртуальном процессоре (в отличие от статического анализа). Утилиты динамического анализа могут требовать загрузки специальных библиотек, перекомпиляцию программного кода. Некоторые утилиты могут инструментировать исполняемый код в процессе исполнения или перед ним. Для большей эффективности динамического анализа требуется подача тестируемой программе достаточного количества входных данных, чтобы получить более полное покрытие кода. Также следует позаботиться о минимизации воздействия инструментирования на исполнение тестируемой программы (включая временные характеристики).

Примеры утилит

править
  • Valgrind[1], выполняет программу на виртуальном процессоре, может обнаруживать ошибки памяти (например, связанные с неверным использованием функций malloc и free), ситуации гонки потоков (race conditions) в многопоточных программах.
  • Pin[1]
  • DynamoRIO[1]
  • Dmalloc, библиотека для проверки выделения и освобождения памяти, а также утечек памяти, повторного освобождения и т. п. Программа должна быть перекомпилирована, кроме того, во все файлы необходимо подключить заголовочный файл языка Си dmalloc.h для получения более точных отчетов.
  • jTracert (недоступная ссылка), Java агент (загружаемый с помощью аргумента -javaagent:), который инструментирует код существующих приложений, работающих в виртуальной машине JVM, и автоматически строит диаграммы последовательности (sequence diagrams).
  • Daikon — реализация динамического детектора инвариантов. Проводится поиск значений, вычисляемых программой и поиск свойств, которые были верны при запуске, и, наиболее вероятно, будут верны при всех запусках.
  • DynInst — библиотека, модифицирующая код во время исполнения. Полезна при разработке программ динамического анализа, помогает добавлять в тестируемое ПО отладочные точки (probes). В основном, Dyninst не требует перекомпиляции программ, однако, non-stripped executables и исполняемые файлы с отладочной информацией проще поддаются инструментированию.
  • Holodeck от компании Security innovation is a fault simulation tool for dynamic analysis and fragility/security testing of Windows programs.
  • IBM Rational Purify: в основном детектирует ошибки при работе с памятью (выход за переделы массивов, утечки памяти).
  • BoundsChecker: возможности, схожие с IBM Purify.
  • VB Watch добавляет код динамического анализа в программы на языке Visual Basic для мониторинга их производительности, стека вызовов, трассы исполнения, instantiated objects, variables и покрытия кода.
  • Insure++ — анализатор памяти и детектор ошибок. Компонент Inuse позволяет увидеть графически историю выделения памяти, анализировать использование кучи, искать утечки памяти и т. п.
  • Intel Thread Checker — анализатор ошибок в многопоточных приложениях. Обнаруживает ошибки конкурентного доступа к данным и ситуации взаимоблокировок. Работает с приложениями для ОС Windows и Linux.
  • CHESS — инструмент для тестирования многопоточных .Net (управляемых) и Win32, 64 программ

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

Исторические примеры

править
  • IBM OLIVER: интерактивная система тестирования и отладки CICS, использующая симулятор набора команд
  • SIMON анализатор пакетных программ, система тестирования и отладки, использующая симулятор
  • SIMMON: внутренний симулятор IBM, применявшийся при разработке компонент ОС, утилит и процессоров ввода-вывода

См. также

править

Примечания

править
  1. 1 2 3 Static and dynamic testing in the software development life cycle. Дата обращения: 14 января 2016. Архивировано 7 сентября 2018 года.

Ссылки

править

📚 Artikel Terkait di Wikipedia

Статический анализ кода

both static and dynamic analyses should be specified by the applicant/developer and applied to the software.» Bill Graham. Static Analysis, Safety-Critical

Перакис, Джорджия

the 2nd Annual Symposium of the Singapore MIT Alliance Program, Singapore: January 2002. «Dynamic Phenomena in Transportation and Related Systems.» Georgia

Шаблон проектирования

Архивировано 13 декабря 2014 года. Peter Norvig — Design Patterns in Dynamic Languages (slides) . Дата обращения: 5 декабря 2014. Архивировано 12 декабря

SimScale

Simulation Project: Dynamic nonlinear impact analysis of a skull.  Архивировано 30 августа 2017 года. SimScale Simulation Project: Linear analysis of a multibody

Python

несколько раз для различного содержимого SkipMontanaro. Why is Python a dynamic language and also a strongly typed language - Python Wiki (англ.). wiki

Список портов TCP и UDP

Архивировано 11 апреля 2008 года. RFC 1068 — Background File Transfer Program (BFTP) Cisco Document ID: 7244, Understanding Simple Network Management

Tor

работают не во всех случаях. Эксперты из ESIEA[англ.] в своём докладе «Dynamic Cryptographic Backdoors Part II Taking Control over the TOR Network». Архивная

Словения

Lake or Floodplain? Mid-Holocene Settlement Patterns and the Landscape Dynamic of the Izica Floodplain (Ljubljana Marsh, Slovenia). The Holocene. 20 (8):