Тестирование программных средств Сафронов Сергей, 2008 год Оглавление Отладка • Определение • Характерные особенности Классификация видов отладки • • • • Грубой силы Метод индукции Метод дедукции Метод обратного отслеживания логики Принципы отладки Анализ ошибок Отладка Отладка – процесс, выполняемый после удачного выполнения теста 2 этапа отладки: Определение природы и местоположения ошибки Исправление ошибки Это психологически сложная работа: Сомнения в собственной квалификации Отладка требует огромных интеллектуальных затрат Обычно выполняется в напряженной обстановке Любая ошибка может быть в любом операторе Процесс интуитивен, не формализован Метод грубой силы Наиболее популярный класс методов, ибо не требуют значительного внимания и умственных затрат Основные типы методов: Отладка с использованием дампов памяти Отладочные печати Отладка с использованием автоматических средств Отладка с использованием дампов памяти Наименее эффективный метод (по Майерсу), тем не менее дожил до наших дней и с успехом используется хакерами Основные проблемы: Сложно установить соответствие между адресом в памяти и переменной Большой объем данных, в том числе неиспользуемых Дамп – статическое состояние, а может потребоваться динамическое Сложно поймать дамп именно в нужный момент, часто получается либо до, либо после момента ошибки Отсутствие методик Метод отладочных печатей Позволяют отследить динамику выполнения программы Этим методам характерны следующие недостатки: Работа методом проб и ошибок Часто возможна ситуация, когда требуется проанализировать большой объем данных В программу вносятся изменения Большая стоимость для больших систем Использование автоматических средств отладки Основные инструменты: Дебагеры Трейсеры Общая схема работы: Устанавливаем точку прерывания Проверяем внутреннее состояние программы (стек вызовов, значения переменных) Данные методы наиболее часто используемые Недостатки: Сложность при отладке больших систем Метод проб и ошибок для класса ошибок расхождения результатов Метод индукции Метод дедукции Обратное отслеживание логики Эффективный метод отладки для небольших программ (Майерс) Реально данный метод один из самых используемых. Сначала идет локализация критического участка методом грубой силы, далее – обратное отслеживание логики. Принципы отладки Принципы локализации ошибок Думайте! Если зашли в тупик, отложите на время решение проблемы Если зашли в тупик – изложите проблему третьему лицу Избегать экспериментальных изменений Принципы отладки Принципы исправления ошибок где есть одна, возможно есть другие Устраняйте ошибку, а не её симптомы Вероятность правильного нахождения причины ошибки не 100% Вероятность правильного определения причины ошибки падает с увеличением размера программы Проверьте правку на предмет внесения новых ошибок Перепроектирование при исправлении ошибок Изменяйте исходный код, а не объектники Анализ ошибок Когда была сделана ошибка? Кто сделал ошибку? Какова причина ошибки? Как эта ошибка могла быть предотвращена? Почему ошибка не была обнаружена ранее? Как ошибка могла быть определена ранее? Как была найдена ошибка?