Дельта-отладка - Delta debugging

Дельта-отладка это методика автоматизации отладка программ, использующих научный подход цикла гипотеза-проба-результат. Эта методология была впервые разработана Андреасом Целлером из Саарландского университета в 1999 году.[1]

На практике алгоритм дельта-отладки основан на модульное тестирование для автоматического выявления причин отказа - систематически сужая количество причин, вызывающих отказ, до тех пор, пока не останется минимальный набор. Например, если вы можете предоставить тестовый пример, который приведет к возникновению ошибки, которую вы ищете, то вы можете передать это алгоритму Delta Debugging, который затем просто попытается обрезать бесполезные функции и строки кода, которые не нужны для воспроизведения. ошибка, пока не будет найдена 1-минимальная программа.

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

Позже некоторые инструменты разработки программного обеспечения были вдохновлены Delta Debugging, например команды пополам из контроль версий системы (например, git-bisect, svn-bisect, hg-bisect и т. д.), которые вместо работы над кодом программы применяют методологию дельта-отладки в истории кода, сравнивая различные версии до тех пор, пока не будет обнаружено ошибочное изменение.

Недавно, Минимизация сетевого диалога предлагается метод, основанный на дельта-отладке, чтобы найти наименьшее подмножество сетевого трафика из исходного диалога, которое при воспроизведении все еще достигает той же цели, что и исходный диалог [2]

Программного обеспечения

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

использованная литература

  • Андреас Целлер: Почему программы не работают: руководство по систематической отладке, Морган Кауфманн, ISBN  1-55860-866-4
  • Изучение истории кода Презентация на Google Tech Talk от изобретателя Delta Debugging
  1. ^ Целлер, Андреас (1999). «Вчера моя программа работала. Сегодня не работает. Почему?». Программная инженерия - ESEC / FSE '99. Конспект лекций по информатике. 1687 (Разработка программного обеспечения - ESEC / FSE’99 DOI: 10.1007 / 3-540-48166-4_16 ред.). Springer. С. 253–267. Дои:10.1007/3-540-48166-4_16. ISBN  978-3-540-66538-0.
  2. ^ М. Зубайр Рафик; и другие. «Минимизация сетевого диалога и его различие: два новых примитива для приложений сетевой безопасности» (PDF). В материалах 30-й ежегодной конференции по приложениям компьютерной безопасности (ACSAC 2014). ACM.
  3. ^ danielwilkerson.com
  4. ^ «Обнаружение программных ошибок с помощью генетических алгоритмов». 2014-03-05. Получено 22 июля 2015.

внешние ссылки