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


В итоге каждый раз я судорожно вспоминаю как работать с jmeter-ом. Скачиваю, запускаю и полдня вспоминаю как его настраивать.

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

Лет 10-15 назад на одной из своих первых работ для задач нагрузочного тестирования мы использовали утилиту, которая кажется так и называлась стресс-тул (вроде даже микрософтовская). Она была простая и интуитивно понятная. Только я ее уже 10 лет не видел и не знаю, использует ее кто-нибудь еще сейчас.

Последние несколько лет пользуюсь JMeter-ом (или облачными сервисами). Пользовательский интерфейс JMeter-а (если с ним не работать регулярно) совсем не интуитивно понятный. Без прочтения документации или просмотра обучающего фильма очень сложно сделать даже самый простой тест (скажем 1000 запросов к одному URL-у).

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

Итак.
1. Скачиваем дистрибутив: http://jmeter.apache.org/

2. Запускаем. Добавляем Thread Group.

3. Добавляем примерный HTTP запрос

4. Указываем сервер и запрос

4. Добавляем нужный отчет. Они бывают в виде таблички, дерева, графика и т.д.

Всё. Жмем на зеленый треугольник и смотрим отчет. Для увеличение нагрузки меняем параметры Thread Group.

Про прокси

Чтобы не писать руками все HTTP запросы, можно сделать проще:
1. Установить встроенный в JMetter HTTP Proxy сервер.

2. Запустить прокси-сервер

3. Затем прописать этот прокси в настройках браузера.
4. Открыть в этом браузере нужную страницу сайта-жертвы.
5. Сделать необходимые действия. Все запросы запишутся.
При необходимости отретушировать список запросов.

Дальше останется только запустить JMeter, чтобы он повторил все ваши действия десять тысяч раз (ну или сколько пожелаете).

Про логин

Для того чтобы можно было логиниться через формы, скорее всего понадобится поддержка кукисов.
Для этого нужно добавить Cookie Manager. Важно добавить его в нужное место.

Еще раз про куки

Самое интересное то, что cookie могут раздаваться сайтом не совсем верные.
Например, если вы захотите проверить jmeter-ом какой-нибудь блог, то возможно у вас не получится даже залогиниться.
Суть проблемы описывать долго, в частности, есть некоторые баги именно с WordPress-ом.
Тем не менее, есть обходной манёвр - нужно в настройках jmeter-а отключить проверку cookies-ов.

Делается так:
1. Открывается файл jmeter.properties
2. Делается его резервная копия
3. Указываем: CookieManager.check.cookies=false