Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тестирование и отладка программы на стадии создания структуры программы




Тестирование и отладка программы

Тактически и психологически неверно откладывать тестирование и отладку программу на момент окончания создания кода программы.
Во-первых, нелегко длительное время писать код программы карандашом на бумаге. Во-вторых, параллельная с написанием кода отладка программы позволяет выявить узкие места и неточности, что предотвращает появление достаточно серьезных трудно выявляемых и плохо устраняемых ошибок.

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

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

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

· тестирование на стадии создания структуры программы;

· тестирование на стадии создания процедур и функций программиста;

· тестирование законченной версии кода программы.

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

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

8.1.2. Отладка процедур и функций,
созданных программистом

Второй шаг отладки программного средства происходит практически параллельно с наполнением процедур и функций, созданных программистом. Этим шагом является отладка указанных процедур и функций. Процесс наполнения кодом программы процедур и функций начинается с процедур и функций самого нижнего уровня, т.е. процедур и функций, которые поставляют данные другим процедурам и функциям, а сами получают данные только с клавиатуры или из файла.

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

· наличие "тупиковых" ситуаций внутри процедур и функций;

· наличие ошибок выполнения программы, например, деление на ноль и т.д.;

· ошибки при передаче данных в процедуру и функцию и получении данных из этих блочных структур;

· ошибки в определении глобальных данных и данных сложного типа.

Наличие "тупиковых" ситуаций и ошибок выполнения программы можно спрогнозировать на основании рассмотрения Р-графа или блок-схемы программы. В частности, признаком возникновения таких ситуаций является неполнота перечисления всех возможных вариантов команд и наборов данных при построении ветвлений программы. Возникновение ошибок выполнения программы можно ожидать в случае наличия операций деления, чтения данных из файла и записи данных в файл.

Всегда полезно в любом операторе ветвления программы поставить ключевое слово else, после которого вывести сообщение о непредвиденной ситуации и принудительно прервать процедуру (функцию).

Для предотвращения ошибок выполнения программы следует ввести обработку ошибок. Пример такой обработки приведен на рис. 8.1. Некоторая

On Error GoTo V1 t = Val(Text1.Text) t = 1 / t Exit Sub V1: t = 10 Resume Рис. 8.1. Пример организации обработки ошибок процедура должна выполнять чтение данных из текстового окна Text1 и вычислять величину, обратную введенной. Ввод нуля порождает ошибку выполнения. Поэтому первая строка фрагмента (рис. 8.1) содержит указание перехода на метку V1 при возникновении ошибки. Подпрограмма, помеченная меткой V1, присваивает переменной t значение 10 и возвращает управление на оператор

t=1/t. После выполнения этого оператора происходит завершение процедуры. Операторы вида "On Error GoTo…" и подпрограммы обработки ошибок могут быт в нескольких процедурах кода формы.

Ошибки при передаче данных в процедуру и функцию, получении данных из процедур и функций, а также ошибки в определении глобальных данных возникают вследствие следующих причин:

· неправильного написания имен переменных, содержащих значения формальных параметров процедуры (функции);

· неправильного написания имен глобальных переменных;

· наличия в процедуре и функции структуре описания локальных переменных, имеющих одинаковые имена с глобальными переменными, описанными в коде формы.

Первая и вторая причины очень распространены. Это и просто опечатки при вводе кода программы, и "забывчивость" программиста при написании имен данных, описанных в модуле, и имен данных сложного типа, определяемого программистом.

Например, имеется модуль OpDan, в котором описана переменная с именем N. Везде, кроме самого модуля, к этой переменной необходимо обращаться по имени OpDan.N.

Аналогичная ситуация и с данными сложного типа. Пусть определен сложный тип данных Stud, содержащий поле Name, и создана переменная этого типа с именем Student. "Забывчивого" программиста "поджидают три ловушки": написание имени поля Name без имени переменной Student, написание имени Stud.Name и употребление в операторе with Student имени Name вместо конструкции ".Name".

Во всех описанных случаях Visual Basic, "прощая программисту его забывчивость", услужливо создаст новые переменные, о которых программист даже и подозревать-то не будет. Такие ошибки, просматривая программу, можно искать неделями.

Третья причина встречается нечасто. Пусть в коде формы вне блочной структуры (процедуры или функции) описана глобальная переменная с именем А1. Внутри процедуры или функции имеется описание переменной А1 как локальной. Программист внутри процедуры присваивает переменной А1 некоторое значение и думает, что оно присвоено глобальной переменной. На самом деле оно оказывается присвоенным локальной переменной, а глобальная осталась без изменения.

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

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

Например, для процедуры, показанной на рис. 8.1, такими типовыми ситуациями являются варианты t=0, t<0 и t>0. Особым случаем является непредставимый числом набор символов в свойстве Text текстового окна Text1. Поэтому следует проверить следующие варианты ввода данных в текстовое окно:

· "10" – пример положительного числа;

· "-10" – пример отрицательного числа;

· "0" – нулевые данные;

· ").1" – пример непредставимого набора данных (при вводе символа "9" ошибочно нажата клавиша Shift).

Не следует жалеть времени на тщательную отладку процедур и функций, определяемых программистом. Чем лучше будет выполнен этот этап, тем меньше "приключений" вас ожидает в дальнейшем.




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 475; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.