Главная страница

О тестировании сайтов :

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

Итак, у нас имеется веб-сайт (сервер), который предоставляет какой-либо сервис для пользователей. Какие виды тестирования существуют для сайтов, и какие тесты необходимо или желательно провести для уверенности в том, что он не подведет в критическую минуту, и пользователи останутся довольны?

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

Тестирование юзабилити частично пересекается с тестированием качества исполнения сайта и удобства интерфейса. Приемы тестирования тут схожи с тестированием обычных десктоп-приложений. Это запись специального тестового макроса-сценария, который имитирует действия реальных пользователей - "заходим на первую страницу - вводим логин и пароль - нажимаем на кнопку - переходим по ссылке и так далее". Затем программным образом создаются несколько виртуальных пользователей (тысячи и более при серьезном тестировании), которые "ходят" на сайт, проверяя его работу. За этим всем следит менеджер (самый обычный человек), строя на основе полученных данных отчет о работе исследуемого веб-сайта.

Такие тест-комплексы могут быть довольно большими даже в прямом смысле - объем дистрибутивов составляет сотни мегабайт. Как пример - комплексное решение для тестирования веб-приложений Empirix - e-TEST suite. Этот инструмент может использоваться для комплексного тестирования веб-приложений, созданных с использованием Microsoft .NET, J2EE, веб-сервисов, а также обычных приложений и веб-сайтов. Комплекс включает в себя решения для разностороннего тестирования - от интерфейса до тестирований нагрузочной способности, безопасности и даже проведение тестов удаленных сайтов в реальных условиях - через файрволы, прокси-серверы и тому подобное. Для тестирования интерфейса в состав e-TEST suite входит компонент под названием e-Tester - в оригинале он называется Automated Regression and Functional Testing Tool for Web Applications (Record/Playback). Этот компонент как раз и предназначен для записи определенной последовательности действий и воспроизведения их впоследствии, имитируя активность пользователей. Другой компонент - e-Monitor - в реальном времени собирает статистику тестирования и информацию о возникших ошибках, а также позволяет планировать тесты (например, если тестируется удаленный работающий сайт, то его можно тестировать в разные периоды времени).

Еще один вид тестирования - проверка ссылок. В больших тестовых комплексах он интегрирован в проверку юзабилити или же в проверку правильности HTML-кода, но существует множество простеньких утилит для такого рода проверок. Такое тестирование актуально и для внутренних ссылок (в случае больших и разветвленных порталов), и для внешних - если это, к примеру, каталог сайтов или обычная страницы "Ссылки". Пожалуй, такой тест - это один из немногих тестов, являющихся специфическими для веб-приложений и сайтов. Кроме того, его можно и необходимо периодически проводить на работающем сайте - ведь со временем структура меняется, и некоторые ссылки могут стать неверными.

Отдельно следует отметить тест на безопасность. Это очень важный тип тестов, так как от безопасности сервера зависит практически все - и сам бизнес, и доверие пользователей, и сохранность информации. Правда, в отличие от других тестов, тестирование безопасности следует проводить регулярно. Кроме того, тестированию подвергается не только сам сайт или веб-приложение, а весь сервер полностью - и веб-сервер, и операционная система, и все сетевые сервисы. Как и в случае других тестов, программа "прикидывается" реальным пользователем-взломщиком и пытается применить к серверу все известные ей методы атаки и проверяет все уязвимости. Результатом работы будет отчет о найденных уязвимостях и рекомендации по их устранению. Обычно такие сканеры безопасности продаются как самостоятельный продукт - к примеру, один из лучших сканеров XSpider, о котором мы писали в статье "Тук-тук, к вам проверка...".

Следующим видом тестирования является тест на устойчивость к большим нагрузкам - Load-testing, stress-test или performance test. Такой тест имитирует одновременную работу нескольких сотен или тысяч посетителей (каждый из которых может "ходить" по сайту в соответствии со своим сценарием), проверяя, будет ли устойчивой работа сайта под большой нагрузкой. Кроме этого, можно имитировать кратковременные пики нагрузки, когда количество посетителей скачкообразно увеличивается - это очень актуально для новостных ресурсов и других сайтов с неравномерной аудиторией. В таком тесте проверяется не только и не столько сам сайт, сколько совместная слаженная работа всего комплекса - аппаратной части сервера, веб-сервера, программного ядра (engine) и других компонентов сайта. К подобным решениям можно отнести и утилиту WAPT, а также ряд других - Microsoft Web Application Stress Tool (WAS), SilkPerformer, Webserver Stress Tool и другие.

Еще одним типом тестирования является проверка верности HTML-кода страниц сайта. Для такого рода тестирования написано множество утилит - от простеньких скриптов на Perl до мощных валидаторов, проверяющих весь сайт на соответствие стандартам (а некоторые валидаторы могут в автоматическом режиме исправлять найденные недочеты - например, пропущенные закрывающие теги и так далее). Часто такие средства встраивают в веб-редакторы, но существуют и браузеры с встроенными валидаторами. Примером такого инструмента является утилита Tidy - изначально консольная программа, она имеет несколько разных графических интерфейсов, может автоматически подсвечивать неверный код и исправлять некоторые ошибки. Также ее можно использовать при разработке - TidyLib включает в себя всю необходимую функциональность и может подключаться к программам, написанным на Java, Pascal, .NET, C++, Perl, PHP.

Вот мы в общих чертах и рассмотрели некоторые виды тестирования веб-сайтов. Одни из них очень легко проводятся в автоматическом режиме и бесплатными программами, другие требуют внимательной организации и анализа результатов, привлечения независимых тестеров и оценщиков, сложного оборудования. Некоторые программы предельно просты - буквально несколько десятков строк на Perl или пара килобайт исполняемого файла, - другие представляют собой целые программные комплексы, предназначенные для работы с десятками тестеров, инженеров и аналитиков. Но все они служат одной цели - помочь вам сделать качественный, удобный, безопасный и стабильный веб-сайт.

Автор: Александр Лозовюк www.hostinfo.ru