Рекомендации по отладке
1. Используйте систематический, продуманный заранее подход к отладке. Планируйте процесс отладки и тщательно проектируйте тестовые наборы данных, начиная с наиболее простых вариантов, вначале исключая наименее вероятные источники ошибок.
Для упорядочения процесса тестирования собирайте и анализируйте информацию:
• об особенностях и статистике ошибок;
• о специфике исходных данных и последовательности изменения переменных в программе и их взаимном влиянии;
• о структуре алгоритма и особенностях его программной реализации.
2. В каждый момент времени определяйте местоположение одной ошибки.
3. Используйте средства регистрации и отображения информации об ошибках, включая в программу специальный отладочный код для распечатки выборочных значений переменных, сообщений об окончании отдельных участков программы, трассировки логических условий и т.п.
4. Тщательно изучайте полученные выходные данные и сравнивайте их с ожидаемыми, заранее просчитанными результатами.
5. Обращайте особое внимание на данные, обрабатываемые программой, поскольку функционирование программы — это обработка потока данных. Тщательно анализируйте работу программы для граничных значений проверяемых условий, а также при неправильных входных данных, когда необходимо контролировать ошибки, относящиеся к данным. Контролируйте типы данных, диапазоны их значений, размеры полей и конкретные значения переменных и их точность.
6. Используйте совместный анализ потоков данных и потоков управления для проверки корректности в установлении областей определения данных для разных маршрутов выполнения программы.
7. Используйте одновременно различные средства отладки, не останавливайтесь на одной возможности. Привлекайте наиболее мощные автоматизированные средства и одновремейно применяйте ручные методы отладки и тестирования за рабочим столом, проверяя текст программы (индивидуально или группой) с точки зрения ее функционирования и с учетом наиболее вероятных ошибок.
8. Документируйте все обнаруженные и исправленные ошибки, отмечая, где они были найдены, и указывая тип ошибки. Эта информация будет полезной для предсказания источников ошибок в будущем. (Каждый программист имеет свой профиль ошибок, т.е. склонность к ошибкам определенного типа.)
9. Измеряйте сложность программ. Программы (модули) с высоким цикломатическим числом имеют более высокую предрасположенность к ошибкам и будут, вероятно, требовать большего времени для их обнаружения и исправления. В программах с высокой сложностью более высока вероятность ошибок спецификаций и проектирования, а с низкой сложностью — кодирования и канцелярских огцибок.
10. Дл»1 повышения опыта и тренировки в отладке программ используйте программы с искусственно помещенными в них ошибками. После определенного периода отладки программисту следует указать на. оставшиеся необнаруженные ошибки.
Подобное "засеивание" программы дополнительными ошибками широко используется для оценки числа необнаруженных реальных ошибок. Действительно, если предположить, что во время тестирования и отладки с равной вероятностью обнаруживаются и искусственные, и реальные ошибки, то по проценту соотношения обнаруженных внесенных и реальных ошибок можно высказать предположение о числе оставшихся необнаруженных ошибок в программе.