Вопрос или проблема
При попытке сделать запись в HTTP(s) Test Script Recorder WorkBench, я использовал предложенные исключения для URL Patterns to Exclude:
.*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff)
Но в Recording Controller я все равно получил много файлов css
, таких как:
56 /project/web/css/common-styles.css
Почему?
Я предлагаю сообщить об этой проблеме через JMeter Bugzilla
Что касается самой идеи исключения скриптов, изображений, стилей и т.д. из нагрузочного теста – я полностью не согласен, на мой взгляд, нагрузочный тест должен быть максимально реалистичным, и имитация JMeter должна быть как можно ближе к тому, что делает реальный браузер.
Несколько рекомендаций:
- Реальные браузеры загружают скрипты, стили и изображения с веб-страницы и используют при этом пул потоков. Так что скажите JMeter, чтобы он извлекал все встроенные ресурсы из веб-страниц и делал это одновременно. лучшее место для настройки этого поведения – это HTTP Request Defaults (кстати, вы можете использовать это во время записи)
- Как по пункту 1, браузеры загружают изображения, стили и т.д., но делают это только один раз, при последующих запросах эти ресурсы возвращаются из кэша браузера. Чтобы воспроизвести такое поведение, добавьте HTTP Cache Manager в ваш тест-план.
- Абсолютное большинство веб-приложений использует куки. Чтобы включить поддержку куков, вполне достаточно добавить HTTP Cookie Manager, который обеспечивает поддержку, доступ и управление куками.
- Также может потребоваться отправить некоторые заголовки запроса, так как в некоторых случаях результат зависит от их наличия и значений, таких как “User-Agent”, “Accept-Language”, “Accept-Encoding” и т.д. Это можно сделать с помощью HTTP Header Manager
Ответ или решение
Почему не работают шаблоны URL для исключений в HTTP(s) Test Script Recorder JMeter?
При использовании HTTP(s) Test Script Recorder в JMeter для записи тестов, нередко возникает проблема с тем, что указанные вами URL Patterns to Exclude не исключают нужные ресурсы. Например, вы можете указать следующую строку для исключения статических ресурсов:
.*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff)
Однако в большинстве случаев в Recording Controller все равно будут появляться ненужные запросы к ресурсам, таким как CSS-файлы. Давайте разберемся, почему это может происходить и что с этим можно сделать.
Возможные причины проблемы:
-
Неправильный формализованный шаблон:
Убедитесь, что шаблон не содержит синтаксических ошибок. Например, регулярное выражение должно соответствовать конкретным требованиям JMeter. Во избежание путаницы, попробуйте использовать более строгие шаблоны, если это необходимо. -
Кэширование браузера:
Некоторые браузеры могут кэшировать запросы, и если вы уже загружали определенные файлы, их повторный запрос может не отображаться в записи. Однако для JMeter важно учитывать, что регистры Request могут отображать более одного запроса в зависимости от конфигурации. -
Конфигурация HTTP(s) Test Script Recorder:
Проверьте настройки самого HTTP(s) Test Script Recorder. Убедитесь, что у вас включён режим записи всех вложенных ресурсов, что может противоречить вашим настройкам исключений. -
Версии и баги JMeter:
Иногда проблемы могут быть вызваны багами в конкретной версии JMeter. Убедитесь, что вы используете самую актуальную версию, поскольку с выходом обновлений могут исправляться подобные проблемы.
Рекомендации по улучшению записи тестов:
-
Настройка HTTP Request Defaults:
Чтобы JMeter имитировал поведение реального браузера, вы можете настроить параметры HTTP Request Defaults таким образом, чтобы он загружал все встроенные ресурсы и делал это параллельно. -
Использование HTTP Cache Manager:
Для того чтобы JMeter имитировал кэширование браузера, добавьте HTTP Cache Manager в свой план тестирования. Это позволит использовать закэшированные версии ресурсов при повторных запросах. -
Поддержка Cookies:
Не забудьте добавить HTTP Cookie Manager в план тестирования. Это позволит JMeter правильно обрабатывать куки, что является важным для многих современных веб-приложений. -
Добавление HTTP Header Manager:
В некоторых случаях результат запроса может зависеть от заголовков, таких как "User-Agent", "Accept-Language", и "Accept-Encoding". Используйте HTTP Header Manager для соответствия реальному поведению браузеров. -
Фидбек и отчет об ошибках:
Если вы столкнулись с постоянной проблемой в разных сборках JMeter, дайте знать разработчикам через JMeter Bugzilla. Это поможет улучшить функционал и стабильность приложения.
Заключение
Правильная настройка JMeter для исключения ненужных ресурсов может быть критически важной для имитации поведения реального пользователя. Применяя вышеуказанные советы, вы сможете значительно повысить качество вашего тестирования и добиться более реалистичных результатов. Не забывайте следить за обновлениями JMeter, чтобы быстро исправлять проблемы и улучшать свою работу.