включить статические ресурсы, такие как изображения, CSS, JS и т. д. в тестах - PullRequest
12 голосов
/ 04 января 2012

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

Однако есть одна вещь, которая мне не ясна.

Читая на домашней странице JMeter, есть раздел «Лучшие практики» .Среди прочего, он говорит:

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

Я также видел это на других страницах, говоря, что вы не должны включать запросы на изображения или любые другие статические ресурсы в ваши тесты.Однако я до сих пор не смог найти ни одной страницы, которая бы давала хорошее объяснение того, ПОЧЕМУ вы не должны включать статические ресурсы.

Конечно, JMeter не браузер, но запросы на статические ресурсы, несомненно, повлияют на производительность вашего приложения?Может кто-нибудь дать мне хорошее объяснение: -)

Ответы [ 3 ]

7 голосов
/ 04 января 2012

Все зависит от того, что вы пытаетесь проверить.

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

Специальные тесты почти всегда имеют дело с динамическими аспектами веб-приложения - кодом на стороне сервера (.aspx, .php, .jsp и т. д.),Здесь большинство приложений имеют свои узкие места - усилия по запуску серверного сценария во много, много раз превышают усилия по извлечению файла CSS с диска и его передаче в браузер без какой-либо дополнительной обработки.Если я тестирую серверные сценарии, я не хочу также загружать ресурсы - потому что они загромождают тесты и потребляют пропускную способность на стороне тестового клиента.Я не хочу, чтобы мои тесты проваливались, потому что мой сервер JMeter загружает 5-мегабайтный видеофайл в каждом потоке и использует всю пропускную способность, тогда как на самом деле я пытаюсь увидеть, сколько входов в секунду сервер может поддерживать.

Нет особого смысла в тестировании способности вашего веб-сервера обслуживать статические файлы - Microsoft, команда Apache, кто бы ни был, уже проделал блестящую работу;если у вас нет особых проблем, есть лучшие способы потратить бюджет на тестирование.

Тесты сети безопасности объединяют все это, чтобы доказать, что все действительно работает так, как я этого ожидаю.Обычно я запускаю их в рабочей (подобной) среде, поэтому у меня есть CDN, производственное оборудование и конфигурация «живого» приложения.Для этого я обычно использую облачный сервис тестирования, поэтому я могу видеть производительность в разных местах и ​​генерировать нагрузку, достаточную для работы комплекта производственного класса.Вы можете использовать JMeter для этого (и есть несколько сервисов JMeter Cloud, которые я использовал в прошлом).Это дорого, может потребоваться время простоя, и вы должны делать это только в качестве защитной сетки.

6 голосов
/ 05 января 2012

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

Чтобы учесть кеш браузера, вы можете использовать HTTP Cache Manager или Once Only контроллер , чтобы каждый поток загружал статические вещи только один раз с первым запросом.
HTTP Cache Manager - это рекомендуемый способ, который гораздо проще настроить, просто включите его в свой тест как первый дочерний элемент группы потоков.
Контроллер Once Only регулярно используется, когда вам необходимо войти в систему только по первому запросу.

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

Надеюсь, это поможет ...

1 голос
/ 04 января 2012

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

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

Полагаю, вам нужно попытаться воспроизвести то, что реальные, реальные пользователи будут делать с приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...