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

Как выполнить нагрузочный тест: руководство разработчика по тестированию производительности

Как разрабатывать и запускать нагрузочные тесты с использованием Apache JMeter & Taurus Весь код виновен, u… С пометкой “Тестирование”, “новички”, “java”, “веб-разработчик”.

Как разрабатывать и запускать нагрузочные тесты с использованием Apache JMeter и Taurus

Весь код виновен, пока не будет доказана его невиновность. — Анонимный

Цель этой статьи – помочь вам разработать и запустить нагрузочный тест 👍

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

  • Ваша компания не может позволить себе нанять инженеров по производительности
  • Недостаточно тестировщиков по сравнению с разработчиками
  • Навыки и знания могут помочь вам написать лучший и масштабируемый код
  • Меньше зависеть от чужого опыта

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

В этом разделе мы разработаем и запустим нагрузочные тесты Apache JMeter .

Настройка среды

Что касается среды, либо найдите подходящий онлайн-ресурс (не рекомендуется), создайте свой собственный простой сервис (node, python, что угодно), либо просто используйте веб-сервис , предоставленный в этой статье.

Мы будем использовать простой веб-сервис spring boot на основе java , который предоставляет четыре (4) конечных точки. Требованием являются Java 1.8 и Apache Maven.

git clone https://github.com/rhamedy/tinyservice4loadtest.git
cd tinyservice4loadtest
mvn spring-boot:run

Apache JMeter

Пожалуйста, продолжайте и установите Apache JMeter с сайта загрузки , распакуйте архив и выполните следующую команду

apache-jmeter/bin/jmeter.sh       // Linux & MacOS
apache-jmeter/bin/jmeter.bat      // Windows

Разработайте план тестирования для Apache JMeter

Давайте загрузим следующие API-интерфейсы

http://localhost:8080/students/list  - [GET] List students
http://localhost:8080/students/id    - [GET] Get student by id
http://localhost:8080/students       - [POST] Create student
http://localhost:8080/students/id    - [DELETE] Delete student by id

Все примеры тестов для вышеуказанных конечных точек доступны в GitHub репозиторий .

Шаг 1

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

  1. /| Количество потоков (пользователей) Период нарастания |/(в секундах)
  2. . Сколько времени потребуется, чтобы охватить максимальное количество пользователей? Сколько раз или в течение какого времени запускать тест

Шаг 2

Давайте уточним, что тестировать. Щелкните правой кнопкой мыши на Группа потоков и выберите Добавить > Элементы конфигурации > HTTP-запрос по умолчанию параметр.

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

Давайте заполним элемент конфигурации HTTP-запроса по умолчанию

Также давайте добавим HTTP Header Manager через Добавить > Элементы конфигурации > Диспетчер HTTP-заголовков для Типа содержимого заголовок

Шаг 3

Давайте настроим http-запросы, Щелкните правой кнопкой мыши на Группе потоков и выберите Добавить > Сэмплер > HTTP-запрос

  1. Каков тип метода, т.е. ПОЛУЧИТЬ или ОПУБЛИКОВАТЬ и т.д.
  2. Каков путь к api, т.е. /students/list или /студенты и т.д.

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

Шаг 4

Слушатели используются для сбора результатов. Щелкните правой кнопкой мыши на Группе потоков и выберите Добавить > Прослушиватель > Сводный отчет вариант.

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

Если у вас запущен нагрузочный тест tiny service 4 (или ваш собственный), то давайте нажмем кнопку воспроизведения и посмотрим результаты в Сводном отчете

Запустите Тест Apache JMeter С помощью CLI

Графический интерфейс не рекомендуется использовать для выполнения сложных тестов. Давайте откроем сложный образец теста из здесь .

Приведенный выше план тестирования содержит больше элементов

  • Случайная переменная генерирует значение между x и y
  • Контроллер цикла выполняет содержимое цикла x раз

Чтобы сгенерировать содержательный отчет, нам нужен user.properties ( Источник ) в каталоге, где .jmx тест есть.

jmeter.reportgenerator.report_title=Apache JMeter Dashboard
jmeter.reportgenerator.overall_granularity=60000
jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100
jmeter.reportgenerator.apdex_satisfied_threshold=1500
jmeter.reportgenerator.apdex_tolerated_threshold=3000
jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-jmeter.reportgenerator.exporter.html.filters_only_sample_series=true

Запустите тестовый скрипт с помощью команды (выходной каталог должен быть пустым)

jmeter.sh -n -t нагрузочный тест.jmx -l log.jtl -e -o выходной каталог

В приведенной выше команде -n означает нет графического интерфейса символ -t указывает на сценарии нагрузочный тест.jmx в -l означает log.jtl где -e и -o предназначены для отчетности.

output-directory будет содержать кучу файлов, включая/| index.html который открывает графические результаты теста, как показано ниже.

На этом графике левая сторона – ВЕРШИНА, а правая – сводка запроса. Красный цвет указывает на все наши 404 ошибки, а зеленый – на 200 успешных запросов.

Некоторые цифры, относящиеся к Количеству выборок, времени отклика, пропускной способности

Самое главное, что Время отклика и Пропускная способность

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

Теперь, когда мы знаем, как использовать Apache JMeter для выполнения базового нагрузочного теста, давайте рассмотрим open-source framework Телец . Короче говоря, одна из причин рождения Taurus заключалась в том, что Apache JMeter имеет крутую кривую обучения, а Taurus делает вещи намного проще.

Taurus – это уровень абстракции (или оболочка) поверх Apache JMeter, и это означает, что вы можете запустить скрипт Apache JMeter с помощью Taurus. Так что идите вперед и установите Taurus, используя простой в инструкция по установке

Скрипты Taurus могут быть написаны на YAML или JSON с использованием последующих блоков

Сценарии – это в основном то, где определяется один или несколько запросов. Для каждого сценария определяется выполнение с такими реквизитами, как количество пользователей , продолжительность , период нарастания и так далее. Модули позволяют нам настроить исполнителя , которым может быть Apache JMeter , Селен и так далее. Аналогично, reporting позволяет настроить способ создания отчета, например, csv, оперативный отчет в консоли или отправку результата на веб-сайт blazemeter.

scenarios: 
 StudentList: 
  requests: 
   - url: http://localhost:8080/students/list
     label: Student List
execution: 
 - scenario: StudentList 
   concurrency: 15
   ramp-up: 2s
   hold-for: 10s
reporting:
 - module: console 
 - module: final-stats 
   summary: true 
   percentiles: true
   test-duration: true 
   dump-csv: single_scenario_single_req.csv

Нагрузочный тест /студенты/список api, достигающий 15 пользователей в течение 2 секунд (увеличение) в течение 10 секунд и отображение реального результата в консоли, а также в файле csv .

Для запуска теста Taurus (образец предоставлен здесь ) , , просто запустите команду bzt test.yaml

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

scenarios: 
 JMeterExample: 
  script: student_crud_jmeter.jmx

Taurus кажется очень интересным фреймворком, и его стоит проверить. Это очень хорошо задокументировано здесь .

Я настоятельно рекомендую проверить Apache JMeter и Taurus документация, если вы хотите узнать больше техник и приемов.

Прочтите некоторые из моих других статей на Medium

Примечание : Я подумываю о том, чтобы отойти от Medium из-за их платной сети. Я вижу огромную разницу в статистике моих историй до и после введения платного доступа. Я предпочитаю, чтобы мои статьи были доступны бесплатно.

Не стесняйтесь подключаться и подписываться на меня в ваших любимых социальных сетях для будущих статей.

Оригинал: “https://dev.to/rhamedy/how-to-load-test-a-developer-s-guide-to-performance-testing-4e8m”