- Зарегистрирован на сайте 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.html7. По результатам проведения нагрузочного тестировании сделаны скришоты.
- 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