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

Глава 4: Программные ошибки 97

работы пользователя? Допускает ли она хотя бы некоторую степень на- I стройки?

Производительность

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

Выходные данные

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

Обработка ошибок

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

Ошибки, связанные с обработкой граничных условий

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

Ошибки вычислений

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

4

98 Часть I: Основы

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

— он правильно закодировал неверную идею.

Начальное и последующие состояния

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

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

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

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

Ошибки передачи или интерпретации данных

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