Заповеди отладки программного средства
Классификация ошибок
Трудно дать универсальную всеобъемлющую классификацию ошибок в программах, поскольку для каждого языка программирования существует свое характерное подмножество ошибок. Попытаемся рассмотреть классификацию ошибок по причине их появления, т. е. не с точки зрения языка программирования, а с точки зрения процесса разработки.
1. Синтаксические ошибки
Синтаксические ошибки выявляются транслятором, поэтому их устранение не вызывает особых трудностей.
2. Опечатки
Опечатки, как правило, вызваны невнимательностью программиста при механическом наборе или редактировании исходного текста. В результате появляется синтаксически правильный, но абсолютно неверный логически участок программы.
3. Ошибки реализации алгоритма
Под эту категорию подпадают все ошибки, вызванные неверным программированием при верном алгоритме. Этот тип ошибок, по-видимому, является самым распространенным и наиболее трудно классифицируемым.
4. Ошибки алгоритма
Алгоритм может содержать логические ошибки, которые закономерно приводят к ошибочной работе программы даже при безупречной программной реализации. Такие ошибки очень тяжело выявлять, поскольку они интерферируют с неизбежными ошибками реализации, и предположение об их наличии делается программистом в самую последнюю очередь.
К ошибкам алгоритма относят также отсутствие в алгоритме учета ограничений реализуемого им метода. Такие ограничения на применимость метода, как правило, хорошо описаны, однако иногда в алгоритме пытаются обобщить метод без достаточных оснований.
5. Ошибки метода
Каждый метод должен сопровождаться описанием или оценкой вычислительных погрешностей и других ограничений, снижающих его универсальность. Отсутствие таких оценок может привести к неверной работе программы, реализующей данный метод.
В этом разделе даются общие рекомендации по организации отладки ПС. Но сначала следует отметить некоторый феномен, который подтверждает важность предупреждения ошибок на предыдущих этапах разработки: по мере роста числа обнаруженных и исправленных ошибок в ПС растет относительная вероятность существования в нем необнаруженных ошибок. Это объясняется тем, что при росте числа ошибок, обнаруженных в ПС, уточняется и наше представление об общем числе допущенных в нем ошибок, а значит, в какой-то мере, и о числе необнаруженных еще ошибок.
Ниже приводятся рекомендации по организации отладки в форме заповедей.
Заповедь 1. Считайте тестирование ключевой задачей разработки ПС, поручайте его самым квалифицированным и одаренным программистам; нежелательно тестировать свою собственную программу.
Заповедь 2. Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы.
Заповедь 3. Готовьте тесты как для правильных, так и для неправильных данных.
Заповедь 4. Документируйте пропуск тестов через компьютер; детально изучайте результаты каждого теста; избегайте тестов, пропуск которых нельзя повторить.
Заповедь 5. Каждый модуль подключайте к программе только один раз; никогда не изменяйте программу, чтобы облегчить ее тестирование.
Заповедь 6. Пропускайте заново все тесты, связанные с проверкой работы какой-либо программы ПС или ее взаимодействия с другими программами, если в нее были внесены изменения (например, в результате устранения ошибки).