Рубрики
Без рубрики

Введение в нагрузочное тестирование с помощью Apache JMeter

Привет! В этом посте я хотел бы затронуть проблему нагрузочного тестирования. Один из лучших инструментов… С тегами java, учебник, тестирование.

Привет! В этом посте я хотел бы затронуть проблему нагрузочного тестирования. Одним из лучших доступных инструментов является Apache JMeter. Он бесплатный, с открытым исходным кодом и, благодаря своей природе Java, кроссплатформенный. Хотя у него немного странный интерфейс, поэтому эта статья также служит для быстрого начала работы с JMeter. В этом посте мы рассмотрим, что такое нагрузочное тестирование и чем оно отличается от тестирования производительности; как работает JMeter и как составлять ваши тесты; и, наконец, – мы бы протестировали очень простой сервер, написанный с помощью простого Vert.x.

Что такое нагрузочное тестирование?

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

Введение в JMeter

В этом разделе мы бы быстро начали с Apache JMeter. Я предполагаю, что он уже установлен на вашем компьютере. Если у вас его нет, вы можете скачать его на веб-сайте Apache Foundation . Но имейте в виду, что для запуска требуется как минимум Java 8.

Начало работы с JMeter

Для начала давайте просто быстро рассмотрим интерфейс JMeter. Когда вы запустите его, вы увидите аналогичное окно, как на скриншоте ниже:

Я разделил окно JMeter на 3 области:

  1. Область плана тестирования представляет собой древовидную структуру, в которой вы можете управлять структурой своего теста, добавлять/удалять элементы (см. Далее о них)
  2. Панель инструментов панель содержит наиболее важные действия, применяемые к тесту – сохранить/открыть сохраненный тест, запустить и т.д.
  3. Область элементов в этой части вы можете настроить отдельный элемент (группу потоков, элементы и т.д.)

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

Структура плана тестирования

JMeter использует свою собственную терминологию, с которой вы должны быть знакомы. Одним из ключевых понятий здесь является план тестирования . План тестирования представляет собой корневую структуру нагрузочных тестов и представляет, что тестировать и как это делать. Он может включать группы потоков , которые управляют количеством потоков, которые JMeter будет использовать во время теста. Группы потоков включают в себя различные элементы , например пробоотборники (используются для отправки запросов на сервер; например, HTTP или FTP-запросы), логические контроллеры (для определения логических условий; если/для и т.д.), слушатели (используется для визуализации результатов тестов в виде таблиц, графиков, деревьев или простого текста в некоторых файлах журналов). Эти элементы наиболее часто используются, но не только они. Есть и другие, такие как утверждения , элементы конфигурации , таймеры и т.д., Которые вы можете использовать в своих тестах. Также стоит помнить о порядке выполнения элементов плана тестирования:

  1. Элементы конфигурации
  2. Предварительные процессоры
  3. Таймеры
  4. Пробоотборник
  5. Постпроцессоры (если только SampleResult не равен нулю)
  6. Утверждения (если только SampleResult не равен нулю)
  7. Слушатели (если только SampleResult не равен нулю)

Вы можете найти более подробное описание элементов плана тестирования в этом учебном пособии Tutorialspoint . В свою очередь, я бы не стал тратить ваше время – так что давайте перейдем непосредственно к примеру API.

Пример API

Написание REST API не является темой этого поста, поэтому мы будем использовать очень простой API. Для этого примера мы даже не будем использовать никаких внешних зависимостей – пакета Vert.x Core более чем достаточно. Нам просто нужна фиктивная конечная точка, не более того. Добавьте этот код:

public class DummyService extends AbstractVerticle {

    private long start;

    @Override
    public void start() throws Exception {
        HttpServer server = vertx.createHttpServer();
        start = System.currentTimeMillis();
        server.requestHandler(req->{
            long stop = System.currentTimeMillis();
            long duration = stop - start;
            req.response().end("Service is running "+duration+" ms");
        });
        server.listen(8800, "localhost");
    }

    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        vertx.deployVerticle(new DummyService());
    }

}

Запустите это и войдите в свой браузер, чтобы проверить, все ли в порядке и работает:

Теперь у нас есть фиктивная конечная точка, давайте напишем простой нагрузочный тест с помощью Apache JMeter.

Как выполнить нагрузочное тестирование с помощью JMeter?

В этом разделе мы хотели бы создать простой нагрузочный тест с помощью Apache JMeter. Вам следует выполнить следующие действия:

Шаг 1. Создать новую группу потоков

Чтобы начать нагрузочное тестирование, нам нужно создать новую группу потоков. Щелкните правой кнопкой мыши на План тестирования и выберите Добавить > Потоки (Пользователи) > Группа потоков . Здесь мы можем указать следующие параметры:

  • Количество
  • наращивание объемов
  • Петля

Шаг 2. Настройка конфигурации

Следующий шаг – настроить конфигурацию для нашего нагрузочного теста. Наш фиктивный api работает как localhost:8800 , поэтому мы должны сообщить JMeter, где его найти. Щелкните правой кнопкой мыши на Группа потоков и выберите Добавить > Элемент Конфигурации > Http-Запрос По умолчанию . Здесь мы добавляем:

  • Протокол
  • Сервер
  • Порт
  • Путь =/

Шаг 3. Добавить HTTP-запрос

Теперь мы можем добавить пробоотборник – в нашем случае HTTP-запрос. Мы все предопределили на предыдущем шаге, поэтому здесь нечего добавлять. Хотя в более сложных тестах, конечно, вы должны указать это. Пока оставьте все пустым.

Шаг 4. Создайте слушателя

Наконец, добавьте прослушиватель – элемент для отображения результатов. Перейдите и добавьте Добавить > Слушатель > Сводный отчет . Сводный отчет создает строку таблицы для каждого запроса с другим именем в вашем тесте. С помощью этого компонента вы также можете сохранять данные в формате CSV.

Шаг 5. Запустите тест

А теперь вы можете запустить нагрузочный тест ( NB не забудьте сохранить тест). Мы получили таблицу данных, которую мы можем интерпретировать:

  • Метка пробоотборника HTTP-запросов
  • Примеры виртуальных пользователей по запросу
  • Среднее время, затраченное всеми образцами на выполнение определенной метки
  • Минимальное минимальное время, затрачиваемое образцом на конкретную этикетку.
  • Максимальное время, затрачиваемое образцом на конкретную этикетку
  • St.Dev набор исключительных случаев, которые отклонялись от среднего значения времени отклика выборки.
  • Процент ошибок неудачных запросов на метку.
  • Пропускная способность количество запросов, обрабатываемых сервером в единицу времени (секунды, минуты, часы)

Я рекомендую вам ознакомиться с документацией для сводного отчета или этого поста о понимании сводного отчета .

Вывод

В этом посте мы наблюдали за нагрузочным тестированием веб-приложений Java . Одним из лучших инструментов, доступных для этого, является Apache JMeter. Он бесплатный, с открытым исходным кодом и, благодаря своей природе Java, кроссплатформенный. В этом посте мы проверили, что такое нагрузочное тестирование и чем оно отличается от тестирования производительности; как работает JMeter и как составлять ваши тесты; и, наконец, – мы протестировали очень простой сервер, написанный на простом ядре Vert.x.

Рекомендации

  • Бернхард Knasmüller. Как использовать JMeter для тестирования производительности REST API (2019), читайте здесь
  • Мутиара Хана. Тестирование производительности с помощью JMeter для чайников (2018), Средний, читайте здесь
  • Рагнар Лонн. Когда я должен начать нагрузочное тестирование? , TechBeacon, читайте здесь
  • Риши Бхатт. Понять и проанализировать сводный отчет в Jmeter (2017), читайте здесь

Оригинал: “https://dev.to/iuriimednikov/introduction-to-load-testing-with-apache-jmeter-482a”