Как разрабатывать и запускать нагрузочные тесты с использованием 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 группу потоков.
- /| Количество потоков (пользователей)
Период нарастания |/(в секундах) - . Сколько времени потребуется, чтобы охватить максимальное количество пользователей?
Сколько раз или в течение какого времени запускать тест
Шаг 2
Давайте уточним, что тестировать. Щелкните правой кнопкой мыши на Группа потоков и выберите Добавить > Элементы конфигурации > HTTP-запрос по умолчанию параметр.
Элементы конфигурации полезны, если вы хотите поделиться конфигурацией между одним или несколькими запросами, например, например, адрес сервера, номер порта, токен и т.д.
Давайте заполним элемент конфигурации HTTP-запроса по умолчанию
Также давайте добавим HTTP Header Manager через Добавить > Элементы конфигурации > Диспетчер HTTP-заголовков для Типа содержимого заголовок
Шаг 3
Давайте настроим http-запросы, Щелкните правой кнопкой мыши на Группе потоков и выберите Добавить > Сэмплер > HTTP-запрос
- Каков тип метода, т.е.
ПОЛУЧИТЬилиОПУБЛИКОВАТЬи т.д. - Каков путь к 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”