Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб С++_2.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
83 Кб
Скачать
☆
  1. Тестирование и отладка программ

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

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

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

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

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

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

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

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

Самостоятельное задание: Изменить код программы в соответствии с пограничными условиями. В коде предусмотреть также наличие оператора if без ветки else. Получить соответствующее рабочее приложение. Провести его семантическое тестирование. Ответить на вопрос: «Сколько требуется запустить приложение для полного тестирования написанного логического кода?» (количество баллов за данный вид работ = 4).