Оказывается, практически невозможно составить реальную программу без ошибок, и почти невозможно для достаточно сложной программы быстро найти и устранить все имеющиеся в ней ошибки.
Таким образом, можно сказать, что наличие ошибок в только что разработанной программе - это вполне нормальное и закономерное явление. А совсем ненормальным, из ряда вон выходящим фактом, является отсутствие ошибок в программе, которая не была еще подвергнута тщательной отладке. Конечно, речь здесь идет о реальных, достаточно сложных программах. Учитывая этот печальный закон, разумно уже при разработке программы на этапах алгоритмизации и программирования готовиться к обнаружению ошибок на стадии отладки принимать профилактические меры по их предупреждению. Например, уже на этапе 2.3.2., когда выбирается общий, метод решения задачи, следует разработать и основную стратегию отладки, общий план ее проведения. Необходимо уже на этой стадии разработки программы решить, каким путем можно будет в дальнейшем убедиться, что выбранный метод решения задачи обеспечивает правильные результаты для указанных в ТЗ диапазонов изменения величин и условий функционирования программы.
|
|
Разрабатывая алгоритм, следует, таким образом, учитывать, можно ли будет достаточно просто проконтролировать программу, составленную по выбранному алгоритму, и в случае, когда предвидятся большие затруднения, нужно отдать предпочтение другому, более выгодному для этапа отладки, алгоритму.
Стремление к максимально быстрому составлению программы с целью скорейшего начала (и окончания) ее отладки, приводит к тому что: отладка затягивается надолго, получение достоверных результатов откладывается на длительный срок. Такая задержка вызывается тем, что уже на поздних этапах отладки (а иногда - и эксплуатации) вскрываются все новые и новые ошибки, допущенные на этапах алгоритмизации и программирования, и приходится тратить много времени на их обнаружение и исправление. Отсюда можно сделать вывод, что кратность внутреннего цикла (этапы 2.3.6. и 2.3.7.) становится слишком большой, и при этом захватываются и этапы 2.3.3. и 2.3.4., а иногда и кратность внешнего цикла (от этапа 2.3.2 до 2.3.9.), оказывается отличной от единицы.
Напрашивается вывод, что для ускорения отладки нужно сократить кратности указанных циклов, выходя на машину с программой уже тщательно проверенной и подготовленной заранее к отладке.
Приведем некоторое руководство к действию, имеющее целью облегчить предстоящую отладку и сократить время ее проведения.
1) Разработка общего плана проведения отладки, общей методики проверки правильности составленной программы, а также системы необходимых для отладки контрольных примеров.
|
|
2) Проверка разработанных алгоритмов, выбор отладочных средств и определение контролируемых ими мест, участков, величин.
) Проверка составленной программы, реализация намеченного ранее плана использования отладочных средств для получения на ЭВМ необходимых при локализации ошибок тестовых результатов; изготовление эталонных результатов для тестов.
) Ввод, печать и сверка текста программы, перенесенной на внешние носители.
) Получение с помощью транслятора вспомогательных таблиц (например, таблица перекрестных ссылок) и проверка их.
) Тщательный контроль первых результатов, получаемых по новой программе.
Примерное распределение между этапами общего времени, необходимого для разработки достаточно сложных программ, выглядит следующим образом:
- Получение задания, составление проекта программы и общего плана отладки 10%
- Разработка алгоритма (15%) и детального плана отладки 20%
- Программирование (5%) и изготовление тестов 15%
- Препарация и первая трансляция 5%
- Отладка 40%
- Оформление программы 10%
Приведенные цифры отражают тот факт, что в процессе разработки программы работы по доказательству (демонстрации) правильности разрабатываемой программы равнозначны работам по ее изготовлению (проектированию, алгоритмизации и написанию), что можно выразить следующей формулой:
Разработка программы =Изготовление + Доказательство.
Вопрос минимизации времени, необходимого на отладку, имеет особое значение. К его решению можно подойти с двух сторон:
1) путем ускорения поиска и исправления ошибок, имеющихся в программе;
2) путем уменьшения количества ошибок, допускаемых при разработке алгоритма и составлении программы.
Рис.2.2 Схема алгоритма отладки программы.
Тестирование
Под тестированием следует понимать процесс исполнения программы с целью обнаружения ошибок, в качестве которых принимается любое отклонение от эталонов. Хорошим считается тест, который имеет высокую вероятность обнаружения еще не выявленных ошибок.
Под отладкой понимается процесс, позволяющий получить программу, функционирующую с требуемыми характеристиками в заданной области входных данных. Таким образом, в результате отладки программа должна соответствовать некоторой фиксированной совокупности правил и показателей качества, принимаемой за эталонную для данной программы.
Существует три основных способа тестирования:
1) Алгоритмическое;
2) Аналитическое;
) Содержательное.
Алгоритмическое тестирование
Алгоритмическое тестирование применяется для контроля этапов алгоритмизации и программирования. Проектируются тесты и начинаются готовиться эталонные результаты на этапе алгоритмизации, а используются они на этапе отладки.