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

В чём JMeter HTTP-прокси-сервер?
JMeter HTTP-прокси-сервер — это встроенный регистратор, который находится между браузером и тестируемым веб-сайтом. Он отслеживает и записывает действия пользователя во время обычного просмотра приложения и преобразует каждый перехваченный запрос в сэмплер HTTP-запросов в плане тестирования. JMeter 3.0 элемент получил название Программа для записи тестовых скриптов HTTP(S).И оба названия описывают один и тот же компонент.
Запись тестов Это помогает тестировщику записывать и воспроизводить действия по отношению к целевому объекту тестирования. Это тип автоматизированного тестирования, но для нескольких пользователей одновременно.
Почему нужно записывать сценарий, а не создавать его вручную?
Реалистичный пользовательский сценарий на современном сайте генерирует десятки запросов, каждый из которых имеет свои заголовки, cookie и параметры формы. Typing Ввод всего этого в сэмплеры вручную — медленный и чреватый ошибками процесс. Запись же фиксирует точный трафик, отправленный браузером, что дает три преимущества:
- Точность: Порядок заголовков, файлы cookie и скрытые поля формы сохраняются в точности так, как их получил сервер.
- Скорость: На запись маршрута, занимающего десять страниц, уходит несколько минут, а на его ручное составление — несколько часов.
- Покрытие: Фоновые AJAX-запросы, невидимые в интерфейсе, тем не менее, отображаются в записи.
Запись — это отправная точка, а не завершенный тест. Перед использованием ее еще необходимо очистить, сопоставить и параметризовать. нагрузочное тестированиеВ разделах ниже описан полный путь от пустого состояния. 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-запросов по умолчанию, контроллер записи и сам регистратор, уже соединенные между собой. Создание аналогичной структуры вручную включает в себя следующие шаги.
- Создайте каркас плана. Добавьте группу потоков, а затем добавьте под ней контроллер записи. Именно сюда будут помещаться захваченные сэмплы.
- Добавьте записывающее устройство в план тестирования. Щелкните правой кнопкой мыши узел «План тестирования» и выберите Добавить > Нетестовые элементы > Программа для записи тестовых скриптов HTTP(S).Это родственный элемент группы Thread Group, а не её дочерний элемент.
- Укажите порт. По умолчанию используется порт 8888. Подойдет любой свободный порт, при условии, что браузер настроен соответствующим образом.
- Выберите Target Контроллер. Выберите контроллер записи, созданный на первом шаге, чтобы запросы группировались там, где вы ожидаете, а не были разбросаны по корневому каталогу плана.
- Добавить URL шаблоны исключения. На вкладке «Фильтрация запросов» исключите статические ресурсы, используя следующий шаблон: .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)Это позволяет избежать большей части ручной очистки, описанной далее.
- Запустите программу записи. Нажмите Начать в верхней части панели регистратора. JMeter пишет АпачиJMeterВ данный момент файл TemporaryRootCA.crt находится в папке bin, что и обеспечивает возможность записи по протоколу HTTPS.
- Направьте браузер на прокси-сервер. Используя localhost и выбранный порт, затем перемещайтесь по приложению обычным способом.
- Остановитесь и наведите порядок. Нажмите «Стоп», удалите все оставшиеся звонки от третьих лиц и сохраните план.
- Перед масштабированием выполните проверку. Щелкните правой кнопкой мыши группу потоков и выберите УтверждатьЭтот алгоритм запускает программу один раз в одном потоке, поэтому ошибки выявляются до того, как будет применена какая-либо нагрузка.
Ещё одна привычка отличает работающий скрипт от надёжного. Используйте графический интерфейс только для сборки и отладки, а настоящий тест запускайте из командной строки. jmeter -n -t plan.jmx -l results.jtl -e -o reportЭта команда также генерирует HTML-панель управления. Та же команда лежит в основе... распределенное тестирование для нескольких генераторов нагрузки. Установка описана в сопроводительном документе. JMeter инструкция по установке, а полная процедура описана в Apache JMeter страница рекордера.
⚠️ Примечание к версии: Скриншоты в приведенном ниже видеообзоре были сделаны на более старой модели компьютера. JMeter В одной из версий ещё присутствовал узел WorkBench. WorkBench был удалён в JMeter 5.0. Все принципы остаются в силе; меняется только местоположение регистратора, и текущая процедура соответствует описанной выше.
Шаг 1) Настройка HTTP-прокси-сервера
Это пошаговое руководство по настройке прокси.
- Начать JMeter
- Выбрать План тестирования на дереве
- Добавить Группа потоков. Щелкните правой кнопкой мыши на План тестирования и добавьте новую группу потоков: Добавить > Темы (Пользователи) > Группа потоков
- Добавить HTTP-запросВыберите группу «Нити»; щелкните правой кнопкой мыши. Добавить > Элемент конфигурации > Параметры HTTP-запроса по умолчанию
В новом элементе «Параметры HTTP-запроса по умолчанию»: в поле «Имя сервера или IP» введите «google.com». Остальные поля следует оставить пустыми.
- Добавить Контроллер записиЩелкните правой кнопкой мыши на «Группа потоков» и добавьте контроллер записи: Добавить > Логический контроллер > Контроллер записи
- Добавить прокси-сервер В WorkBench. Щелкните правой кнопкой мыши на WorkBench и добавьте HTTP-прокси: Добавить > Нетестовые элементы > HTTP-прокси-сервер, На JMeter 5.x, щелкните правой кнопкой мыши План тестирования вместо этого выберите узел и Программа для записи тестовых скриптов HTTP(S)..
- Поставьте Target Контроллер куда будут добавлены ваши записанные сценарии
- Начать Прокси-сервер. Вернитесь к HTTP-прокси-серверу и нажмите на кнопку. Начать кнопка внизу. Теперь ваш JMeter запуск прокси-сервера
- Запустите браузер (я использовал Firefox), выберите Инструмент > Опция > Фильтр > Cеть > настройка > Введите HTTP-прокси, как показано на рисунке ниже. В текущей конфигурации Firefox тот же диалог доступен через Настройки > Общие > Параметры сети.
Шаг 2) Запишите свою активность
- Теперь запустить http://www.google.com в вашем веб-браузере (JMeter Все еще открыт)
- Выполняется ли поиск по ключевому слову «guru99».
- Резервное в JMeter, в HTTP-прокси-сервере нажмите Stop когда закончите
- После завершения записи вы увидите JMeter автоматически создал новый HTTP-запрос, как показано на рисунке ниже.
JMeter уже записал запрос пользователя на домашняя страница of Google http://www.google.com/
Другие HTTP-запросы показаны на рисунке выше, их следует удалить. Потому что когда-нибудь JMeter Также записывает некоторые рекламные ссылки во время поиска по ключевому слову. Google. В нашем плане тестирования мы должны их игнорировать.
- Нажмите «Файл» > «Сохранить план тестирования как»
- Отобразится диалоговое окно > Введите имя вашего плана тестирования в поле «Имя файла» > Нажмите «Сохранить». Теперь ваш план тестирования сохранен под именем RecordingTestPlan.jmx.
Шаг 3) Запустите план тестирования
- Выбрать Группа потоков > Добавить > Слушатель > Сводный отчет
- Сводный отчет покажет некоторые базовые статистические данные.
- Выберите группу тем, введите информацию, как показано на рисунке ниже.
Вы можете обратиться к статье. JMeter Тестирование производительности Чтобы узнать подробности о настройке групп потоков.
- Перед началом теста выберите «Сводный отчет». Когда будете готовы запустить тест, выберите «Запуск» > «Начать» (Ctrl+R). JMeter Ваша активность будет воспроизведена 100 раз. По мере выполнения теста статистика будет меняться до его завершения.
Шаг 4) Сохраните результат теста
- Нажмите Сохранить данные таблицы сохранить результат теста в файл
- Введите название результата теста и нажмите «Сохранить». Результат теста в JMeter по умолчанию сохраняется в формате *.csv
Загрузите план тестирования записи файлов
Загрузите файл HTTP-прокси-сервера
Запись HTTPS-трафика и сертификатов
Сейчас почти все сайты используют HTTPS, чего не было в первоначальном руководстве. Прокси-сервер не может читать зашифрованный трафик, если браузер ему не доверяет, поэтому требуется еще один шаг.
Когда запускается диктофон, JMeter генерирует временный корневой сертификат с именем ApacheJMeterTemporaryRootCA.crt в каталоге bin. Импортируйте этот файл в браузер как доверенный центр сертификации, затем перезапустите браузер. JMeter Теперь может предъявлять собственный сертификат для каждого сайта и расшифровывать сессию для записи.
Стоит знать три момента:
- Срок действия сертификата истекает через семь дней. Это сделано намеренно. Удалите это и оставьте. JMeter Вместо продления срока действия следует создать новый экземпляр.
- Удалите его после завершения. Оставлять на работающем компьютере доверенный корневой сертификат — это реальная, а не теоретическая угроза безопасности.
- Некоторые приложения отказываются это делать. Сайты, использующие привязку сертификатов или взаимное TLS-соединение, вообще не могут быть записаны через прокси-сервер, и вместо этого скрипт необходимо собирать вручную с помощью инструментов разработчика браузера.
Корреляция: Как сделать записанный сценарий воспроизводимым
Записанный скрипт точно воспроизводит то, что произошло однажды, что редко совпадает с повторением во второй раз. Идентификаторы сессии, токены и сгенерированные ключи, захваченные во время записи, становятся недействительными к моменту воспроизведения скрипта, и выполнение завершается с ошибкой, которая выглядит как ошибка приложения.
Корреляция — вот решение. постпроцессор например, регулярное выражение ExtracTor или JSON ExtracTor получает новое значение из ответа на запрос авторизации, сохраняет его в переменной, а последующие запросы ссылаются на эту переменную вместо записанного значения.
Процесс выполнения короткий:
- Повторите выполнение скрипта еще раз, добавив обработчик события «Просмотр дерева результатов», и найдите первый неудачный запрос.
- Сравните неудачный запрос с записью. Любое значение, отличающееся между двумя запусками, необходимо сопоставить.
- Добавить бывшегоtracЗатем обратитесь к ответу, который выдал значение, и замените жестко закодированный литерал ссылкой на переменную.
- Добавьте утверждение Таким образом, страница, возвращающая HTTP-код 200 с сообщением об ошибке, всё равно не проходит тест.
Только после корреляции скрипт можно безопасно масштабировать. Запуск некоррелированной записи для ста пользователей измеряет обработку ошибок, а не... производительностьДополнительные элементы рассматриваются в других разделах. JMeter учебные пособия.
Диагностика неисправностей
Если при выполнении описанного выше сценария возникнут проблемы, выполните следующие действия:
- Проверьте, подключаетесь ли вы к Интернету через прокси. Если да, удалите прокси.
- Откройте новый экземпляр JMeter.
- Откройте RecordingTestPlan.jmx в JMeter.
- Щелкните правой кнопкой мыши на Workbench > Merge > Выберите HTTP Proxy Server.jmx. JMeter В версии 5.x объединение выполняется с узлом «План тестирования», поскольку WorkBench больше не существует.
- Нажмите на «Группа тем» > «Сводный отчет».
- Запустите тест.
Еще два симптома объясняют большинство оставшихся сбоев. Если браузер сообщает о невозможности подключения, значит, программа записи так и не была запущена, или порт, указанный в браузере, не совпадает с портом, указанным в настройках. JMeterЕсли страницы загружаются нормально, но в дереве ничего не отображается, значит, трафик осуществляется по протоколу HTTPS, и сертификат не был импортирован.



















