Дмитрий Михайлович Беляев
Эксперт по предмету «Информатика»
Задать вопрос автору статьи
Отладка программы – это процесс поиска и устранения ошибок в программе, который производится после её прогона на компьютере.Тестирование – это процесс проверки правильности работы всей программы или ее составных частей.
Отладка производится для локализации и устранения синтаксических ошибок и явных ошибок кодирования. При тестировании проводится проверка работоспособности программы, которая не содержит явных ошибок. При тестировании устанавливается факт наличия ошибок, а отладка проводится для выяснения ее причины.
Термин debugging (с англ – отладка) дословно обозначает «вылавливание жучков». Он появился в 1945 г. после случая, когда компьютер «Марк-1» прекратил работу вследствие попадания в его электрические цепи мотылька, который заблокировал одно из реле вычислительной машины.
Отладка программы
В современных системах программирования (например, Turbo C, Turbo Pascal, Turbo Basic и др.) отладку осуществляет зачастую специальное программное средство – отладчик, который позволяет исследовать внутреннее поведение программы.
- выполнение пошагового исполнения программы с остановкой после каждого оператора;
- возможность просмотра текущего значения любой переменной или нахождения значения любого выражения; в случае необходимости можно задать новое значение переменной;
- можно установить в программе контрольные точки – точки, в которых программа временно прекращает свое выполнение. Это позволяет выполнить оценку промежуточных результатов и др.
При выполнении отладки программы нужно придерживаться следующих правил:
- на начальном этапе проведения отладки нужно использовать простые тестовые данные;
- возникающие ошибки устранять строго по очереди;
- помнить, что причина ошибок – не машина. Современные ПК и программы-трансляторы наделены достаточно высокой надежностью.
«Отладка и тестирование программы» 👇
Тест и тестирование
Если программа прошла отладку и явные ошибки не выявляются, пригодность программы для работы, которая является решающей характеристикой, устанавливает контроль программы по результатам ее выполнения на системе тестов.
Программу условно считают правильной, если при ее запуске для выбранных тестовых исходных данных она во всех случаях позволяет получать правильные результаты.
По замечанию известного теоретика программирования Э. Дейкстра, тестирование показывает только наличие ошибок, а не их отсутствие. Нередко бывает, что при вводе новых входных данных вызывается «отказ» или получают неверные результаты работы программы, которая была полностью отлажена.
Для выполнения тестирования должны быть подготовлены или заранее известны эталонные результаты, которые вычислять необходимо до получения машинных результатов, а не после. В обратном случае можно получить невольно подогнанные вычисляемые значения под желаемые, которые были ранее получены на машине.
Тестовые данные
Обеспечение проверки всех возможных условий возникновения ошибок должно ложится на правильно подобранные тестовые данные:
- должны обеспечить испытание каждой ветви алгоритма;
- при очередном тестовом прогоне должен выполняться контроль того, что еще не было протестировано при предыдущих прогонах;
- первый тест должен быть максимально простым для обеспечения проверки работы программы вообще;
- для снижения объема вычислений в тестах должны быть предельно упрощены арифметические операции;
- число элементов последовательностей, число проходов цикла, точность итерационных вычислений тестовых примеров должны задаваться с позиции сокращения объема вычислений;
- уменьшение количества вычислений не должна приводить к снижению надежности контроля;
- целенаправленность и системность тестирования, т.к. случайный выбор исходных данных может привести к трудностям в определении ожидаемых результатов ручным способом, к невозможности проверить многие ситуации;
- постепенное усложнение тестовых данных.
Рассмотрим на примере систему тестовых данных для задачи нахождения корней квадратного уравнения ax^2+bx+c=0:
Этапы процесса тестирования
Процесс тестирования зачастую делится на 3 этапа:
- Проверка в нормальных условиях – проведение тестирования на основе данных, характерных для реальных условий функционирования программы.
- Проверка в экстремальных условиях. В тестовые данные входят граничные значения области изменения входных переменных, воспринимающиеся программой как правильные данные. Типичные примеры таких значений: очень маленькие или очень большие числа; отсутствие данных; граничные объемы данных (например, массив из слишком малого или слишком большого числа элементов).
- Проверка в исключительных ситуациях проводится на значениях данных, которые лежат за пределами допустимой области изменений.
При подготовке тестовых данных и проведении тестирования нужно учитывать следующие моменты:
- каким будет результат работы программы, которая не рассчитана на обработку отрицательных или нулевых значений переменных, в случае обработки таких данных?
- каков будет результат работы программы, которая обрабатывает массивы, если число их элементов превысит величину, указанную в объявлении массива?
- что произойдет в случае слишком малых или слишком больших чисел?
Наихудшей ситуацией может быть случай, когда программа воспринимает неверные данные в качестве правильных, и выдает в результате неверный, но правдоподобный результат.
При составлении программы нужно продумать вариант, чтобы она сама отвергала любые данные, которые она не в состоянии обрабатывать правильно.
Находи статьи и создавай свой список литературы по ГОСТу
Поиск по теме
Екатерина Андреевна Гапонько
Виды ошибок
Ошибки в программах могут допускаться от самого начального этапа составления алгоритма решения задачи до окончательного оформления программы. Разновидностей ошибок достаточно много. Рассмотрим некоторые группы ошибок и соответствующие примеры:
Рассмотрим более подробно некоторые из вышеприведенных видов ошибок.
Синтаксические ошибки
Синтаксические ошибки зачастую выявляют уже на этапе трансляции. К сожалению, многие ошибки других видов транслятор выявить не в силах, т.к. ему не известен задуманный или требуемый результат работы программы.
Отсутствие сообщений транслятора о наличии синтаксических ошибок является необходимым условием правильности программы, но не может свидетельствовать о том, что она даст правильный результат.
Примерами синтаксических ошибок является:
- отсутствие знака пунктуации;
- несоответствие количества открывающих и закрывающих скобок;
- неправильно сформированный оператор;
- неправильная запись имени переменной;
- ошибка в написании служебных слов;
- отсутствие условия окончания цикла;
- отсутствие описания массивов и т.п.
Синтаксическая ошибка «Не задан идентификатор»:
Ошибки, которые не обнаруживает транслятор
В случае правильного написания операторов в программе может присутствовать большое количество ошибок, которые транслятор не может обнаружить. Рассмотрим примеры таких ошибок:
«Ошибки в программах » 👇
- после проверки заданного условия неправильно указана ветвь алгоритма;
- неполный перечень возможных условий при решении задачи;
- один или более блоков алгоритма в программе пропущен.
Ошибки в циклах:
- неправильно указано начало цикла;
- неправильно указаны условия окончания цикла;
- неправильно указано количество повторений цикла;
- использование бесконечного цикла.
Ошибки ввода-вывода; ошибки при работе с данными:
- неправильно задан тип данных;
- организовано считывание меньшего или большего объёма данных, чем нужно;
- неправильно отредактированы данные.
Ошибки в использовании переменных:
- используются переменных, для которых не указаны начальные значения;
- ошибочно указана одна переменная вместо другой.
Ошибки при работе с массивами:
- пропущено предварительное обнуление массивов;
- неправильное описание массивов;
- индексы массивов следуют в ошибочном порядке.
Ошибки в арифметических операциях:
- неправильное использование типа переменной (например, для сохранения результата деления используется целочисленная переменная);
- неправильно определен порядок действий;
- выполняется деление на нуль;
- при расчете выполняется попытка извлечения квадратного корня из отрицательного числа;
- не учитываются значащие разряды числа.
Ошибка в арифметических операциях «Деление на нуль»:
Все вышеописанные ошибки можно обнаружить методом тестирования.
Сопровождение программы
Сопровождением программ называются работы по обслуживанию программ в процессе их эксплуатации.
В случае многократного использования разработанной программы для решения различных задач определенного класса требуется проведение таких дополнительных работ, как:
- при обнаружении ошибок работы программы они должны исправляться;
- при изменении требований эксплуатации необходимая модификация программы;
- выполнение доработки программы с целью решения конкретных задач;
- выполнение дополнительных тестовых расчетов;
- внесение исправлений в рабочую документацию;
- улучшение программы и т.д.
При проведении работ по сопровождению многих программ стоимость этого сопровождения превышает половину затрат, которые приходятся на весь период времени существования программы (от разработки начального алгоритма до морального ее устаревания).
Программа, которая предназначена для длительной эксплуатации, должна сопровождаться соответствующей документацией и инструкцией по ее использованию.