Вступление
В этом уроке мы научим вас настраивать и использовать Apache JMeter HTTP (S) Test Script Recorder для записи HTTP-запросов. Запись HTTP-запросов является отличным способом построения планов тестирования и может быть полезна при создании тестов, которые близко имитируют поведение обычного пользователя.
В этом руководстве предполагается, что у вас есть базовые знания Apache JMeter. Если вы новичок в JMeter, вот еще одно руководство, которое поможет вам начать: https://www.digitalocean.com/community/tutorials/how-to-use-apache-jmeter-to-perform-load-testing-on -a-web-server [Как использовать Apache JMeter для выполнения нагрузочного тестирования на веб-сервере]
Предпосылки
Вот список программного обеспечения, которое требуется для этого учебника:
-
Apache JMeter: Download здесь двоичные файлы
-
Java 6 или более поздняя версия: Oracle Java доступна здесь
-
Mozilla Firefox: Download здесь
Для справки, при написании данного руководства мы использовали следующие версии программного обеспечения:
-
Oracle Java 7, обновление 60, 64-разрядная версия
-
JMeter 2.11
-
Firefox 30.0
Начните строить план тестирования
Сначала запустите JMeter. Тогда давайте начнем строить план тестирования. Если у вас уже есть план тестирования, с которого вы хотели бы начать, пропустите этот раздел и перейдите к добавлению Recording Controller в вашу группу потоков (следующий раздел).
Как минимум, мы хотим добавить группу потоков и HTTP-запрос по умолчанию. Давайте начнем с добавления группы потоков.
Добавить группу тем
Добавьте группу потоков в план тестирования:
-
Щелкните правой кнопкой мыши на Test Plan
-
Наведите курсор мыши на _Добавить> _
-
Наведите курсор мыши на _Threads (Пользователи)> _
-
Нажмите на Thread Group
Установите свойства группы потоков со следующими значениями:
-
* Количество потоков (пользователей) *: установите значение * 50 *
-
* Период разгона (в секундах) *: установите значение * 10 *.
-
* Loop Count *: оставьте этот параметр равным * 1 *.
изображение: https: //assets.digitalocean.com/articles/jmeter/thread_group1.png [Свойства группы потоков]
Добавить HTTP-запрос по умолчанию
Теперь давайте добавим HTTP-запрос по умолчанию в группу потоков:
-
Выберите Thread Group, затем щелкните правой кнопкой мыши
-
Наведите курсор мыши на _Добавить> _
-
Наведите курсор мыши на элемент _Config> _
-
Нажмите на HTTP-запрос по умолчанию
В разделе «Параметры HTTP-запроса по умолчанию» в разделе «Веб-сервер» заполните поле «Имя_сервера» или «IP_» именем или IP-адресом веб-сервера, который вы хотите проверить.
изображение: https: //assets.digitalocean.com/articles/jmeter/http_request_defaults.png [HTTP-запрос по умолчанию]
Добавить HTTP Cookie Manager
Если ваш веб-сервер использует файлы cookie, вы можете добавить поддержку файлов cookie, добавив HTTP Cookie Manager в группу потоков:
-
Выберите Thread Group, затем щелкните правой кнопкой мыши
-
Наведите курсор мыши на _Добавить> _
-
Наведите курсор мыши на элемент _Config> _
-
Нажмите на HTTP Cookie Manager
Добавить контроллер записи
Теперь давайте добавим контроллер записи в группу потоков:
-
Выберите Thread Group, затем щелкните правой кнопкой мыши
-
Наведите курсор мыши на _Добавить> _
-
Наведите курсор мыши на _Logic Controller> _
-
Нажмите _ Контроллер записи _
Контроллер записи - это место, где будут создаваться записанные сэмплеры HTTP-запросов. Следующим шагом является настройка HTTP (S) Test Script Recorder.
Добавить HTTP (S) Test Script Recorder
Теперь давайте добавим регистратор тестовых сценариев HTTP (S) в WorkBench:
-
Выберите WorkBench, затем щелкните его правой кнопкой мыши
-
Наведите курсор мыши на _Добавить> _
-
Наведите курсор мыши на _Non-Test Elements> _
-
Нажмите на HTTPS) Test Script Recorder
-
Примечание: * Элементы, добавленные в WorkBench, не сохраняются вместе с остальной частью плана тестирования. Если вы хотите сохранить свой WorkBench, щелкните правой кнопкой мыши на WorkBench, затем выберите _Save Selection As… _ и сохраните его в нужном месте. После сохранения вы можете добавить его в любой открытый план тестирования, используя пункт меню «Слияние» и выбрав свой сохраненный WorkBench.
-
Настройка порта
Порт по умолчанию, на котором будет работать прокси-рекордер HTTP (S) Test Script Recorder, это + 8080 . Это можно изменить, изменив настройку « Порт» в разделе «Глобальные настройки».
Включение или исключение шаблонов URL (необязательно)
В регистраторе сценариев HTTP (S) вы можете добавлять шаблоны URL, записанные в виде регулярных выражений, для включения или исключения при записи. Это может быть полезно для включения только тех типов контента, которые вы хотите запросить (например, * .html, * .php и т. д.) или для исключения типов контента, который вы не хотите запрашивать (например, * .jpg, * .png, * .js и т. д.).
Чтобы добавить шаблон URL, нажмите кнопку «Добавить» под разделом _URL «Шаблоны для включения» или «Шаблоны URL для исключения», затем нажмите на верхнюю часть белой области в разделе. Теперь вы должны быть в состоянии набрать шаблон. Повторите процесс, чтобы добавить больше шаблонов.
Пример: шаблоны URL для веб-страниц
.*\.html
.*\.php
.*\.htm
Пример: шаблоны URL для изображений
.*\.png
.*\.jpg
.*\.gif
Вот скриншот шаблонов URL, которые нужно исключить для исключения изображений:
изображение: https: //assets.digitalocean.com/articles/jmeter/exclude_images.png [Шаблоны URL для исключения изображений]
Добавление элементов в Script Recorder (необязательно)
Добавление элементов JMeter в регистратор тестовых сценариев HTTP (S) сделает записанные запросы наследующими добавленный элемент. Например, если мы добавим элемент Timer в Script Recorder, таймер будет добавлен к каждому записанному HTTP-запросу. Когда тест выполняется, таймер заставит каждый тестовый поток ждать перед выполнением HTTP-запроса.
Давайте добавим постоянный таймер в HTTP (S) Test Script Recorder, например:
-
Выберите HTTP (S) Test Script Recorder, затем щелкните его правой кнопкой мыши
-
Наведите курсор мыши на _Добавить> _
-
Наведите курсор мыши на _Timers> _
-
Нажмите на Constant Timer
Вы можете настроить задержку потока по своему усмотрению.
изображение: https: //assets.digitalocean.com/articles/jmeter/constant_timer.png [постоянный таймер]
Предположим, что вы хотите смоделировать пользователя, нажимающего на другую страницу каждые 2 секунды. Установка задержки потока равной 2000 мс будет достигнута путем добавления 2-секундной задержки к каждому записанному HTTP-запросу.
Это только один пример того, как вы можете добавлять элементы в Script Recorder, чтобы помочь создать план тестирования, который выполняет необходимые тесты.
Начать запись
Нажав на кнопку «Пуск» в нижней части окна Script Recorder, вы запустите прокси-сервер JMeter, который будет использоваться для перехвата и записи запросов браузера. Нажмите на кнопку Пуск (на рекордере) сейчас.
При первой попытке запустить рекордер будет отображено сообщение о том, что он не может запуститься, поскольку сертификат не существует. Нажмите OK, затем нажмите Start во второй раз. Вы должны увидеть сообщение о том, что временный сертификат с именем ApacheJMeterTeilitaryRootCA.crt был создан в каталоге bin JMeter. Нажмите OK и продолжите.
изображение: https: //assets.digitalocean.com/articles/jmeter/temp_cert.png [Временный сертификат создан]
-
Примечание: * Если ваш браузер уже использует прокси, вам необходимо настроить JMeter для использования этого прокси перед запуском JMeter, используя параметры командной строки -H и -P.
Настройте Firefox для использования JMeter Proxy
Мы будем использовать Firefox в качестве нашего браузера при использовании регистратора тестовых сценариев JMeter HTTP (S), поскольку, в отличие от Chrome и некоторых других браузеров, он позволяет переопределить общесистемную конфигурацию для параметров прокси-сервера.
Настройте Firefox для использования localhost (127.0.0.1) на порту 8080 в качестве прокси-сервера для всего трафика, выполнив следующие действия:
-
Откройте Firefox
-
Перейти в меню настроек
-
Нажмите на вкладку "Дополнительно"
-
Затем вкладка Сеть
-
В разделе «Подключение» нажмите «Настройки…»
-
Выберите переключатель «Ручная настройка прокси»
-
Установите HTTP-прокси на «localhost» и порт на «8080»
-
Установите флажок «Использовать этот прокси-сервер для всех протоколов»
-
Нажмите OK и выйдите из меню настроек
-
Примечание: * Когда Firefox настроен для использования Script Recorder JMeter в качестве прокси, он будет работать правильно только в том случае, если Script Recorder работает.
-
Запись HTTP-запросов
Теперь, когда запущен регистратор тестовых сценариев HTTP (S) нашего плана тестирования, и Firefox настроен на его использование в качестве прокси, HTTP-запросы, отправляемые Firefox, будут записываться. Давайте проверим это.
В Firefox перейдите на домашнюю страницу вашего сервера (тот же сервер, который вы настроили в настройках HTTP-запросов JMeter по умолчанию):
http://your_domain.com/
Теперь рядом с вашим контроллером записи должен быть маленький треугольник. Нажмите на него, чтобы развернуть и показать запросы, которые он записал. Вы должны увидеть HTTP-запросы, которые были записаны, в зависимости от того, какие шаблоны URL вы включили и исключили. Не стесняйтесь просматривать ваш сайт, чтобы записать больше запросов.
Вот пример того, что было записано при посещении домашней страницы сайта WordPress (без установленных шаблонов URL):
изображение: https: //assets.digitalocean.com/articles/jmeter/no_patterns.png [Записанные HTTP-запросы]
Как видите, было создано много запросов. Вы можете уточнить список HTTP-запросов, просто удалив ненужные записи здесь.
Если вы не видите никаких записей в вашем контроллере записи, вам нужно просмотреть шаблоны URL в регистраторе тестовых сценариев HTTP (S) (Совет: удалите все включения и исключения, чтобы записать все).
Когда вы закончите запись, нажмите кнопку «Стоп» в нижней части окна HTTP (S) Test Script Recorder. Обратите внимание, что Firefox больше не сможет открывать какие-либо страницы (поскольку он настроен на использование порта 8080 в качестве прокси-сервера) - настройте его на использование «Без прокси», если вы хотите нормально работать.
Запустите свой план тестирования
Если вы довольны записанным планом тестирования, сохраните его и запустите. Он будет работать точно так же, как созданный вручную тест, поэтому вы можете настроить его, удалить и добавить элементы, чтобы он более точно соответствовал желаемому тестовому сценарию.
Заключение
Теперь, когда вы можете использовать HTTP (S) Test Script Recorder, чтобы помочь в создании планов тестирования JMeter, вам будет проще создавать планы тестирования, которые имитируют реалистичные сценарии. Не стесняйтесь просматривать записанные запросы в вашем контроллере записи, чтобы узнать больше о видах запросов, которые делаются, когда пользователи просматривают ваш веб-сервер.
Удачи!