- Зарегистрирован на сайте BlazeMeter.
- Установлено расширение BlazeMeter для браузера.
- Установлен JMeter для настройки и выполнения нагрузочных тестов.
- Настроено автосохранение для автоматического сохранения тестового сценария:
- Меню:
Option => Save Automatically before run => ✅
- Меню:
- Установлен Plugins Manager, переместив
.jar
файл в директорию Apache JMeter с помощью команды:
mv ~/Downloads/jmeter-plugins-manager-1.10.jar /Applications/apache-jmeter-5.6.3/lib/ext/
- Для начала тестирования перешел на сайт WordPress и запустил расширение BlazeMeter. В процессе записи шагов нагрузочного тестирования были выполнены следующие настройки:
- Назначено название теста.
- Настройки в разделе Advanced options:
- Filter Pattern:
http://*/*, https://*/*
(выбор отслеживаемгог протокола). - ☑️ Disable Browser Cache (отключение кэша браузера для отправки всех запросов на удаленный сервер WordPress).
- ☑️ Update Settings Before Running Test (настройка теста по количеству пользователей и виртуальных запросов).
- 🔘 Only Top Level Request (запись основных запросов без дополнительных запросов к CSS и JavaScript).
- Filter Pattern:
- Запустил сценарий записи в расширении BlazeMeter и выполнил следующие действия:
- Обновил главную страницу WordPress.
- Перешел к тестовой записи "Привет, мир!".
- Добавил комментарий с указанными данными:
- Комментарий
- Имя
- Остановил запись в BlazeMeter, тест был собран и перенаправлен на основную страницу сайта BlazeMeter.
- На странице BlazeMeter были настроены основные параметры в области производительности (LOAD CONFIGURATION):
- Total Users - количество виртуальных пользователей (количество виртуальных потоков, которые будут отправлять параллельные запросы).
- Duration (min)
↔️ Iterations - продолжительность нагрузки системы (Duration) или количество итераций, сколько раз будет прогоняться тест (Iterations). - Ramp Up Time (min) - периодичность добавления пользователей (потоков) в систему (активно при количестве пользователей более одного).
- Выбрано облако для выполнения нагрузки (LOAD DISTRIBUTION).
- Запущен тест (Run Test).
- Сценарий запуска теста завершился с открытием вкладки Summary, которая содержит основную сводку.
- Также были сделаны скриншоты результатов нагрузочного тестирования.
- Для скачивания сценария в формате jmx:
- Прешел на вкладку Original Test Configuration => Files => название_теста.jmx ☁️.
- Скачанный файл
WordPress_COMMENT_TEST.jmx
был перемещен в директорию для хранения тестов производительности и запущен с помощью JMeter для нагрузки на веб-приложение.
# Созданы папки хранения проекта:
mkdir -p ~/Documents/Performance_testingQA79/Load_testing_web/Test-WordPress
# Перемещение файла .jmx в директорию:
mv ~/Downloads/WordPress_COMMENT_TEST.jmx ~/Documents/Performance_testingQA79/Load_testing_web/Test-WordPress
# Переход в директорию:
cd ~/Documents/Performance_testingQA79/Load_testing_web/Test-WordPress
#Открытие теста в JMeter:
jmeter -t WordPress_COMMENT_TEST.jmx
- Названия шагов в вкладке Thread Group были изменены на более понятные.
- Убрана галочка с Retrieve All Embedded Resources в разделе HTTP Request Defaults, чтобы исключить лишние запросы и ускорить поиск нужного запроса на комментарий.
- В
Thread Group
был добавлен слушатель View Results Tree, что позволяет детально отслеживать и анализировать выполнение тестовых запросов:- По пути: Add => Listiner => View Results Tree
- Чтобы не было дублировании коментария при повторном запуске теста, что приводит к ошибке в
Thread Group
добавлен еще oдин элемент Random Variable спосбный автоматичеки создавать комментарий рандомно.- По пути: Add => Config Elements => Random Variable
- Создан элемент по маске расположенной в документации, который каждый раз при запуске сценария будет генерировать рандомное значение комментария (comment_0000). Cоздана и скопировано название переменной, после чего указана в сценарии тестового шага
${VARIABLE_COMMENT}
, вместо комментария. - Также рассмотрен более простой способ создания рандомной строки без необходимости создания Random Variable. Достаточно указать
${__RandomString(10,abcdefg)}
на месте комментария в тестовом сценарии, что генерирует случайное значение из 10 указанных букв.
- В запущенном и выполненом тесте убедился в исполнении всех шагов, применено форматирование результатов тестирования с выбором формата HTML (Text
↔️ HTML).
- Отчет Apache JMeter Dashboard представляет собой визуализированную сводку результатов тестирования производительности, включая графики нагрузки, статистику времени отклика и процентильные данные, что позволяет эффективно анализировать поведение системы под нагрузкой.
# Сгенерирован стандартный JMeter отчет:
jmeter -n -t ~/Documents/Performance_testingQA79/Load_testing_web/Test-WordPress/WordPress_COMMENT_TEST.jmx -l ~/Documents/Performance_testingQA79/Load_testing_web/Test-WordPress/test_results.jtl -e -o ~/Documents/Performance_testingQA79/Load_testing_web/Test-WordPress/report_output
# Переход в нужную директорию и открытие стандартного отчета jmeter о проведенном тестировании (Apache JMeter Dashboard)
cd ~/Documents/Performance_testingQA79/Load_testing_web/Test-WordPress && open report_output/index.html
- В процессе выполнения задач по тестированию производительности была проведена настройка проекта кинотеатра, которая включает в себя клонирование репозитория с GitHub.
- Команды для подготовки и запуска проекта:
# Создана папка для хранения проекта для проведения нагрузочного тестирования:
mkdir ~/Documents/Performance_testingQA79/Load_testing_web/Test-Cinema
# Переход в директорию для хранения проекта:
cd ~/Documents/Performance_testingQA79/Load_testing_web/Test-Cinema
# Клонирование репозитория проекта:
git clone https://github.com/mshegolev/congenial-potato.git
# Переход в каталог кинотеатра и открытие папки cinema в Visual Studio Code:
cd congenial-potato/cinema && code .
- В файл
docker-compose.yml
добавлена строкаplatform: linux/x86_64
, чтобы указать Docker на создание образов для архитектуры x86_64 (необходимо для работы на Apple M1 с архитектурой ARM). - Чтобы избежать предупреждения при запуске контейнеров в
docker-compose.yml
удалена строкаversion: '3.7'
.- В версиях Docker Compose 2.0 и выше больше не требуется указывать версию файла, так как композитор теперь автоматически обрабатывает данные. Это упрощает работу и делает файлы конфигурации более понятными.
- Запущены контейнеры с помощью Docker и проверено их состояние:
# Запуск контейнеров Docker в фоновом режиме
docker-compose up -d
# Проверка запущенных контейнеров
docker ps
- В браузере по адресу
localhost:8000
указанном вdocker-compose.uml
запущено расширение BlazeMater. - Для записи шагов нагрузочного тестирования:
- Назначено название теста.
- Настройки в разделе Advanced options:
- Filter Pattern:
http://*/*, https://*/*
(выбор отслеживаемгог протокола). - ☑️ Record Ajax Request (для захвата и записи AJAX-запросов, которые отправляются вашим веб-приложением во время взаимодействия с ним, особенно полезно при тестировании веб-приложений, использующих динамические загрузки данных через AJAX)
- 🔘 Only Top Level Request (запись основных запросов без дополнительных запросов к CSS и JavaScript).
- Filter Pattern:
- Запущен сценарий записи в расширении BlazeMeter для воспроизведения шагов:
- Переход на страницу (обновлена главная страница)
- Выбор сеанса
- Выбор места
- Получить код бронирования
- Получен код бронирования
- Запись в BlazeMeter остановлена и тест собран, перенаправлен на основную страницу сайта BlazeMeter.
- На странице BlazeMeter настроены основные параметры в области производительности (LOAD CONFIGURATION):
- Total Users - количество виртуальных пользователей (количество виртуальных потоков, которые будут отправлять параллельные запросы).
- Duration (min)
↔️ Iterations - продолжительность нагрузки системы (Duration) или количество итераций, сколько раз будет прогоняться тест (Iterations). - Ramp Up Time (min) - с какой периодичностью пользователи (потоки) будут добавляться в систему (работает, если пользователей больше одного).
- Выбрано облако для выполнения нагрузки (LOAD DISTRIBUTION).
- Запущен тест (Run Test).
- Сценарий запуска теста в расширении BlazeMeter завершился, открылась вкладка Summary, которая показывает основную сводку.
- Для скачивания сценария в формате jmx:
- Прешел на вкладку Original Test Configuration => Files => название_теста.jmx ☁️.
- Скаченный файл
CinemaTest.jmx
перемещен в директорию для хранения тестов производительности и запущен с помощью JMeter для проведения нагрузки на веб-приложение.
# Перемещение файла .jmx в директорию по тестированию произовдительности:
mv ~/Downloads/CinemaTest.jmx ~/Documents/Performance_testingQA79/Load_testing_web/Test-Cinema
# Переход в директорию:
cd ~/Documents/Performance_testingQA79/Load_testing_web/Test-Cinema
#Открытие теста в JMeter
jmeter -t CinemaTest.jmx
-
В
Thread Group
добавлен слушатель View Results Tree ,один из наиболее популярных и полезных инструментов, который позволяет пользователям детально отслеживать и анализировать выполнение тестовых запросов.- По пути: Add => Listiner => View Results Tree
-
Названия шагов расположенные во кладке Thread Group изменены на более понятные.
- В шаг который отвечает за выбор ряда и места добавлено случайное значение созданое по маске расположенной в документации, которое каждый раз при запуске сценария будет генерировать рандомное значение:
- salesPlaces =
[{"row":${_Random(1, 10)}, "place":${__Random(1,10)}, "type":"standart"}]
- salesPlaces =
- В шаг который отвечает за выбор ряда и места добавлено случайное значение созданое по маске расположенной в документации, которое каждый раз при запуске сценария будет генерировать рандомное значение:
-
В запущенном и выполненом тесте убедился в исполнении всех шагов, применено форматирование результатов тестирования с выбором формата HTML(Download resources).
- Отчет Apache JMeter Dashboard представляет собой визуализированную сводку результатов тестирования производительности, включая графики нагрузки, статистику времени отклика и процентильные данные, что позволяет эффективно анализировать поведение системы под нагрузкой.
# Сгенерирован стандартный JMeter отчет:
jmeter -n -t ~/Documents/Performance_testingQA79/Load_testing_web/CinemaTest.jmx -l ~/Documents/Performance_testingQA79/Load_testing_web/test_results.jtl -e -o ~/Documents/Performance_testingQA79/Load_testing_web/report_output
# Переход в нужную директорию и открытие стандартного отчета jmeter о проведенном тестировании (Apache JMeter Dashboard)
cd ~/Documents/Performance_testingQA79/Load_testing_web && open report_output/index.html
7. По результатам проведения нагрузочного тестировании сделаны скришоты.
- https://www.blazemeter.com/ - инструкция по работе с
blazemeter
; - Blazemeter chrome extention - расширение Chrome browser для записи тестов c помощью
blazemeter
- https://jmeter.apache.org/ - инструкция по работе с
jmeter
; - Jmeter Test Script Recorder - инструкция по записи тестов с помощью
jmeter
- Download jmeter - дистрибутивы
jmeter
- Install plugin - установка плагинов в
jmeter