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

Глава 7: Разработка тестов 195

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

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

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

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

196 Часть II: Приемы и технологии тестирования

Нагрузочные испытания

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

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

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

Прогнозирование ошибок

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