Пошаговое руководство с примером проекта

Apache JMeter - это программный инструмент, который используется для нагрузочного тестирования приложений по различным протоколам и технологиям. Он написан на Java и может работать на любых платформах, поддерживающих Java, таких как macOS, Windows и т. Д. Он даже предлагает IDE для разработки нагрузочных тестов. Вы можете запускать нагрузочные тесты двумя способами: одним способом с помощью IDE и другим способом с помощью интерфейса командной строки. JMeter может тестировать как динамические, так и статические ресурсы, предоставляя некоторые входные данные во время тестирования. JMeter является многопоточным и может имитировать множество виртуальных пользователей.

Вы можете настроить JMeter распределенным образом, чтобы вы могли масштабировать его по горизонтали, если вы хотите масштабировать тестирование производительности для своих приложений. Существует так много типов нагрузочных тестов, как время отклика веб-приложений, количество пользователей, которые может обрабатывать приложение, автоматизация нагрузочного тестирования в процессе CI / CD и т. Д.

В этом посте мы увидим, как провести нагрузочный тест Python REST API и увидеть время отклика, количество пользователей, с которыми он может справиться, и т. Д.

  • Предварительные требования
  • Установить JMeter
  • Пример проекта
  • Общие сведения о JMeter
  • Создание плана тестирования
  • Выполнение плана тестирования
  • Резюме
  • Заключение

Предпосылки

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

Сначала нам нужно установить python на ваш компьютер. После установки вы можете запустить код Python на своем компьютере. Вот что вам понадобится на вашем компьютере перед написанием REST API.

Вы можете проверить версии python и pip с помощью этих команд.

// I am using Mac OS
python3 --version
pip3 --version

Если вы новичок в Python и не знаете, как с его помощью создать REST API, я бы порекомендовал прочитать приведенную ниже статью. Мы взяли за основу проект из этой статьи.

Как написать REST API с Python и Flask

Установить JMeter

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

https://jmeter.apache.org/usermanual/get-started.html#install

Вот шаги для установки в Mac OS.

// install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
// update Homebrew
brew update
// install JMeter
brew install jmeter

Вы можете запустить JMeter с помощью этой команды, и вы увидите всплывающий графический интерфейс.

jmeter

Пример проекта

Вот ссылка на Github для примера проекта, который вы можете просто клонировать и запустить на своем компьютере.

// clone the project
git clone https://github.com/bbachi/python-flask-restapi.git

Вам необходимо выполнить следующие команды, чтобы установить необходимые зависимости и запустить проект.

// install dependencies (Mac OS)
python3 -m pip install -r requirements.txt
// run the app
flask run

Вот простой пример, который возвращает задачи с другой конечной точкой /api/tasks. После того, как вы определили задачи и вам нужно преобразовать их в JSON с помощью модуля son.

Вот результат, когда вы нажимаете его в браузере.

Понимание JMeter

Есть некоторая терминология, которую нам нужно понять в отношении JMeter и для обработки RESTful-сервисов. Пойдем по одному.

План тестирования

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

Группы потоков

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

Вы можете настроить несколько потоков, и JMeter выделяет несколько потоков для имитации одновременных подключений к серверу. Существует время нарастания активности всех потоков.

Контроллеры

Есть два типа контроллеров: Контроллеры сэмплера отправляют запросы на сервер. К ним относятся HTTP, FTP, JDBC, LDAP и т. Д., Логические контроллеры, логику которых можно настроить.

Пробоотборники

Это компоненты, которые можно использовать для отправки запроса на сервер и ожидания ответа, такого как HTTP-запрос.

Слушатели

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

Есть очень много других компонентов, таких как препроцессоры, постпроцессоры, таймеры и т. Д., Но они выходят за рамки данной статьи.

Создание плана тестирования

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

Вот две операции, которые мы тестируем.

Создать задачу

Создание задачи - это пост-вызов, который принимает тело запроса и сохраняет его в коллекцию задач.

URL: http://127.0.0.1:5000/api/task
Method: POST
Body:
 
{
 "task": {
        "id": 234324,
        "name": "task",
        "description": "This is task erwer"
    }
}

Получить запрос

Получить задачи - это простой URL-адрес GET, который извлекает все задачи из коллекции задач.

URL: http://127.0.0.1:5000/api/tasks

Вот результат, когда вы нажимаете его в браузере.

Давайте создадим новый план тестирования, нажав на новый. Вы можете изменить URL-адреса соответствующим образом независимо от порта и домена, в котором вы используете этот Python REST API.

Давайте создадим новый план тестирования, нажав на новый

Щелкните правой кнопкой мыши план тестирования и выберите группу потоков, как показано ниже.

Теперь нам нужно настроить количество потоков, время разгона и т. Д.

После настройки группы потоков пора выбрать сэмплер. Поскольку нам нужно протестировать конечные точки REST, нам нужно выбрать HTTP-запрос

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

Добавим пост-запрос на создание задачи. Поскольку это пост-вызов, нам также нужно передать тело.

Давайте добавим слушателей для просмотра отчетов.

Наконец, вы можете увидеть окно ниже со всеми компонентами плана тестирования.

Выполнение плана тестирования

Вот кнопки запуска и остановки для плана запуска и остановки.

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

Наконец, вы можете проанализировать отчеты, как показано ниже.

Резюме

  • Apache JMeter - это программный инструмент, который используется для нагрузочного тестирования приложений по различным протоколам и технологиям.
  • Он написан на Java и может работать на любых платформах, поддерживающих Java, таких как macOS, Windows и т. Д. Он даже предлагает IDE для разработки нагрузочных тестов.
  • Вы можете запускать нагрузочные тесты двумя способами: одним способом с помощью IDE и другим способом с помощью интерфейса командной строки. JMeter может тестировать как динамические, так и статические ресурсы, предоставляя некоторые входные данные во время тестирования.
  • Вы можете настроить JMeter распределенным образом, чтобы вы могли масштабировать его по горизонтали, если вы хотите масштабировать тестирование производительности для своих приложений.
  • План тестирования - это корневой элемент JMeter, и все, что вам нужно, чтобы сохранить как план тестирования. На самом деле он содержит множество компонентов, таких как ThreadGroups, препроцессоры, постпроцессоры, утверждения, слушатели и т. Д.
  • Следующее, что мы настраиваем после плана тестирования, - это группы потоков, и это точки входа для всех ваших тестов. Контроллеры и пробоотборники для tets должны находиться в группе потоков.
  • Есть два типа контроллеров: Контроллеры сэмплера отправляют запросы на сервер. К ним относятся HTTP, FTP, JDBC, LDAP и т. Д., Логические контроллеры, логику которых можно настроить.
  • Это компоненты, которые можно использовать для отправки запроса на сервер и ожидания ответа, такого как HTTP-запрос.
  • Слушатели - это компоненты, которые могут собирать результаты и отображать сводные отчеты. Они позволяют сохранять данные в формате XML или CSV.

Заключение

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