Почему URL-шаблоны для исключения в HTTP(s) Test Script Recorder Jmeter не работают?

Вопрос или проблема

При попытке сделать запись в 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 должна быть как можно ближе к тому, что делает реальный браузер.

Несколько рекомендаций:

  1. Реальные браузеры загружают скрипты, стили и изображения с веб-страницы и используют при этом пул потоков. Так что скажите JMeter, чтобы он извлекал все встроенные ресурсы из веб-страниц и делал это одновременно. лучшее место для настройки этого поведения – это HTTP Request Defaults (кстати, вы можете использовать это во время записи)
  2. Как по пункту 1, браузеры загружают изображения, стили и т.д., но делают это только один раз, при последующих запросах эти ресурсы возвращаются из кэша браузера. Чтобы воспроизвести такое поведение, добавьте HTTP Cache Manager в ваш тест-план.
  3. Абсолютное большинство веб-приложений использует куки. Чтобы включить поддержку куков, вполне достаточно добавить HTTP Cookie Manager, который обеспечивает поддержку, доступ и управление куками.
  4. Также может потребоваться отправить некоторые заголовки запроса, так как в некоторых случаях результат зависит от их наличия и значений, таких как “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-файлы. Давайте разберемся, почему это может происходить и что с этим можно сделать.

Возможные причины проблемы:

  1. Неправильный формализованный шаблон:
    Убедитесь, что шаблон не содержит синтаксических ошибок. Например, регулярное выражение должно соответствовать конкретным требованиям JMeter. Во избежание путаницы, попробуйте использовать более строгие шаблоны, если это необходимо.

  2. Кэширование браузера:
    Некоторые браузеры могут кэшировать запросы, и если вы уже загружали определенные файлы, их повторный запрос может не отображаться в записи. Однако для JMeter важно учитывать, что регистры Request могут отображать более одного запроса в зависимости от конфигурации.

  3. Конфигурация HTTP(s) Test Script Recorder:
    Проверьте настройки самого HTTP(s) Test Script Recorder. Убедитесь, что у вас включён режим записи всех вложенных ресурсов, что может противоречить вашим настройкам исключений.

  4. Версии и баги JMeter:
    Иногда проблемы могут быть вызваны багами в конкретной версии JMeter. Убедитесь, что вы используете самую актуальную версию, поскольку с выходом обновлений могут исправляться подобные проблемы.

Рекомендации по улучшению записи тестов:

  1. Настройка HTTP Request Defaults:
    Чтобы JMeter имитировал поведение реального браузера, вы можете настроить параметры HTTP Request Defaults таким образом, чтобы он загружал все встроенные ресурсы и делал это параллельно.

  2. Использование HTTP Cache Manager:
    Для того чтобы JMeter имитировал кэширование браузера, добавьте HTTP Cache Manager в свой план тестирования. Это позволит использовать закэшированные версии ресурсов при повторных запросах.

  3. Поддержка Cookies:
    Не забудьте добавить HTTP Cookie Manager в план тестирования. Это позволит JMeter правильно обрабатывать куки, что является важным для многих современных веб-приложений.

  4. Добавление HTTP Header Manager:
    В некоторых случаях результат запроса может зависеть от заголовков, таких как "User-Agent", "Accept-Language", и "Accept-Encoding". Используйте HTTP Header Manager для соответствия реальному поведению браузеров.

  5. Фидбек и отчет об ошибках:
    Если вы столкнулись с постоянной проблемой в разных сборках JMeter, дайте знать разработчикам через JMeter Bugzilla. Это поможет улучшить функционал и стабильность приложения.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...