Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по проге.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
44.49 Кб
Скачать

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

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

Типовыми советами при отладке программ могут быть:

1)Необходимость проверить соответствие форматов при вводе-выводе.

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

3)При обнаружении ошибки необходимо проверить отсутствие подобной ошибки в других частях программы.

4)Необходимо просмотреть стек вызова функции.

5)Необходимо попытаться объяснить свой код кому-нибудь еще.

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

Еще одним полезным действием при отладке является введение журнального файла (Log).

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

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

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

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

13.Тестирование в процессе создания программы.

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

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

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

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

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

14.Систематическое тестирование.

Постепенное тестирование каждого написанного модуля существенно лучше тестирования методом «большого скачка», когда сначала пишется вся программа, а затем она тестируется целиком.

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

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

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

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

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

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

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