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

488 Часть III: Управление проектами и группами

результаты подобных операций, однако некоторые продукты этого не де­лают.

Невозможные значения

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

Непроверенные данные

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

Флаги ошибок

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

Аппаратные сбои

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

Сравнение данных

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

Восстановление после ошибок

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

Приложение: Распространенные программные ашинки 489

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

Автоматическое исправление ошибок

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

Отсутствие сообщения об ошибке

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

Не установлен флаг ошибки

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

Куда возвращается управление?

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

Прекращение выполнение программы из-за ошибки

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

Обработка аппаратных отказов

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