HTTP-прокси-сервер в JMeter: Запись примера сценария

⚡ Умное резюме

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

  • 🎬 Основная цель: Прокси-сервер отслеживает и записывает действия пользователя, пока обычный браузер перемещается по тестируемому приложению.
  • 🧱 План-скелет: Группа потоков, параметры HTTP-запроса по умолчанию и контроллер записи создаются до начала записи.
  • 🎯 Target контроллер: Этот параметр определяет, куда будут записываться захваченные сэмплы в дереве плана тестирования.
  • 🌐 Настройка браузера: Браузер должен направить свой HTTP-прокси на следующий адрес. JMeter порт, по умолчанию 8888.
  • 🔐 Запись по протоколу HTTPS: Импорт ApacheJMeterДобавьте файл TemporaryRootCA.crt в список доверенных центров сертификации, а затем удалите его.
  • 🧹 Очистите скрипт: Запросы на рекламу и аналитику также регистрируются и должны быть исключены или удалены.
  • 🔗 Выполните корреляцию перед масштабированием: Замените записанные токены сессии на extracЕсли переменные не заданы, воспроизведение не удастся.
  • ⚠️ Примечание к версии: WorkBench был удален в JMeter 5.0; теперь этот элемент называется «Рекордер тестовых скриптов HTTP(S)».

JMeter скрипт записи HTTP-прокси-сервера

В чём JMeter HTTP-прокси-сервер?

JMeter HTTP-прокси-сервер — это встроенный регистратор, который находится между браузером и тестируемым веб-сайтом. Он отслеживает и записывает действия пользователя во время обычного просмотра приложения и преобразует каждый перехваченный запрос в сэмплер HTTP-запросов в плане тестирования. JMeter 3.0 элемент получил название Программа для записи тестовых скриптов HTTP(S).И оба названия описывают один и тот же компонент.

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

Почему нужно записывать сценарий, а не создавать его вручную?

Реалистичный пользовательский сценарий на современном сайте генерирует десятки запросов, каждый из которых имеет свои заголовки, cookie и параметры формы. Typing Ввод всего этого в сэмплеры вручную — медленный и чреватый ошибками процесс. Запись же фиксирует точный трафик, отправленный браузером, что дает три преимущества:

  • Точность: Порядок заголовков, файлы cookie и скрытые поля формы сохраняются в точности так, как их получил сервер.
  • Скорость: На запись маршрута, занимающего десять страниц, уходит несколько минут, а на его ручное составление — несколько часов.
  • Покрытие: Фоновые AJAX-запросы, невидимые в интерфейсе, тем не менее, отображаются в записи.

Запись — это отправная точка, а не завершенный тест. Перед использованием ее еще необходимо очистить, сопоставить и параметризовать. нагрузочное тестированиеВ разделах ниже описан полный путь от пустого состояния. JMeter Окно в скрипт, который надежно воспроизводится.

Вот Дорожная карта этого практического примера

HTTP-прокси-сервер в JMeter

Как записать сценарий в JMeter 5.x

Текущая версия Apache JMeter 5.6.3, опубликованный 9 января 2024 года, требует... Java 8 или позже, с Java 17 рекомендуется. Любой, кто будет следовать пошаговому руководству с иллюстрациями ниже на этой странице, не найдет узел WorkBench, поскольку он был удален в версии 5.0. Функциональность не исчезла; она переместилась. Теперь средство записи добавляется непосредственно в план тестирования и называется HTTP(S) Test Script Recorder.

Самый быстрый вариант — использовать готовый шаблон. Выберите Файл > Шаблоны > запись и JMeter Создается полный план, содержащий группу потоков, параметры HTTP-запросов по умолчанию, контроллер записи и сам регистратор, уже соединенные между собой. Создание аналогичной структуры вручную включает в себя следующие шаги.

  1. Создайте каркас плана. Добавьте группу потоков, а затем добавьте под ней контроллер записи. Именно сюда будут помещаться захваченные сэмплы.
  2. Добавьте записывающее устройство в план тестирования. Щелкните правой кнопкой мыши узел «План тестирования» и выберите Добавить > Нетестовые элементы > Программа для записи тестовых скриптов HTTP(S).Это родственный элемент группы Thread Group, а не её дочерний элемент.
  3. Укажите порт. По умолчанию используется порт 8888. Подойдет любой свободный порт, при условии, что браузер настроен соответствующим образом.
  4. Выберите Target Контроллер. Выберите контроллер записи, созданный на первом шаге, чтобы запросы группировались там, где вы ожидаете, а не были разбросаны по корневому каталогу плана.
  5. Добавить URL шаблоны исключения. На вкладке «Фильтрация запросов» исключите статические ресурсы, используя следующий шаблон: .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Это позволяет избежать большей части ручной очистки, описанной далее.
  6. Запустите программу записи. Нажмите Начать в верхней части панели регистратора. JMeter пишет АпачиJMeterВ данный момент файл TemporaryRootCA.crt находится в папке bin, что и обеспечивает возможность записи по протоколу HTTPS.
  7. Направьте браузер на прокси-сервер. Используя localhost и выбранный порт, затем перемещайтесь по приложению обычным способом.
  8. Остановитесь и наведите порядок. Нажмите «Стоп», удалите все оставшиеся звонки от третьих лиц и сохраните план.
  9. Перед масштабированием выполните проверку. Щелкните правой кнопкой мыши группу потоков и выберите УтверждатьЭтот алгоритм запускает программу один раз в одном потоке, поэтому ошибки выявляются до того, как будет применена какая-либо нагрузка.

Ещё одна привычка отличает работающий скрипт от надёжного. Используйте графический интерфейс только для сборки и отладки, а настоящий тест запускайте из командной строки. jmeter -n -t plan.jmx -l results.jtl -e -o reportЭта команда также генерирует HTML-панель управления. Та же команда лежит в основе... распределенное тестирование для нескольких генераторов нагрузки. Установка описана в сопроводительном документе. JMeter инструкция по установке, а полная процедура описана в Apache JMeter страница рекордера.

⚠️ Примечание к версии: Скриншоты в приведенном ниже видеообзоре были сделаны на более старой модели компьютера. JMeter В одной из версий ещё присутствовал узел WorkBench. WorkBench был удалён в JMeter 5.0. Все принципы остаются в силе; меняется только местоположение регистратора, и текущая процедура соответствует описанной выше.

Шаг 1) Настройка HTTP-прокси-сервера

Это пошаговое руководство по настройке прокси.

  1. Начать JMeter
  2. Выбрать План тестирования на дереве
  3. Добавить Группа потоков. Щелкните правой кнопкой мыши на План тестирования и добавьте новую группу потоков: Добавить > Темы (Пользователи) > Группа потоков

Настройка HTTP-прокси-сервера

  1. Добавить HTTP-запросВыберите группу «Нити»; щелкните правой кнопкой мыши. Добавить > Элемент конфигурации > Параметры HTTP-запроса по умолчанию

Настройка HTTP-прокси-сервера

В новом элементе «Параметры HTTP-запроса по умолчанию»: в поле «Имя сервера или IP» введите «google.com». Остальные поля следует оставить пустыми.

Настройка HTTP-прокси-сервера

  1. Добавить Контроллер записиЩелкните правой кнопкой мыши на «Группа потоков» и добавьте контроллер записи: Добавить > Логический контроллер > Контроллер записи

Настройка HTTP-прокси-сервера

  1. Добавить прокси-сервер В WorkBench. Щелкните правой кнопкой мыши на WorkBench и добавьте HTTP-прокси: Добавить > Нетестовые элементы > HTTP-прокси-сервер, На JMeter 5.x, щелкните правой кнопкой мыши План тестирования вместо этого выберите узел и Программа для записи тестовых скриптов HTTP(S)..

Настройка HTTP-прокси-сервера

  1. Поставьте Target Контроллер куда будут добавлены ваши записанные сценарии

Настройка HTTP-прокси-сервера

  1. Начать Прокси-сервер. Вернитесь к HTTP-прокси-серверу и нажмите на кнопку. Начать кнопка внизу. Теперь ваш JMeter запуск прокси-сервера

Настройка HTTP-прокси-сервера

  1. Запустите браузер (я использовал Firefox), выберите Инструмент > Опция > Фильтр > Cеть > настройка > Введите HTTP-прокси, как показано на рисунке ниже. В текущей конфигурации Firefox тот же диалог доступен через Настройки > Общие > Параметры сети.

Настройка HTTP-прокси-сервера

Шаг 2) Запишите свою активность

  1. Теперь запустить http://www.google.com в вашем веб-браузере (JMeter Все еще открыт)
  2. Выполняется ли поиск по ключевому слову «guru99».
  3. Резервное в JMeter, в HTTP-прокси-сервере нажмите Stop когда закончите

Запись активности

  1. После завершения записи вы увидите JMeter автоматически создал новый HTTP-запрос, как показано на рисунке ниже.

Запись активности

JMeter уже записал запрос пользователя на домашняя страница of Google http://www.google.com/

Другие HTTP-запросы показаны на рисунке выше, их следует удалить. Потому что когда-нибудь JMeter Также записывает некоторые рекламные ссылки во время поиска по ключевому слову. Google. В нашем плане тестирования мы должны их игнорировать.

  1. Нажмите «Файл» > «Сохранить план тестирования как»

Запись активности

  1. Отобразится диалоговое окно > Введите имя вашего плана тестирования в поле «Имя файла» > Нажмите «Сохранить». Теперь ваш план тестирования сохранен под именем RecordingTestPlan.jmx.

Запись активности

Шаг 3) Запустите план тестирования

  1. Выбрать Группа потоков > Добавить > Слушатель > Сводный отчет

Запустить план тестирования

  1. Сводный отчет покажет некоторые базовые статистические данные.

Запустить план тестирования

  1. Выберите группу тем, введите информацию, как показано на рисунке ниже.

Запустить план тестирования

Вы можете обратиться к статье. JMeter Тестирование производительности Чтобы узнать подробности о настройке групп потоков.

  1. Перед началом теста выберите «Сводный отчет». Когда будете готовы запустить тест, выберите «Запуск» > «Начать» (Ctrl+R). JMeter Ваша активность будет воспроизведена 100 раз. По мере выполнения теста статистика будет меняться до его завершения.

Запустить план тестирования

Шаг 4) Сохраните результат теста

  1. Нажмите Сохранить данные таблицы сохранить результат теста в файл

Сохранить результат теста

  1. Введите название результата теста и нажмите «Сохранить». Результат теста в JMeter по умолчанию сохраняется в формате *.csv

Сохранить результат теста

Загрузите план тестирования записи файлов

Загрузите файл HTTP-прокси-сервера

Запись HTTPS-трафика и сертификатов

Сейчас почти все сайты используют HTTPS, чего не было в первоначальном руководстве. Прокси-сервер не может читать зашифрованный трафик, если браузер ему не доверяет, поэтому требуется еще один шаг.

Когда запускается диктофон, JMeter генерирует временный корневой сертификат с именем ApacheJMeterTemporaryRootCA.crt в каталоге bin. Импортируйте этот файл в браузер как доверенный центр сертификации, затем перезапустите браузер. JMeter Теперь может предъявлять собственный сертификат для каждого сайта и расшифровывать сессию для записи.

Стоит знать три момента:

  • Срок действия сертификата истекает через семь дней. Это сделано намеренно. Удалите это и оставьте. JMeter Вместо продления срока действия следует создать новый экземпляр.
  • Удалите его после завершения. Оставлять на работающем компьютере доверенный корневой сертификат — это реальная, а не теоретическая угроза безопасности.
  • Некоторые приложения отказываются это делать. Сайты, использующие привязку сертификатов или взаимное TLS-соединение, вообще не могут быть записаны через прокси-сервер, и вместо этого скрипт необходимо собирать вручную с помощью инструментов разработчика браузера.

Корреляция: Как сделать записанный сценарий воспроизводимым

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

Корреляция — вот решение. постпроцессор например, регулярное выражение ExtracTor или JSON ExtracTor получает новое значение из ответа на запрос авторизации, сохраняет его в переменной, а последующие запросы ссылаются на эту переменную вместо записанного значения.

Процесс выполнения короткий:

  1. Повторите выполнение скрипта еще раз, добавив обработчик события «Просмотр дерева результатов», и найдите первый неудачный запрос.
  2. Сравните неудачный запрос с записью. Любое значение, отличающееся между двумя запусками, необходимо сопоставить.
  3. Добавить бывшегоtracЗатем обратитесь к ответу, который выдал значение, и замените жестко закодированный литерал ссылкой на переменную.
  4. Добавьте утверждение Таким образом, страница, возвращающая HTTP-код 200 с сообщением об ошибке, всё равно не проходит тест.

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

Диагностика неисправностей

Если при выполнении описанного выше сценария возникнут проблемы, выполните следующие действия:

  1. Проверьте, подключаетесь ли вы к Интернету через прокси. Если да, удалите прокси.
  2. Откройте новый экземпляр JMeter.
  3. Откройте RecordingTestPlan.jmx в JMeter.
  4. Щелкните правой кнопкой мыши на Workbench > Merge > Выберите HTTP Proxy Server.jmx. JMeter В версии 5.x объединение выполняется с узлом «План тестирования», поскольку WorkBench больше не существует.
  5. Нажмите на «Группа тем» > «Сводный отчет».
  6. Запустите тест.

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

Часто задаваемые вопросы (FAQ)

Его удалили в JMeter 5.0. Нетестовые элементы, такие как средство записи тестовых сценариев HTTP(S), теперь добавляются непосредственно под узел «План тестирования».

Добавить URL Шаблоны, которые следует исключить на вкладке «Фильтрация запросов» в регистраторе. Шаблон, охватывающий распространенные расширения статических файлов, удаляет большую часть шума до того, как он достигнет скрипта.

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

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

Браузер не доверяет JMeter прокси. Импорт Apache.JMeterTemporaryRootCA.crt из JMeter Проверьте папку bin как доверенный источник, перезапустите браузер и повторите запись.

Да. Настройте прокси-сервер Wi-Fi устройства на IP-адрес и порт записывающего устройства, затем установите... JMeter Сертификат на устройстве. Приложения, использующие привязку сертификатов, по-прежнему не могут быть зарегистрированы.

Нет. Графический интерфейс предназначен для сборки и отладки. Запустите сам тест в режиме командной строки, что потребует гораздо меньше памяти и позволит получить HTML-отчет по завершении.

Планы тестирования сохраняются в формате .jmx, XML-формате, хорошо подходящем для систем контроля версий. Результаты записываются в формате .jtl, который по умолчанию является CSV-файлом и может также храниться в формате XML.

Подведем итог этой публикации следующим образом: