Выполняете стресс-тест в веб-приложении? - PullRequest
237 голосов
/ 11 августа 2008

В прошлом я использовал Stress Tool для Microsoft Web Application и Pylot для стресс-тестирования веб-приложений. Я написал простую домашнюю страницу, сценарий входа и пошаговое руководство сайта (на сайте электронной коммерции добавление нескольких товаров в корзину и оформление заказа).

Простое попадание на домашнюю страницу с помощью горстки разработчиков почти всегда обнаружит серьезную проблему. Больше проблем с масштабируемостью возникнет на втором этапе, а еще больше - после запуска.

URL-адресами инструментов, которые я использовал, были Microsoft Homer (он же Инструмент веб-приложений для Microsoft ) и Pylot .

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

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

Ответы [ 30 ]

1 голос
/ 28 сентября 2008

Мы используем упомянутый инструмент Microsoft - инструмент для стресса веб-приложения Microsoft. Это самый простой инструмент, который я использовал. Он ограничен во многих отношениях, включая возможность подключения к порту 80 только в тестах, созданных вручную. Но его простота использования означает, что он действительно привыкнет.

Мы дополняем нагрузку от этого инструмента другими инструментами, включая OpenSTA и пауков проверки ссылок.

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

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

1 голос
/ 29 декабря 2016

Взгляните на LoadBooster (https://www.loadbooster.com).. Для тестирования веб-сайтов он использует браузер без скриптов PhantomJS / CasperJs. Phantomjs проанализирует и отобразит каждую страницу, выполнит сценарий на стороне клиента. написать тестовые сценарии для поддержки сложного тяжелого приложения AJAX Web 2.0 navigation навигация по браузеру, щелчок мыши и нажатия клавиш в браузере или ожидание появления элемента в DOM. LoadBooster также поддерживает HTML-сценарий selenium.

Отказ от ответственности: я работаю на LoadBooster.

1 голос
/ 09 декабря 2009

Visual Studio Test Edition 2010 (2008 год тоже хорош). Это действительно простой и мощный инструмент для создания веб / нагрузочных тестов.

Преимущество этого инструмента при использовании против серверов Windows заключается в том, что вы получаете интегрированный доступ ко всей статистике сервера perfmon в своем отчете. Действительно полезно.

Другой бонус заключается в том, что с проектом Visual Studio вы можете интегрировать «Performance Session», который будет профилировать выполнение кода вашего сайта.

Если вы обслуживаете веб-страницы с сервера Windows, это лучший инструмент из всех.

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

0 голосов
/ 21 августа 2008

Взгляните на TestComplete .

0 голосов
/ 21 сентября 2008

Я второе предложение opensta. Я бы просто добавил, что он позволяет вам выполнять мониторинг сервера, который вы тестируете, используя SMTP. Мы отслеживаем загрузку процессора, используемую память, отправленные байты и т. Д. Единственным недостатком является то, что если вы находите что-то недоработанное и хотите исправить, то оно опирается на несколько библиотек с открытым исходным кодом, которые больше не поддерживаются, поэтому необходимо получить компиляцию версия источника более хитрая, чем с большинством OSS.

0 голосов
/ 13 ноября 2012

У меня были хорошие результаты с FunkLoad :

  • простой сценарий взаимодействия с пользователем
  • отчеты ясны
  • может контролировать нагрузку на сервер
0 голосов
/ 03 февраля 2009

Я играл с JMeter. Одна мысль, которую это не могло не проверить, была ASP.NET Webforms. Состояния разбили мои тесты. Я не уверен почему, но есть пара инструментов, которые не обрабатывают viewstate правильно. Мой текущий проект ASP.NET MVC, и JMeter хорошо с ним работает.

0 голосов
/ 11 августа 2008

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

0 голосов
/ 28 июня 2017

Я также голосую за jMeter и хочу добавить несколько цитат к ответу @PeterBernier.

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

Имейте ввиду, что jMeter имеет много строительных блоков Логические контроллеры , Элементы конфигурации , Предварительные процессоры , Слушатели , ... который может вам в этом помочь.

Вы можете имитировать реальную ситуацию в мире с помощью jMeter, например, вы можете:

  1. Настройте jMeter для работы в качестве реального браузера, настроив (concurrent resource download, browser cache, http headers, setting request time out, cookie management, https support, encoding, ajax support, ...)
  2. Настройка jMeter для генерации пользовательских запросов (путем определения number of users per second, ramp-up time, scheduling, ...)
  3. Сконфигурируйте множество клиентов с jMeter для них, чтобы выполнить тест распределенной нагрузки.
  4. Обработайте ответ, чтобы определить, правильно ли сервер отвечает во время теста. (Например, assert ответ, чтобы найти текст в нем)

Обратите внимание:

  • Начать настоящий тест веб-приложений с помощью jMeter легко за считанные минуты. В jMeter есть очень простой инструмент, который записывает ваш тестовый сценарий (известный как HTTP(S) Test Script Recorder).
  • jMeter имеет множество плагинов на http://jmeter -plugins.org .
  • Пользовательский интерфейс jMeter основан на колебании и внес хорошие изменения в jMeter 3.2. С другой стороны, учтите, что графический интерфейс JMeter следует использовать только для тестирования и отладки. Не рекомендуется использовать его в режиме GUI для реального теста. https://www.blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui. Сконфигурируйте и протестируйте свой сценарий и запустите его в режиме без графического интерфейса.
  • В jMeter есть много инструментов для создания отчетов, известных как listeners, но они не должны быть включены во время теста. Вы должны запустить тест и сгенерировать отчеты (.jtl файлы). Затем вы должны использовать эти инструменты для анализа результата. Пожалуйста, посмотрите на https://www.blazemeter.com/blog/jmeter-listeners-part-1-basic-display-formats или https://www.tutorialspoint.com/jmeter/jmeter_listeners.htm.

https://www.blazemeter.com/jmeter содержит очень полезную и практическую информацию, которая поможет вам настроить тестовую среду.

0 голосов
/ 11 декабря 2012

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

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

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

Вот оно: http://sourceforge.net/projects/loadmonger

PS: Никаких глупых комментариев к имени от людей, которые знакомы с городским сленгом. Я не был, но теперь немного более мирским.

...