Лучший способ стресс-теста на сайте

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

Было бы хорошо знать, насколько хорошо веб-приложение работает с спецификацией сервера. Я хотел бы иметь возможность имитировать интенсивный трафик на моем тестовом сервере, чтобы я мог работать, если производственный сервер достаточно хорош (в частности, с iis/asp.net, а не с db-производительностью).

Ответ 1

Мое предложение - сначала выполнить некоторые автоматизированные тесты. Используйте selenium для этого.

Затем развернуть селеновую сетку для тестирования на нескольких компьютерах одновременно.

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

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

Изменить: Selenium довольно прост в использовании, и он утверждает содержимое страницы, если вы хотите протестировать содержимое. Он также копирует ваше перемещение по странице, если вы пожелаете (это было бы моим предложением) просто перейдите на страницу много, а затем сохраните ее для автоматизации. Избегайте размещения утверждений, чтобы селен мог работать быстрее.

Ответ 2

Попробуйте http://loadimpact.com лучшее, что я нашел до сих пор, но альтернативы мне не найти.

Ответ 3

JMeter будет одним из таких инструментов. Может быть немного трудно узнать и настроить, но обычно это стоит того.

Ответ 4

Инструмент ab (apache bench) позволяет отправлять много запросов на одну страницу и указывать, сколько клиентов вы хотите использовать и сколько одновременного соединения вы хотите.

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

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

Ответ 5

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

Ответ 6

Мы попробовали несколько приложений, как пробные версии коммерческих продуктов, так и свободно доступные. В конечном счете, это пробная версия Team Test Load Agent, которую мы пробовали. Он определенно отлично работает и довольно прост в использовании. В конечном счете, он укрепил наш аргумент, чтобы перейти на Team Foundation Server и оснастить все части отдела соответствующими инструментами.

Очевидным недостатком, однако, является цена.

Ответ 7

Я использовал WebLOAD для такого рода проектов. Легко создавать скрипты, и он имеет встроенную поддержку для мониторинга статистики ASP.NET

Ответ 9

Для тестирования веб-сервисов, отдыха мыла или WCF (включая WebHttpBinding) попробуйте SOA Cleaner. Может быть уменьшен с помощью: http://xyrow.com. Существует бесплатная версия, и она не требует установки. Он также может выполнять тесты нагрузки.

Ответ 10

Еще один инструмент, который мне нравится, это Open STA: http://opensta.org/

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

ОБНОВЛЕНИЕ 2018:

Поскольку ответ довольно старый, проект OpenSTA кажется не очень активным (однако инструмент все еще доступен), но теперь есть два других инструмента, которые я бы также рекомендовал:

На мой взгляд, Gatling кажется лучше, поскольку нет никаких ограничений, и они также предоставляют коммерческое решение Enterprise и оснащены такими инструментами непрерывной интеграции, как Jenkins.

NeoLoad, напротив, имеет бесплатную версию, но ограничена до 50 пользователей (этого может быть достаточно для некоторых случаев). Полное сравнение возможностей здесь.