Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ПИ_ИКТ Программирование по С++ (1 семестр) _Хотов.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.83 Mб
Скачать

Отладка

Практически невозможно написать программу без ошибок. Справедливость банальной фразы: "Человеку свойственно ошибаться" начинаешь остро чув­ствовать, уже написав всего 2—3 программы. Не стоит удивляться тому, что в написанной вами программе есть ошибки. Напротив, отсутствие ошибок вызывает удивление. Поэтому, приступая к разработке, следует сразу же предположить, что придется регулярно исправлять сделанные в ней ошиб­ки, и выделить время на их обнаружение и устранение.

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

Отладка отнимает довольно много времени. По разным оценкам на нее ухо­дит от трети до половины всего времени реализации проекта, поэтому сле­дует серьезно отнестись к этому процессу.

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

Следует серьезно отнестись к выбору языка программирования. Низкоуров­невые языки, такие как язык ассемблера или языки вроде C/C++, дают программисту очень много возможностей, но неразумное использование этих возможностей приводит к очень большому количеству ошибок. Эти ошибки, к тому же, трудно обнаружить и устранить. Языки высокого уров­ня, такие как Java, С# и другие, напротив, ограничивают действия про­граммиста, но предотвращают появление ошибок.

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

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

Ввиду особой важности отладки программного продукта мы рассмотрим этот процесс подробнее в следующей главе.

Тестирование

Некоторые ошибки нелегко выявить, поэтому на каком-то этапе разработки необходимо остановиться и провести тщательное и всеобъемлющее тести­рование (testing) программного продукта. Тестирование заключается в том, что работа программы проверяется на ряде задач, решение которых извест­но заранее. Результаты работы программы сравниваются с эталонными ре­зультатами, и на основании их совпадения делается вывод о применимости программы к этому классу задач. Кроме того, в процессе тестирования час­то проверяется исходный текст программы, что позволяет найти ошибки в алгоритме решения задачи.

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

Тестирование не следует путать с отладкой. Задача тестирования — выявить наличие дефектов в программе, а задача отладки — отыскать их местополо­жение и устранить.

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

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

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

Более подробно о методах тестирования мы поговорим в следующей главе.