Методы отладки программного обеспечения
Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. Большинство ошибок можно обнаружить по косвенным признакам посредством тщательного анализа текстов программ и результатов тестирования без получения дополнительной информации. При этом используют различные методы:
• ручного тестирования;
• индукции;
• дедукции;
• обратного прослеживания.
Метод ручного тестирования. Это - самый простой и естественный способ данной группы. При обнаружении ошибки необходимо выполнить тестируемую программу вручную, используя тестовый набор, при работе с которым была обнаружена ошибка.
Метод очень эффективен, но не применим для больших программ, программ со сложными вычислениями и в тех случаях, когда ошибка связана с неверным представлением программиста о выполнении некоторых операций.
Данный метод часто используют как составную часть других методов отладки.
Метод индукции.Метод основан на тщательном анализе симптомов ошибки, которыемогут проявляться как неверные результатывычислений или как сообщение об ошибке.Если компьютер просто «зависает», то фрагмент проявления ошибки вычисляют, исходяиз последних полученных результатов и действий пользователя. Полученную таким образом информацию организуют и тщательноизучают, просматривая соответствующийфрагмент программы. В результате этих действий выдвигают гипотезы об ошибках, каждую из которых проверяют. Если гипотезаверна, то детализируют информацию обошибке, иначе - выдвигают другую гипотезу.Последовательность выполнения отладки методом индукции показана на рис. 11.3 в видесхемы алгоритма.
Самый ответственный этап – выявлениесимптомов ошибки. Организуя данные обошибке, целесообразно записать все, что известно о ее проявлениях, причем фиксируюткак ситуации, в которых фрагмент с ошибкойвыполняется нормально, так и ситуации, в которых ошибка проявляется. Если в результатеизучения данных никаких гипотез не появляется, то необходима дополнительная информация об ошибке. Дополнительную информацию можно получить, например, в результатевыполнения схожих тестов.
В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.
Метод дедукции.По методу дедукции вначале формируют множество причин, которые могли бы вызвать данное проявление ошибки. Затем, анализируя причины, исключают те, которые противоречат имеющимся данным. Если все причины исключены, то следует выполнить дополнительное тестирование исследуемого фрагмента. В противном случае наиболее вероятную гипотезу пытаются доказать. Если гипотеза объясняет полученные признаки ошибки, то ошибка найдена, если иначе - проверяют следующую причину (рис. 11.4).
Рис. 11.3. Схема процесса отладки методом индукции
Рис. 11.4. Схема процесса отладки методом дедукции
Метод обратного прослеживания.Для небольших программ эффективно применение метода обратного прослеживания. Начинают с точки вывода неправильного результата. Для этой точки строится гипотеза о значениях основных переменных, которые могли бы привести к получению имеющегося результата. Далее, исходя из этой гипотезы, делают предположения о значениях переменных в предыдущей точке. Процесс продолжают, пока не обнаружат причину ошибки.