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

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

тестировщик просто, не глядя, нажимает какие попало клавиши — как тут разобрать, из-за чего произошел сбой?

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

Ошибка пользователя: вы сделали вовсе не то, что думаете

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

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

Ошибка с разрушительными последствиями

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

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

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

Никогда, никогда, никогда не работайте с исходными данными — только с копиями.

Глава 5: Документирование и анализ ошибок 125

Ошибка, зависящая от объема памяти

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

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

Ошибка, проявляющаяся только при первом запуске

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

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

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

Ошибка, связанная с разрушенными данными

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