Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП Технология программирования.doc
Скачиваний:
20
Добавлен:
11.06.2015
Размер:
1.69 Mб
Скачать

Отладка программ. Трассировка, отладочная печать. Тестирование программы

Отладка программы или модуля – это поиск и исправление ошибок в программе, делающих её неработоспособной или работающей неверно. Ошибки в программе бывают трёх видов: синтаксические, семантические и логические. Синтаксические и семантические ошибки – это нарушение общих правил написания программ на данном языке. Логические ошибки – это неправильная реализация логики, замысла данной программы.

Отладка производится путём попытки исполнения программы на конкретных входных данных.

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

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

В обоих этих случаях система выдаёт довольно точное сообщение о месте обнаружения ошибки и её характере. Однако часто ошибка находится не там, где она обнаружена. Задача локализации ошибки (т.е. установления её точного местонахождения) довольно трудна и требует хорошего знания правил языка и тщательного анализа программы. Иногда приходится модифицировать программу, чтобы убедиться, что какие-то её участки не содержат указанной ошибки. Некоторые семантические ошибки не проявляют себя на тех входных данных, на которых ведется отладка программы. Обнаружить их помогает более систематическое тестирование программы (см. ниже).

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

Тестом называется специально разработанный набор входных данных, удовлетворяющий следующим основным требованиям:

  • известно, какой должен быть результат для правильной программы;

  • успешное прохождение теста гарантирует правильность работы программы на достаточно широком наборе входных данных;

  • достаточно простой (поддающийся анализу) ход выполнения теста.

Первое условие обеспечивает обнаружение присутствия ошибки и даёт некоторую информацию для её анализа. Второе условие говорит само за себя. Но локализовать ошибку позволяет только третье условие. Для локализации ошибки используются разные методики. Упомянем здесь трассировку и контрольные точки.

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

Контрольные точки – это специально вставляемые в заданные программистом места программы операторы, сигнализирующие о достижении этой точки, осуществляющие фиксацию некоторой текущей информации и предоставляющие программисту возможность выбора способа дальнейшей отладки (трассировка, изменение данных и т.д.). В полном объёме метод контрольных точек реализуется с помощью отладчика, но в какой-то мере он с успехом может быть реализован простой вставкой («вручную») операторов отладочной печати в некоторые места программы.

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