К оглавлению

 

Урок № 23

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

 

Вопросы темы:

1.     Как проконтролировать текст программы до выхода на компьютер?

2.     Для чего нужны отладка и тестирование?

3.     В чем заключается отладка?

4.     Что такое тест и тестирование?

5.     Какими должны быть тестовые данные?

6.     Из каких этапов состоит процесс тестирования?

7.     Каковы характерные ошибки программирования?

8.     Какие ошибки не обнаруживаются транслятором?

9. В чем заключается сопровождение программы?

10.Тест

11. Вопросы для самоконтроля.

 

 

В начало

Как проконтролировать текст программы до выхода на компьютер?

Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.

 

В начало

 

Для чего нужны отладка и тестирование?

Отладка программы — это процесс поиска и устранения ошибок в программе, производимый по результатам её прогона на компьютере.

 

Тестирование — это испытание, проверка правильности работы программы в целом, либо её составных частей.

Отладка и тестирование (англ. test — испытание) — это два четко различимых и непохожих друг на друга этапа:

Тестирование устанавливает факт наличия ошибок, а отладка выясняет ее причину.

Английский термин debugging ("отладка") буквально означает "вылавливание жучков". Термин появился в 1945 г., когда один из первых компьютеров — "Марк-1" прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины.

В чем заключается отладка?

В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C и др.) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы.

Программа-отладчик обычно обеспечивает следующие возможности:

При отладке программ важно помнить следующее:

В начало

Что такое тест и тестирование?

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

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

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

Для реализации метода тестов должны быть изготовлены или заранее известны эталонные результаты.

Вычислять эталонные результаты нужно обязательно до, а не после получения машинных результатов.

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

 

В начало

Какими должны быть тестовые данные?

Тестовые данные должны обеспечить проверку всех возможных условий возникновения ошибок:

Пример. Система тестов для задачи нахождения корней квадратного уравнения ax2 + bx + c = 0 :
 

Номер теста

Проверяемый случай

Коэффициенты

Результаты

a

b

c

1

d > 0

1

1

-2

x1 = 1,   x2 = -2

2

d = 0

1

2

1

Корни равны: x1 = -1,   x2 = -1

3

d < 0

2

1

2

Действительных корней нет

4

a = 0, b = 0, c = 0

0

0

0

Все коэффициенты равны нулю. x — любое число

5

a = 0, b = 0, c  0

0

0

2

Неправильное уравнение

6

a = 0, b  0

0

2

1

Линейное уравнение; один корень: x = -0.5

7

a  0, b  0, c = 0

2

1

0

x1 = 0,   x2 = -0.5

 

В начало

 

Из каких этапов состоит процесс тестирования?

Процесс тестирования можно разделить на три этапа.

1Проверка в нормальных условиях.

Предполагает тестирование на основе данных, которые характерны для реальных условий функционирования программы.

2Проверка в экстремальных условиях.

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

3Проверка в исключительных ситуациях.

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

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

? Что произойдет, если программе, не рассчитанной на обработку отрицательных и нулевых значений переменных, в результате какой-либо ошибки придется иметь дело как раз с такими данными?

? Как будет вести себя программа, работающая с массивами, если количество их элементов превысит величину, указанную в объявлении массива?

? Что произойдет, если числа будут слишком малыми или слишком большими?

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

Программа должна сама отвергать любые данные, которые она не в состоянии обрабатывать правильно.

 

В начало

Каковы характерные ошибки программирования?

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

Вид ошибки

Пример

Неправильная постановка задачи

Правильное решение неверно сформулированной задачи

Неверный алгоритм

Выбор алгоритма, приводящего к неточному или эффективному решению задачи

Ошибка анализа

Неполный учет ситуаций, которые могут возникнуть; логические ошибки

Семантические ошибки

Непонимание порядка выполнения оператора

Синтаксические ошибки

Нарушение правил, определяемых языком программирования

Ошибки при выполнении операций

Слишком большое число, деление на ноль, извлечение квадратного корня из отрицательного числа и т. п.

Ошибки в данных

Неудачное определение возможного диапазона изменения данных

Опечатки

Перепутаны близкие по написанию символы, например, цифра 1 и буквы I, l

Ошибки ввода-вывода

Неверное считывание входных данных, неверное задание форматов данных

Является ли отсутствие синтаксических ошибок свидетельством правильности программы?

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

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

Примеры синтаксических ошибок:

·        пропуск знака пунктуации;

·        несогласованность скобок;

·        неправильное формирование оператора;

·        неверное образование имен переменных;

·        неверное написание служебных слов;

·        отсутствие условий окончания цикла;

·        отсутствие описания массива и т.п.

 

В начало

Какие ошибки не обнаруживаются транслятором?

Существует множество ошибок, которые транслятор выявить не в состоянии, если используемые в программе операторы сформированы верно.

Примеры таких ошибок.

Логические ошибки:

Ошибки в циклах:

Ошибки ввода-вывода; ошибки при работе с данными:

Ошибки в использовании переменных:

Ошибки при работе с массивами:

Ошибки арифметических операций:

Эти ошибки обнаруживаются с помощью тестирования.

 

В начало

В чем заключается сопровождение программы?

Сопровождение программ — это работы, связанные с обслуживанием программ в процессе их эксплуатации.

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

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

 

В начало

 

 

Вопросы для самоконтроля

1)    Какие основные этапы включает в себя решение задач на компьютере?

2)    Какие этапы компьютерного решения задач осуществляются без участия компьютера?

3)    Что называют математической моделью объекта или явления?

4)    Почему невозможно точное исследование поведения объектов или явлений?

5)    Какие способы моделирования осуществляются с помощью компьютера?

6)    Из каких последовательных действий состоит процесс разработки программы?

7)    Доказывает ли получение правдоподобного результата правильность программы?

8)    Какие ошибки могут остаться невыявленными, если не провести проверку (просмотр, прокрутку) программы?

9)    Чем тестирование программы отличается от её отладки?

10)                  Каким образом программа-отладчик помогает исследовать поведение программы в процессе её выполнения?

11)                  Как следует планировать процесс отладки программы?

12)                  Можно ли с помощью тестирования доказать правильность программы?

13)                  На какой стадии работы над программой вычисляются эталонные результаты тестов?

14)                  Назовите основные этапы процесса тестирования.

15)                  В чём заключается отличие синтаксических ошибок от семантических?

16)                  О чём свидетельствует отсутствие сообщений машины о синтаксических ошибках?

17)                  Какие разновидности ошибок транслятор не в состоянии обнаружить?

18)                  Для чего программам требуется сопровождение?

 

В начало

 

        К оглавлению

Сайт управляется системой uCoz