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

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

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

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

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

Предпосылки

Вот предварительные условия для этой статьи. Если у вас их нет в системе, установите их, если хотите попрактиковаться на своем компьютере.

Среда выполнения Java и SDK: нам нужна среда выполнения Java и SDK для запуска приложений Java. Это основной компонент для запуска приложений Java.

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

Spring Boot: Spring - это фреймворк, который упрощает нашу жизнь при разработке этих приложений на основе Java. Spring Boot упрощает создание автономных приложений на основе Spring производственного уровня, которые можно «просто запустить».

Maven: Maven нужен для установки зависимостей, упаковки и сборки проекта.

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

Swagger: документация по API

Почтальон: ручное тестирование ваших API

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

Как создать Java REST API с помощью Spring Boot и MongoDB

Установить 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/java-restapi-mongo.git

Вот основные классы и классы контроллера.

Вы можете просто щелкнуть правой кнопкой мыши основной класс и запустить его, как показано ниже.

Понимание JMeter

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

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

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

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

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

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

Контроллеры

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

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

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

Слушатели

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

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

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

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

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

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

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

URL: http://localhost:8081/todo/task
Request Body:{
 "name": "sdfsdfs",
 "description": "sdfsdfsdfsd i sdescription!!",
 "createdBy" : "system"
}

Получить задачи

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

URL: http://localhost:8081/todo/tasks

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

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

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

После настройки группы потоков пора выбрать сэмплер. Поскольку нам нужно протестировать конечные точки 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 имеет множество плагинов и шаблонов, которые вы можете использовать. Этот пост - очень хорошая отправная точка для дальнейшего изучения. В будущих публикациях мы увидим более сложные варианты использования.