Файл: Отладка и тестирование программ: основные подходы и ограничения.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 06.04.2023

Просмотров: 282

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Программы должны быть оформлены в соответствии с определенными требованиями. В настоящее время действует единая система программной документации (ЕСПД), устанавливающая правила разработки, оформления программ и программной документации. ЕСПД определяет и правила оформления блок-схем алгоритмов (ГОСТ 10.002-80 ЕСПД, ГОСТ 10.003-80 ЕСПД). [13, с. 17]

Отладка программы является процессом обнаружения и исправления ошибок. Программные ошибки представлены двумя классами: синтаксическими (синтаксис языка программирования) и алгоритмическими (логическими).

Выявление синтаксических ошибок происходит во время компилирования программы – они являются наиболее простыми с точки зрения исправления ошибки. Выявление алгоритмических ошибок программы гораздо сложнее: программа работает, но результат выдается неверный. Чтобы обнаружить такие ошибки пользуются тестированием программы. [5, с. 35]

Тестирование является процессом выполнения программ для выявления (обнаружения) ошибок. Существуют разные способы тестирования программ.

Тестирование программы как «черного ящика» является тестированием, при котором анализируются входные данные и результаты работы программы. Исчерпывается входное тестирование использованием всех возможных наборов входных данных.

Тестирование программы как «белого ящика» заключается в управлении логикой программы, позволяющей использование ее внутренней структуры. Оно исчерпывается тестированием всех маршрутов и управляющих структур программы.

Разумной и реальной стратегией тестирования является сочетание моделей «черного» и «белого ящиков». [9, с. 35]

Проектируя процедуры тестирования используют несколько тестов с наивысшей вероятностью обнаружения большинства ошибок. Для исчерпывающего тестирования предусматривают создание эквивалентных разбиений входных параметров двух классов: правильных входных данных и неправильных (ошибочных). Для каждого класса эквивалентности строится свой тест. Класс эквивалентности тестов - такое множество тестов, выполнение алгоритма на одном из которых гарантирует аналогичный результат прогона для других.

Из всего выше изложенного следует, что тестирование заключается в составлении наборов тестов (входные данные – ожидаемый результат), охватывающих все ветки прохождения алгоритма.

Есть золотое правило программистов – оформлять свои программы в том виде, в каком бы они хотели видеть программы, написанные другими. Каждый конечный программный продукт необходимо документированно сопровождать в виде помощи (help), файлового текста (readme.txt). [5, с. 36]


1.2. Отладка программ

Рассмотрим подробнее процесс отладки программ. По общей методической схеме описания каждая конкретная система программирования (СП) состоит из следующих компонент: среды, режимов работы, системы команд, данных.

Среда системы программирования - это обстановка на экране (системная оболочка), в которой работает пользователь СП.

Определенной стандартизацией оболочек систем программирования обязаны появлению турбо-систем фирмы Borland. Такие среды имеют на экране две компоненты: окно редактора с текстом программы и меню команд, переключающее режимы работы системы. [7, с. 273]

Характерные режимы работы СП состоят из:

— режима редактирования текста программы;

— режима компиляции;

— режима исполнения;

— режима работы с файлами;

— режима помощи;

— режима отладки программы.

Режим редактирования обычно установлен автоматически при инициализации работы системы с использованием встроенного в систему текстового редактора. [7, с. 273]

Режимом компиляции обладают системы, обслуживающие компилируемые языки (Паскаль, СИ, Фортран и пр.). Результат компиляции - исполняемая программа, т.е. программа на машинном языке команд. В некоторых случаях исполняемая программа получается в результате двух этапов: собственно компиляции и редактирования связей.

Режим исполнения. В компилирующих системах в режиме исполнения выполняется полученная после трансляции программа в машинных командах. Интерпретатором непосредственно самим выполняется программа на ЯПВУ. Так, к примеру, работает Бейсик-система. Обычно программа исполняется по команде RUN.

Режим работы с файлами. В файлах на внешних носителях предусмотрено хранение системой текстов программ на исходном языке; программ, полученных в результате трансляции; исходных данных и конечных результатов. В файловом режиме выполнение традиционных операций: сохранения информации в файле, прочтения информации из файла в оперативную память, именования файла и пр. Этот режим включает и команду вывода содержимого окна редактора на печать, так как печать - это вывод информации в файл, связанный с принтером. [7, с. 274]

С помощью режима помощи программисты получают подсказку на экране, которая помогает им в работе с системой и с языком программирования.

Режим отладки. Этот режим чаще всего реализован в развитых СП на профессиональных компьютерах. В режиме отладки имеется возможность производить трассировку, пошагового исполнения программ; прослеживания за изменением определенных величин; назначения остановки исполнения программ в определенных местах или при определенных условиях. Режимом отладки предоставляются программисту удобные средства для поиска алгоритмических ошибок в программах. [7, С. 274]


Отладка программы является специальным этапом в разработке программы, выявляющим и устраняющим обнаруженные программные ошибки. Программные ошибки, как правило, бывают трех видов:

  1. Синтаксические ошибки, заключающиеся в неправильном употреблении синтаксических конструкций, к примеру употребление оператора цикла For без tо или Next.
  2. Семантические ошибки, заключающиеся в нарушении семантики какой-либо конструкции, к примеру передача функции параметров, не соответствующих ее аргументам.
  3. Логические ошибки, проявляющиеся в нарушении логики программ и приводящие к неверному результату. Это наиболее трудно обнаруживаемый тип ошибки, поскольку они, как правило, ошибки алгоритмов и их нужно тщательно анализировать и всесторонне тестировать. [18]

Так как безошибочно программировать почти невозможно, а вручную отлаживать немыслимо, нужны средства поиска ошибок (иногда это не так просто) и их исправления. В иных случаях можно просто обходить возможные появления ошибок с использованием специальных методов.

Каждая современная система программирования наделена специальным средством отладки программ — отладчиком (debugger), позволяющим в режиме интерпретации устанавливать контрольные точки, выполнять отдельные участки программы и просмотреть результаты работы операторов. [18]

Delphi снабжен мощным встроенным отладчиком, значительно упрощающим отладку программ. Основные инструменты отладки - точки контрольного останова и окно наблюдения за переменными.

Точки контрольного останова

Точка контрольного останова определяет оператор в программе, перед выполнением которого программа прерывает свою работу, и управление передается среде Delphi. Точка останова задается опцией View|Debug windows|Breakponts.

Окно точек останова состоит из списка всех установленных в проекте точек, перед выполнением которых приостанавливается работа программы и передается управление среде Delphi. [18]

Для добавления новой точки нужно щелкнуть по окну правой кнопкой мыши и выбрать опцию Add. Появится окно, в котором можно указать положение добавляемой точки:

FileName – определяет имя файла;

Line number – номер строки от начала файла (в момент появления окна оно содержит файл и строку с текстовым курсором);

Condition – можно указать условие останова в виде логического выражения (например, MyValue = Мах-Value-12);

Pass count – число проходов программы через контрольную точку без прерывания вычислений. [11, с. 600-601]

Окно наблюдения


Наблюдать за состоянием переменной или выражения можно в специальном окне, вызываемом опцией View|Debug windows|Watches.

Окно наблюдения используется в отладочном режиме для наблюдения за изменением значений выражений, помещенных в это окно.

Для добавления нового выражения нужно щелкнуть по окну правой кнопкой мыши и выбрать опцию New Watch. В строке Expression ввести выражение. Окном Repeat count определяется количество показываемых элементов массивов данных; окном Digits указывается количество значащих цифр для отображения вещественных данных; переключателем Enabled разрешается или запрещается вычисление выражения. Остальные элементы определяют вид представления значения.

Значения переменных можно также посмотреть во время останова программы, наведя курсор мыши на переменную в тексте кода. [11, С. 601-603]

Принудительное прерывание работы программы

Если программа запущена из среды Delphi, ее работа может быть прервана в любой момент с помощью клавиш Ctrl+F2, кнопки ESC, опцией Run|Program Pause или установкой точки контрольного останова в той части программы, которая выполняется в данный момент или будет выполнена.

Трассировка программы

Перед исполнением оператора с установленной точкой контрольного останова, работа программы приостанавливается, управление передается среде Delphi, a в окне наблюдения отражается текущее значение наблюдаемых переменных и/или выражений.

Теперь программист может прослеживать работу программы по шагам посредством клавиш F7 и F8 или инструментальных кнопок. При нажатии клавиши F8 будут выполнены запрограммированные в текущей строке действия, и работа программы приостановится перед выполнением следующей строки текста программы. [11, с. 603]

Контрольная точка останова выделена по умолчанию красным цветом, а текущая прослеживаемая строка – синим. Если программа остановлена в контрольной точке, т.е. при совпадении текущей строки со строкой останова, строка выделится красным цветом. Текущая строка особо выделяется в служебной зоне слева в окне редактора.

Для установки/снятия точки контрольного останова нужно щелкнуть мышью по служебной зоне слева от нужной строки или установить в эту строку текстовый курсор и нажать клавишу F5. [11, с. 604]

При нажатии клавиши F7 выполняются те же действия, что и при нажатии клавиши F8, но, если текущая строка содержит вызов подпрограммы пользователя, программа приостановит свою работу перед выполнением первого исполняемого оператора этой подпрограммы, т.е. клавиша F7 позволяет отслеживать работу вызываемых подпрограмм.


После трассировки нужного фрагмента программы возможно продолжение нормальной ее работы нажатием клавиши F9. [19]

Действия в точках прерывания

В Delphi с любой точкой можно связать одно или несколько действий. Для этого нужно активизировать окно точек останова, вызвать его локальное меню (щелчком правой кнопкой) и выбрать продолжение Properties. В появившемся окне свойств щелкнуть по кнопке Advanced.

В нижней части окна имеется панель Actions, которая и определяет действия для точки останова, указанной в верхней части окна:

· Break – останов перед выполнением помеченного оператора;

· Ignore subsequent exceptions – при установке переключателя игнорируются все возможные последующие исключения в текущем отладочном сеансе до очередной точки останова, в которой, возможно, это действие будет отменено;

· Handle subsequent exceptions – установка этого переключателя отменяет действие предыдущего переключателя и возобновляет обработку возможных исключений;

· Log message – возможно указание произвольного сообщения, связанного с точкой останова;

· Eval expression – возможно вычисление некоторого выражения и помещение его результата в это сообщение. [11, С. 604-606]

Группировка точек прерывания

В Delphi возможно объединить точки останова в группы. Для этого используется все то же окно: в строке Group указывается имя группы, к которой принадлежит точка, а в строках Enable group и Disable group соответственно разрешить или запретить действие всех точек останова, относящихся к соответствующей группе. [11, с. 606]

Вычисление выражений и изменение значений

С помощью окна Evaluate/Modify опции Run можно узнать значение любого выражения или установить в переменную другое значение. Это окно вызывается в режиме отладки после нажатия Ctrl+F7. [11, с. 606]

В строке Expression можно написать имя переменной или интересующее пользователя выражение. После щелчка по кнопке Evaluate в поле Result появится текущее значение переменной (выражения). Если в Expression содержится имя переменной, одновременно становится доступной кнопка Modify, а в строке New value повторяется текущее значение переменной. Если изменить эту строку и нажать Modify, переменная примет новое значение, которое и будет использоваться при дальнейшем прогоне программы (если определяется значение выражения, кнопка Modify и строка New value будут недоступны).

Возможно использование дополнительных кнопок этого окна Watch и Inspect. При щелчке по кнопке Watch выражение (переменная) из окна Evaluate будет перенесено в окно наблюдений Watch, щелчок по второй отображает выражение (переменную) в специальном окне Inspect. [19]