Проделанная работа в процессе выполнения задания к лекции «Подготовка отчёта о тестировании и завершение проекта»
|
- Запуск сайта WordPress
- Настройка тестового сценария в JMeter
- Соединение Apache JMeter с Grafana
- Настройка Jenkins для интеграции с JMeter
В процессе выполнения задач по нагрузочному тестированию базы данных была проведена настройка проекта WordPress, который позволяет создавать сайты без знания языков программирования.
- Открыта необходимая папка с ранее склонированного проекта на GitHub в Visual Studio Code:
# Переход в каталог WordPress и открытие папки wp в Visual Studio Code:
cd ~/Documents/Performance_testingQA79/congenial-potato/wp && code .- Для совместимости плагинов в
docker-compose.ymlизменен образ контейнера наimage: wordpress:php8.0.- Добавлена строка
platform: linux/x86_64, чтобы указать Docker на создание образов для архитектуры x86_64 (необходима для работы на Apple M1 с архитектурой ARM). - Чтобы избежать предупреждения при запуске контейнеров, удалена строка
version: '3'.- В версиях Docker Compose 2.0 и выше больше не требуется указывать версию файла, так как композитор теперь автоматически обрабатывает данные. Это упрощает работу и делает файлы конфигурации более понятными.
- Добавлена строка
- Запущены контейнеры с помощью Docker и проверено их состояние:
# Запуск контейнеров Docker в фоновом режиме
docker-compose up -d
# Проверка запущенных контейнеров
docker ps- В браузере по адресу
localhost:80, указанном вdocker-compose.yml, запущен сайт WordPress.- Выбран язык.
- Заполнены все поля: название сайта, имя пользователя, email, придуман пароль, ☑️.
- На странице добавления комментария я убедился, что комментарий успешно добавляется.
- Скачан JDBC-драйвер для MySQL и помещен в папку lib внутри каталога JMeter:
mv ~/Downloads/mysql-connector-j-8.4.0.jar /Applications/apache-jmeter-5.6.3/lib- Скачанный файл
wp_db_test.jmxбыл перемещен в директорию для хранения тестов производительности и запущен с помощью JMeter для проведения нагрузочного тестирования базы данных:
# Созданы папки для хранения проекта:
mkdir -p ~/Documents/Performance_testingQA79/Load_testing_report/jmeter
# Перемещение файла .jmx в директорию:
mv ~/Downloads/wp_db_test.jmx ~/Documents/Performance_testingQA79/Load_testing_report/jmeter
# Переход в директорию:
cd ~/Documents/Performance_testingQA79/Load-testing_report/jmeter
#Открытие теста в JMeter:
jmeter -t wp_db_test.jmx - Установлены графики в JMeter (Add => Listener => jp@gc - Назввание графика)
- Hits per Second (HPS, запросов в секунду)
- График Hits per Second (HPS) в Apache JMeter отображает количество HTTP-запросов, поступающих на сервер за одну секунду, и помогает оценить его производительность и нагрузку.
- Transactions per Second (TPS, транзакций в секунду)
- Этот график является одним из ключевых индикаторов производительности приложения и позволяет оценить, насколько эффективно система справляется с нагрузкой.
- Response Times Over Time (Время отклика с течением времени)
- Этот график отображает время отклика запросов по мере выполнения теста. Можно увидеть, как время отклика изменяется, например, в зависимости от увеличения нагрузки.
- Hits per Second (HPS, запросов в секунду)
- Открыт JMeter, добавлен Backend Listener к своему тесту:
- Щелчок правой кнопкой мыши на Test Plan => Add => Listener => Backend Listener.
- В свойствах Backend Listener выбрано
org.apache.jmeter.backend.influxdb.InfluxDBBackendListenerClient, чтобы JMeter напрямую подключился к базе данных InfluxDB. - Установлены значения параметров:
- influxdb Url: URL InfluxDB сервера и название базы данных,
http://localhost:8086/write?db=influx. - measurement: Имя, по которому будут записываться метрики,
jmeter.
- influxdb Url: URL InfluxDB сервера и название базы данных,
- За основу взят лекционный проект из задания «Подготовка стенда нагрузочного тестирования».
- Запущена Grafana и открыт веб-интерфейс, доступный по адресу
http://localhost:3000.
# Запуск Docker-контейнер в фоне:
docker compose up -d- В браузере по адресу
localhost:3000введены логин и пароль от Grafana, указанные вdocker-compose.yml. - Соединена Grafana с базой данных:
- Путь: Configuration => Data sources => Add data source => InfluxDB.
- В настройках InfluxDB указано
URL: http://influxdb:8086, который взят из блоковlinksиportsвdocker-compose.yml. - Проверка соединения с помощью кнопки Test.
- Использован готовый Dashboard для анализа данных, найденный по запросу Apache JMeter Dashboard.
- Скопирован ID дашборда и импортирован в Grafana:
- Путь: Dashboards => Browse => Import => Скопированный ID => Load.
- Для формирования графика в Grafana запущен тест в JMeter.
CI/CD Jenkins — это мощный инструмент, который позволяет удаленно подключаться к различным компьютерам, тестовым стендам или стендам заказчиков для развертывания необходимых приложений и сервисов. В данном отчете будет описан процесс установки и настройки Jenkins с использованиемGeneric Java package (.war) LTS версии, а также основные этапы его запуска.
- Скачан файл
Generic Java package(.war)LTS версии для запуска Jenkins который будет работать в фоне - В официальной документации Jenkins был выбран способ установки через WAR-file.
# Создание директории для Jenkins:
mkdir ~/Jenkins
# Перемещение скачанного файла jenkins.war в созданную директорию:
mv ~/Downloads/jenkins.war ~/Jenkins
# Переход в директорию Jenkins:
cd ~/Jenkins
# Создание файла для хранения учетных данных Jenkins:
nano ~/Jenkins/credentials.txt
# В файле добавляются строки в следующем формате:
username=имя_пользователя
password=пароль
# Создание скрипта для запуска Jenkins:
nano start-jenkins.sh- В
start-jenkins.shдобавлен следующий скрипт для чтения учетных данных и проверки, запущен ли Jenkins:
#!/bin/bash
export JENKINS_HOME=~/Jenkins
# Чтение учетных данных из файла
if [ -f "$JENKINS_HOME/credentials.txt" ]; then
source $JENKINS_HOME/credentials.txt
else
echo "Файл с учетными данными не найден!"
exit 1
fi
# Проверка, работает ли Jenkins уже
if pgrep -f "jenkins.war" > /dev/null; then
echo "Jenkins уже запущен."
else
echo "Запуск Jenkins..."
java -jar ~/Jenkins/jenkins.war --httpPort=8080
fi # Сделает скрипт исполняемым:
chmod +x start-jenkins.sh
# Устанавливает права доступа к файлу credentials.txt, позволяя только владельцу читать и записывать файл:
chmod 600 credentials.txt
# Открытие файла конфигурации терминала:
nano ~/.zshrc
# Добавление алиаса для запуска Jenkins:В ~/.zshrc добавляется строка:
alias jenkins="~/Jenkins/start-jenkins.sh"
# Перезагрузка файла конфигурации Zsh для применения изменений:
source ~/.zshrc
# Проверка установленной версии Java (рекомендуется использовать JDK 17 или JDK 21, более подробные рекомендации можно найти в документации Jenkins):
java --version
# Запуск Jenkins через созданный алиас:
jenkins- Перешел по адресу
http://localhost:8080и дожидался появления страницы разблокировки Jenkins. При регистрации Jenkins предлагает ввести ключ-пароль, с подсказкой, где его найти. Ключ-пароль также можно посмотреть в логах при запуске Jenkins или командой:
# Вывод ключа-пароля для регистрации в Jenkins:
cat ~/Jenkins/secrets/initialAdminPassword
# Вывод логина и пароля для авторизации в Jenkins:
cat ~/Jenkins/credentials.txt- Создание элемента (Item):
- В Jenkins создан новый элемент (Item) с уникальным названием.
- Выбрана опция «Создать задачу со свободной конфигурацией», что позволяет указать все необходимые параметры проекта.
- Шаги сборки:
- В раздел «Общие настройки» для конфигурации сборки добавлен шаг «Выполнить команду shell», который работает на macOS и Linux. Этот шаг позволяет выполнять скрипты и команды оболочки.
- Команды для выполнения:
- В поле «Выполнить команды» вставлен путь к JMeter с командой, переходящей в папку
bin, а затем выполняется сценарий для сборки отчета JMeter Dashboard в фоновом режиме.
- В поле «Выполнить команды» вставлен путь к JMeter с командой, переходящей в папку
- Пример команды:
/Applications/apache-jmeter-5.6.3/bin/jmeter -n -t ~/Documents/Performance_testingQA79/Load_testing_report/jmeter/wp_db_test.jmx -l ~/Documents/Performance_testingQA79/Load_testing_report/jmeter/test_results.jtl -e -o ~/Documents/Performance_testingQA79/Load_testing_report/jmeter/report_outputКаждый параметр имеет свою роль.
Эта команда запускает JMeter в неинтерактивном режиме (-n), указывает файл теста (-t), задает файл для записи результатов (-l), генерирует отчет (-e) и определяет папку для сохранения выходных данных (-o):
jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>