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

Ошибки не обнаруживаемые компилятором

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

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

Виды отладки

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

Общие рекомендации

Заботиться об возможностях отладки и тестирования на этапе программирования.

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

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

Средства отладки

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

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

Программирование без ошибок

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

Псевдоотладка: Если обнаружено 95% ошибок, то для обнаружения последующих 1—2% может потребоваться вдвое больше времени.

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

Предотвращение ошибок

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

13. Тестирование программ.

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

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

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

Различают дефекты программного обеспечения и сбои. В случае сбоя программа ведет себя не так, как ожидает пользователь. Дефект — это ошибка/неточность, которая может быть (а может и не быть) следствием сбоя.

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