Как тщательно тестировать сайт как для безопасности, так и для скорости?
Каковы способы и инструменты для этого?
Можем ли мы имитировать сотни виртуальных пользователей, посещающих сайт, чтобы увидеть его загрузку?
Если это только что должно быть стресс-тест, попробуйте http://freshmeat.net/projects/siege/
Siege – это регрессионный тест и эталонная утилита. Он может подвергнуть тестированию один URL-адрес с определенным пользователем пользователями, или он может считывать много URL-адресов в памяти и одновременно подчеркивать их. Программа сообщает об общем количестве записанных видеороликов, переданных байтах, времени ответа, параллелизма и статуса возврата. Siege поддерживает протоколы HTTP / 1.0 и 1.1, директивы GET и POST, файлы cookie, протоколирование транзакций и базовую аутентификацию. Его функции настраиваются для каждого пользователя.
или http://httpd.apache.org/docs/1.3/programs/ab.html
ab – инструмент для сопоставления производительности вашего сервера HTTP-протокола Apache HyperText. Он делает это, указывая, сколько запросов в секунду может потребовать установка Apache.
Чтобы протестировать ваш PHP-код, используйте PHPUnit . Чтобы проверить свой интерфейс, используйте Selenium .
Для тестов безопасности я настоятельно рекомендую купить аудит и оставить это посвященным специалистам. Существует слишком много возможных атак, которые выходят за рамки вашего кода приложения.
Я предлагаю вам прочитать этот пост, его очень полезно проверять мои динамические веб-сайты каждый раз, когда я его создаю.
Редактировать :
Apache JMeter – это программное обеспечение с открытым исходным кодом, 100% -ное приложение для Java-приложений, предназначенное для загрузки функционального поведения теста и измерения производительности. It was originally designed for testing Web Applications but has since expanded to other test functions.
Я хотел бы просто расширить несколько предложений, так как я делаю это много.
Осада – отличный инструмент проверки здравомыслия, и у этого есть реальный низкий барьер для входа. Это стандартный пакет в Ubuntu и других и требует только параметров командной строки для запуска. Таким образом, вы можете заблокировать свой сайт так сильно, как хотите (или осмелиться), чтобы увидеть, где точка разлома. Мой опыт в том, что несколько веб-серверов деградируют линейным образом. По мере увеличения нагрузки они становятся немного медленнее, а затем немного медленнее, а затем BAM время загрузки увеличивается до 20 секунд. Знание того, когда это происходит, дает вам представление о том, как много волноваться и что нужно делать. Если вы не нажмете на стену до 500+ одновременно работающих пользователей, то у вас есть некоторая свобода действий.
Но обратите внимание, что осада действительно больше касается тестирования вашего веб-сервера, чем вашего веб-сайта.
Поскольку тот же самый плакат, о котором упоминалось ранее, Selenium – отличный инструмент для этого, однако, ожидают вложить некоторое время. Фактически вы можете выпустить несколько тестов только с помощью Selenium IDE и запускать их либо в своем браузере под Selenium RC, либо в виде пакета HTTP, не входя в скрипты (хотя вы захотите это сделать). И вверх, и снизу этот подход заключается в том, что это питание реального браузера, поэтому запуск теста только на одной машине не принесет вам реальных результатов в мире, потому что ваша машина может просто не отставать. Вы должны работать, и настройка SRC и Selenium Grid может быть сложной задачей, но полностью стоит того, если это то, что вы будете делать снова и снова, особенно если у вас есть небольшое знание VM.
Ребята, которые создали Selenium, теперь предлагают коммерческий облачный RC, который запускает все стандартные браузеры и захватывает видеозапись сессии (которую вы можете отключить для теста производительности). Это на http://saucelabs.com и для тестирования нагрузки, или бесплатных бесплатных тестов во всех браузерах. (Я все еще выполняю функциональные тесты локально). Опять же, это стоит, но это разумно.
Я объясняю это больше, потому что ваш первый пункт – «энергично» тестировать ваш сайт, и я предполагаю, что это означает тестирование всей функциональности, а не просто тестирование ее с большой энергией.
Я не знаю никакой волшебной пули для этого, кроме написания тщательных тестов (именно там вы обычно сталкиваетесь с написанием сценариев, поскольку многие вещи могут повторно использоваться, например, заполнять форму).
Последнее, прежде чем вы запустите его, если у вас нет программы юзабилити, пусть некоторые не-программисты / веб-люди используют ее и наблюдают за ними и просят их выполнять различные «задачи» (зарегистрироваться, найти что-то , no "click on" 's) Это звучит как тестирование юзабилити, но для этого уже слишком поздно, но вы будете удивлены, как быстро люди, которые не думают, что вы находите ошибки в своем коде. Это, надеюсь, откроет новые горизонты областей, которые вы не тестировали.
Я не нашел инструмент «охвата» для веб-приложений. Если есть один, но я хотел бы услышать об этом.
Кроме того, я бы назвал Тунга .
Отказ от их введения:
Tsung – это инструмент для тестирования распределенных нагрузок с открытым исходным кодом с открытым исходным кодом
Его можно использовать для стресса серверов HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP и Jabber / XMPP. Tsung (ранее известный как IDX-Tsunami) – бесплатное программное обеспечение, выпущенное под лицензией GPLv2.
Цель Tsung – имитировать пользователей, чтобы проверить масштабируемость и производительность клиентских / серверных приложений на базе IP. Вы можете использовать его для проведения нагрузочных и стресс-тестирования ваших серверов. Многие протоколы были реализованы и протестированы, и их можно легко расширить. Недавно были добавлены поддержка WebDAV, LDAP и MySQL (экспериментальные).
Он может быть распространен на нескольких клиентских машинах и способен одновременно имитировать сотни тысяч виртуальных пользователей (или даже миллионы, если у вас достаточно оборудования …).
Tsung разработан в Erlang, языке с открытым исходным кодом, разработанном компанией Ericsson для создания надежных отказоустойчивых распределенных приложений.
Tsung поддерживается Process-One
вы можете использовать WEBLOAD. Его инструмент для тестирования нагрузки. Goto http://www.webload.com
вы проверили apachebenchmark?
http://httpd.apache.org/docs/1.3/programs/ab.html
это полезно для тестирования, как вы можете обрабатывать нагрузки и одновременные соединения
Вы можете попробовать Google Skipfish . Это сканер безопасности, но он, кстати, генерирует довольно много запросов на ваш сайт.
Войдите на первую страницу slashdot
http://seleniumhq.org/ – это технология поиска.
Цитаты со своего сайта:
Selenium – это надежный набор инструментов, который поддерживает быструю разработку автоматизации тестирования для веб-приложений. Selenium предоставляет богатый набор функций тестирования, специально ориентированных на потребности тестирования веб-приложения. Эти операции являются очень гибкими, позволяя множество вариантов размещения элементов пользовательского интерфейса и сравнения ожидаемых результатов теста с фактическим поведением приложения.
Одной из ключевых особенностей Selenium является поддержка выполнения своих тестов на нескольких платформах браузера.
Наиболее важной частью, вероятно, является Selenium-RC (Remote Control)
Selenium-RC позволяет разработчику автоматизации тестирования использовать язык программирования для максимальной гибкости и расширяемости при разработке тестовой логики. Например, если тестируемое приложение возвращает набор результатов, и если автоматическая тестовая программа должна запускать тесты для каждого элемента в результирующем наборе, поддержка итерации языка программирования может использоваться для повторения набора результатов, вызывая команды Selenium для запускайте тесты для каждого элемента.
Selenium-RC предоставляет API (Application Programming Interface) и библиотеку для каждого из поддерживаемых языков: HTML, Java, C #, Perl, PHP, Python и Ruby. Эта способность использовать Selenium-RC с языком программирования высокого уровня для разработки тестовых примеров также позволяет интегрировать автоматическое тестирование с автоматизированной средой сборки проекта.