Разделы портала

Онлайн-тренинги

.
Основы JMeter, введение: Получение биткойн-заказов от Mercado Bitcoin API
06.11.2020 00:00

jmeter1Автор: Джуао Фариас (João Farias)
Оригинал статьи
Перевод: Ольга Алифанова

Mercado Bitcoin – это один из самых крупных бразильских обменников криптовалюты. Он позволяет обменивать Bitcoin, Litecoin, Ethereum и другие криптоденьги.

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

В этой статье мы изучим производительность эндпойнта orderbook. Это регистрация всех запросов на сделку (покупку и продажу). Мы будем запрашивать конечную точку для книги заказов Bitcoin много раз, и зафиксируем, сколько времени занимает завершение запросов.

Создаем тест-план

Корень любого проекта JMeter – это тест-план.

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

В нашем случае тест-план будет нужен для того, чтобы дать проекту имя.

Тут мы просто меняем имя тест-плана, и JMeter обновляет его в древовидной структуре.

(детали тест-плана, задаем имя набору взаимодействий)

Группы потоков: конфигурация запуска

Элементы групп потоков нужны для настройки сценария запуска – они говорят о том, как будет осуществляться прогон.

В группах цепочек можно определять запросы, которые мы хотим отправить, а также их частоту.

 

У группы потоков три основных конфигурационных параметра:

  • Количество потоков (пользователей) – Number of threads (users): устанавливает, сколько пользователей будет имитировано. Каждый пользователь будет выполнять каждый запрос в группе потоков. К примеру, если вы задаете запросы к двум эндпойнтам и 30 потоков, то получите 60 запросов.
  • Темп (в секундах)- Ramp-up time: это время, которое понадобится JMeter для запуска всех настроенных потоков. К примеру, если у нас 50 потоков и темп 250 секунд, то каждый поток будет стартовать через пять секунд после предыдущего.

Поток 1 - время 0
Поток 2 - время 5

Поток 50 - время 250

  • Количество циклов - Loop Count: сколько раз будет запускаться группа потоков целиком – фактически это цикл. В примере выше, если задать количество циклов 3, JMeter понадобится 250 секунд, чтобы запустить первые 60 запросов; когда все они завершатся, JMeter возьмет еще 250 секунд, чтобы запустить еще 60 запросов, а затем он повторит это еще раз. Общее количество запросов – 180, однако общее время не будет равняться 250*3=750 секунд. Оно будет равно 750 секундам плюс общее время, которое понадобится на завершение последнего запроса (в случае, если у вашего приложения плохая производительность).

Образцы: наши тесты

Образец (Sampler) – это то, что мы будем тестировать. Он определяет сам запрос.

В нашем примере мы будем использовать только HTTP-запросы.

У образца два основных параметра:

  • Сервер (Web Server): определяет URL сервера, к которому мы стучимся.
  • Запрос (HTTP Request): определяет HTTP-метод (GET, POST, PATCH…) и путь к HTTP-ресурсу.

Обработчики событий: отчет о результатах

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

Тут в дело вступают обработчики событий. Задача обработчика – выводить результаты всех запросов из группы потоков особым образом.

В нашем примере мы будем использовать обработчики "Дерево просмотра результатов" ("View Results Tree") и "Сводный отчет" ("Summary Report").

"Дерево просмотра результатов" будет выводить данные каждого запроса отдельно, показывая детали запроса, детали ответа и сводную информацию о вызове.

"Сводный отчет" показывает статистические данные набора запросов, учитывая время и размер запроса.

Взять код для JMeter можно здесь.

Что делать дальше?

У JMeter много функций – различные типы серверов, различные обработчики.

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

В следующих статьях мы поговорим о:

  • Переменных
  • Тестах
  • Google Drive и OAuth
  • Запуск JMeter через Jenkins