Учебник по тестированию производительности: автоматизация, Gatling и Jenkins

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

Если вы ищете Эта статья для вас, чтобы расширить ваши представления о тестировании производительности. Сегодня мы рассмотрим основы тестирования производительности и научим вас востребованным инструментам для автоматического тестирования: Gatling и Jenkins.

Сегодня мы рассмотрим следующее:

  • Что такое тестирование производительности?
  • Инструменты тестирования производительности
  • Автоматическое тестирование с помощью Gatling
  • Запуск Гатлинга от Дженкинса
  • Чему научиться дальше

Изучите отраслевые стандарты для тестирования производительности

Получите необходимые основы Gatling, Jenkins и Lighthouse для бесперебойного выполнения автоматических тестов, включая тестирование масштабируемости и стресс-тестирование.

Автоматизация тестирования производительности 101: Gatling, Lighthouse и Jenkins

Что такое тестирование производительности?

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

Обычно тестирование производительности проводится с помощью серии количественных тестов, проводимых в лабораторной или производственной среде. Для выявления узких мест используются типичные параметры: скорость обработки, скорость передачи данных, пропускная способность сети, эффективность рабочей нагрузки и надежность.

Существует пять основных типов тестирования производительности, которые можно использовать для улучшения различных аспектов. производительности приложения.

  1. Нагрузочное тестирование: проверяет, может ли программное обеспечение оптимально работать при ожидаемом количестве пользователей. Цель состоит в том, чтобы выявить узкие места в производительности и устранить их до запуска приложения.
  2. Стресс-тестирование: проверяет максимальный предел прочности приложения. Это предполагает использование экстремальных рабочих нагрузок и высокого трафика для тестирования при сбое приложения.
  3. Тестирование на выдержку: также известное как тестирование на выносливость, тестирование на выдержку имитирует постоянное увеличение числа пользователей. с течением времени, чтобы проверить долгосрочную устойчивость системы.
  4. Тестирование на скачки: тестирует производительность системы при внезапном большом скачке числа пользователей..
  5. Объемное тестирование: тесты производительности системы при различных объемах базы данных путем заполнения большого объема данных и мониторинга всей программной системы.

Зачем нам нужно тестирование производительности?

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

С помощью тестирования производительности вы можете определить, где программное обеспечение необходимо улучшить, прежде чем оно станет общедоступным. А без него приложения могут столкнуться с рядом проблем, таких как медленное выполнение или несоответствие между операционными системами.

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

Метрики тестирования производительности

Организации используют KPI (ключевые показатели эффективности ) для оценки производительности своего программного обеспечения во время тестирования производительности. Вот некоторые общие показатели:

  • Пропускная способность: количество единиц информации, которые система обрабатывает за определенный промежуток времени.
  • Память: пространство для хранения, доступное для рабочей нагрузки. Пропускная способность: объем данных в секунду, перемещаемых между рабочими нагрузками.
  • Задержка: Время между запросом пользователя и началом ответа системы.
  • Прерываний ЦП в секунду: среднее количество аппаратных прерываний, получаемых процессом.
  • Разное . Частные байты, ошибки страниц, длина дисковой очереди, максимальное количество активных сеансов, общее количество сетевых байтов в секунду.

Инструменты тестирования производительности

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

Gatling

Gatling — это инструмент нагрузочного тестирования, который использует акторы Akka для имитации большая нагрузка пользователей. Эти тесты написаны на Scala и используют DSL. Gatling разработан для простоты использования, высокой производительности и ремонтопригодности. Gatling — широко популярный инструмент для нагрузочного тестирования, его скачали более 5 миллионов раз, и тысячи компаний используют его для тестирования. Gatling предлагает бесплатные версии и платную корпоративную версию.

Locust

Locust — это инструмент для нагрузочного тестирования с открытым исходным кодом, написанный на Python. Locust распространяется и масштабируется, поэтому может поддерживать большую нагрузку одновременных пользователей на нескольких машинах. С Locust вы можете определять поведение пользователя в коде, поэтому нет необходимости в неуклюжих пользовательских интерфейсах или XML. В тесте на саранчу на ваш целевой сайт нападает «рой» саранчи. Поведение саранчи настраивается, и вы можете контролировать рой в режиме реального времени.

Jmeter

Jmeter — это инструмент для тестирования нагрузки и производительности с открытым исходным кодом, написанный на Java. Он поддерживает множество приложений, серверов и протоколов, включая HTTP, TCP, SOAP, Web, LDAP и т. Д. Это один из самых популярных инструментов тестирования производительности.

Маяк

Маяк используется для измерения производительность сайта. Это автоматизированный инструмент с открытым исходным кодом, используемый для улучшения качества веб-страниц. Он предлагает аудит производительности, доступности, PWA, SEO и т. Д. Как только вы дадите Lighthouse URL-адрес, он проведет аудит страницы и сгенерирует отчет. Показатели можно использовать для улучшения сайта.

Автоматическое тестирование с помощью Gatling

В мире программного обеспечения существует два вида тестирования: ручное и автоматизировано . Процесс, который мы представили вам выше, по большей части является ручным. Автоматизация тестирования включает автоматизацию выполнения тестов, управление тестовыми данными и использование результатов для улучшения качества вашего программного обеспечения.

Обычно это достигается путем написания сценариев и использования средств автоматизации тестирования, таких как Gatling, высокопроизводительная нагрузка. инструмент тестирования. Архитектура Gatling является асинхронной до тех пор, пока базовый протокол, такой как HTTP/HTTPS, реализуется неблокирующим образом.

Эта архитектура позволяет нам использовать виртуальных пользователей вместо использования выделенных потоков. Таким образом, запуск тысяч одновременных виртуальных пользователей не проблема по сравнению с инструментом нагрузочного тестирования на основе потоков, таким как JMeter..

Возможности Gatling

  • Многофункциональные утилиты: Gatling предлагает набор утилит и поддерживает передачу тестовых данных для сценариев нагрузочного тестирования из CSV, TSV, JSON, SSV и Redis.
  • UI Recorder: Gatling предлагает автономный рекордер, способный преобразовывать HTTP веб-действия для тестовых скриптов Gatling.
  • Акторы Akka: Gatling использует Aka Actors, чтобы виртуальные пользователи отправляли неблокирующие запросы, обеспечивая максимальную эффективность.
  • Поддержка веб-сокетов и JMS Gatling обеспечивает поддержку JMS (служба сообщений Java), SSE (серверные события), веб-сокетов и MQTT (транспорт телеметрии MQ).
  • Утверждения: Gatling предоставляет утверждения и проверки, которые могут быть выполнены для полученного ответа.
  • Rich HTML отчет: Gatling предоставляет многофункциональный HTML-отчет, который содержит информацию о выполненном сценарии, конфигурации и статистику о ответ.
  • Интеграция с Grafana и StatsD: Gatling также предоставляет способы сохранить отчет о выполнении, экспортируя результаты в Graphana, базу данных временных рядов Influx, StatsD, и т. д.
  • Интеграция CI/CD Jenkins: Gatling позволяет нам переопределять параметры конфигурации запуска во время выполнения, включая конфигурации отчетов. Это позволяет нам легко интегрироваться с конвейерами CI/CD.
  • Распределенное нагрузочное тестирование: Gatling позволяет нам запускать тестовые сценарии на нескольких серверах, которые находятся за балансировщиками нагрузки, распределение нагрузки и внесение изменений в конфигурацию.

Моделирование стресс-теста Гатлинга

Стресс-тестирование, также известное как испытание на выносливость, проверяет способность системы обрабатывать ошибки и ее надежность в экстремальных, продолжительных условиях.

Пример:

В приведенном ниже примере мы отправляем запросы на https://api.coingecko.com для получения производных криптовалюты.

 import io.gatling.core.Predef._import io.gatling.http.Predef._import scala.concurrent.duration._class SampleSimulation расширяет Simulation {val httpProtocol = http.  baseUrl ("https://reqres.in/api/users") .acceptHeader ("*/*") .d  oNotTrackHeader ("1") .userAgentHeader ("Mozilla/5.0 (Windows NT 5.1;  rv: 31.0) Gecko/20100101 Firefox/31.0 ") .disableWarmUp .disableCaching val getScenario = scene (" BasicSimulation - GET ") .exec (http (" GET request ") .get ("/") .check (status.is  (200))) setUp (getScenario.inject (rampUsers (2) в течение (2 секунд))). протоколы (httpProtocol)} 

Создание глобальной конфигурации HTTP

В приведенном ниже фрагменте кода мы можем создать глобальную конфигурацию HTTP:

  • Отключение кеширования
  • Отключение начального разогрева
  • Установка базового URL для всех HTTP-запросов
  • Установка типа содержимого по умолчанию и принятие заголовков
 val Протоколы = http .disableCaching .disableWarmUp .baseUrl ("https  ://api.coingecko.com ") .contentTypeHeader (" application/json ") .acceptHeader (" application/json ") 

Продолжайте обучение.

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

Автоматизация тестирования производительности 101: Gatling, Lighthouse, & Jenkins

Создать пользовательский сценарий

В приведенном ниже фрагменте кода:

  • Создает пользовательский сценарий содержащий HTTP exec для выполнения запроса GET к /api/v2/производные/обмены , в котором базовый URL-адрес выбирается из глобальной конфигурации HTTP.

  • Утверждает код состояния и проверяет, существуют ли поля id в ответе.

 val  scn = сценарий ("получение всех производных") .exec (http ("получение всех производных") .get (  "/api/v3/производные/обмены") .check (status.is (200), jsonPath ("$ [*]. id"). exists)) 

Настроить профиль инъекции пользователя

Мы создаем инъекцию пользователя. В нашем случае мы выполняем пользовательский сценарий с постоянной скоростью 2 раза в течение 10 секунд. После завершения моделирования мы проверяем, равно ли 0 неудавшихся запросов.

 setUp (scn.inject (constantUsersPerSec (5) в течение (10 секунд))) .protocols (протоколы) .assertions (глобальные. failedRequests.count.is (0)) 

Запуск Gatling от Jenkins

Непрерывная интеграция (CI) — первая фаза автоматизированного конвейера выпуска. Это способ получить раннюю обратную связь об изменениях кода разработчиков с помощью автоматизированного тестового набора. Процесс:

  • Код фиксации
  • Сборка исходного кода приложения
  • Запуск автоматических тестов
  • Оставить отзыв

Процесс CI настраивается с помощью приемочных тестов для изменений кода. Автоматические тесты производительности в процессе CI могут быть выполнены с использованием только примерно 5% фактической нагрузки.

Это позволяет нам получить раннюю обратную связь и оценить влияние недавно зафиксированного кода. Если есть какие-либо узкие места или проблемы, мы можем немедленно проанализировать и устранить проблему на месте перед запуском.

Установка и установка Jenkins

В приведенном ниже руководстве представлены шаги по установке Jenkins локально или на удаленном компьютере.

  1. Установите диспетчер пакетов Homebrew
/bin/bash -c "$ (  curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install.sh) "

  1. Установить Jenkins
 brew install jenkins 

iv>

  1. Запустить службу Jenkins
 Запуск сервисов пивоварения Дженкинс  

  1. После запуска службы Jenkins перейдите в свой браузер по адресу https://localhost: 8080, чтобы завершите установку.

На приведенном ниже экране вам будет предложено ввести пароль для завершения установки вместе с местоположением пароля. Следуйте инструкциям ниже.

Теперь Jenkins настроен и готов к использованию с Gatling!

Установить подключаемый модуль Gatling Jenkins

Выполните следующие шаги, чтобы установить плагин.

  • Войдите в Jenkins как пользователь с правами администратора.
  • Нажмите Параметр "Управление Jenkins » на левой боковой панели.
  • Щелкните параметр Управление подключаемыми модулями , как показано ниже.

Выберите вкладку available , найдите плагин Gatling, выберите плагины Gatling и выберите параметр Загрузить сейчас . Установите его после перезапуска.

После установки плагина вы можете перезапустить его из пользовательского интерфейса, как показано ниже, или через командную строку, используя brew, как обсуждалось в предыдущем уроке.

После перезапуска Jenkins вы можете увидеть Gatling под установленными плагинами (управление плагинами -> установленные плагины).

Теперь мы готовы использовать подключаемый модуль Gatling для создания задания нагрузочного тестирования, которое также может использоваться в потоке CI!

Чему научиться дальше

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

Еще есть чему поучиться! Следующие шаги для освоения Gatling и тестирования производительности:

  • Написание и выполнение тестовых скриптов Gatling
  • Автоматизация производительности веб-страниц (WPP) с помощью Lighthouse
  • Моделирование регулирования сети
  • Глобальные утверждения Gatling
  • и многое другое

Для начала с этими концепциями и процессами ознакомьтесь с курсом Educative Автоматизация тестирования производительности 101 . В этом курсе вы изучите основы Gatling для тестирования масштабируемости и стресс-тестирования. Затем вы узнаете, как писать сценарии Гатлинга, понимать производительность веб-страниц и моделировать регулирование сети.

К концу этого курса у вас появятся новые отличные навыки для вашего резюме.

Удачного обучения!

Оцените статью
nanomode.ru
Добавить комментарий