Тест интерфейса Jmeter + стресс-тест

API контрольная работа модульный тест JMeter

  jmeter – это инструмент для стресс-тестирования с открытым исходным кодом, разработанный компанией Apache на основе Java. Он небольшой по размеру, полнофункциональный и простой в использовании. Это относительно легкий и очень простой в использовании инструмент для тестирования. Поскольку jmeter разработан на языке java, перед его запуском необходимо установить jdk. jmeter не требует установки.После получения установочного пакета вы можете напрямую распаковать его и использовать.В то же время его можно использовать на linux/windows/macos.  jmeter может выполнять тестирование интерфейса и стресс-тестирование. Простые операции теста интерфейса включают в себя создание http-скриптов (отправка запросов на получение/публикацию, добавление файлов cookie, добавление заголовков, добавление аутентификации полномочий, загрузка файлов), создание сценариев веб-сервисов, параметризация, утверждение, ассоциация (извлечение регулярных выражений и обработка json) - json экстрактор пути) и jmeter для работы с базой данных и так далее.

тест интерфейса

Скрипт интерфейса Jmeter-http

Обычно делится на пять шагов: (1) добавить группу потоков (2) добавить http-запрос (3) записать URL-адрес доступа, путь, метод запроса и параметры в http-запросе (4) добавить просмотреть дерево результатов (5) интерфейс вызова, просмотреть возвращаемое значение

  • jmeter отправляет запрос на получение

    这里写图片描述

这里写图片描述

  • jmeter отправляет почтовый запрос

    这里写图片描述

  • jmeter добавить куки

    Необходимо добавить элемент конфигурации в группу потоков - HTTP Cookie Manager

这里写图片描述

这里写图片描述

  • jmeter добавить заголовок
    Необходимо добавить элемент конфигурации в группу потоков — диспетчер заголовков HTTP.
    这里写图片描述

这里写图片描述

  • загрузить файл jmeter

    这里写图片描述

  • Параметризация jmeter Если входной параметр часто изменяется, его можно задать как переменную для облегчения унифицированного управления модификациями; если входной параметр требует случайного или множественного выбора, переменную можно сформировать с помощью генератора функций или чтения файла. Таким образом, есть три способа параметризации: определяемые пользователем переменные, генераторы функций и чтение файлов.

    (1) Пользовательские переменные    необходимо добавить элементы конфигурации - пользовательские переменные.

这里写图片描述

这里写图片描述

(2) Генератор функций    должен использовать вспомогательную функцию функции, вы можете вызвать функцию для генерации некоторых обычных данных. Несколько часто используемых функций: _uuid, _random и _time. _uuid будет генерировать случайный и уникальный идентификатор.Например, чтобы избежать ситуации, когда слишком много необработанных данных, вызванных повторной передачей java-запросов, запрос интерфейса может добавить уникальный идентификатор запроса и уникальный идентификатор ответа для одного- к одному соответствию; случайное число _random можно найти в разделе Возьмем случайное значение в указанном диапазоне; возьмем текущее время _time, можно использовать некоторые входные параметры класса времени, такие как {__time()} для создания отметка времени с точностью до миллисекунд, {__time(/1000,)} – Генерация отметок времени с точностью до секунды, ${__time(yyyy-MM-dd HH:mm:ss,)} — генерировать текущее время с точностью до секунды.

这里写图片描述

(3) Чтение из файла
  Необходимо добавить элемент конфигурации — CSV Data Set Config в группу потоков
   Среди них Recycle on EOF: после установки значения True разрешено значение цикла
这里写图片描述
   Конкретные примеры:

这里写图片描述

这里写图片描述

这里写图片描述

  • утверждение jmeter
    Утверждение   jmeter используется для проверки того, соответствует ли результат, возвращаемый ответом, тому, что мы ожидали. Если это для всей группы потоков, добавьте утверждение утверждения-ответа в группе потоков; если это только для определенного запроса, добавьте утверждение утверждения-ответа под запросом.

这里写图片描述

这里写图片描述

  • ассоциация jmeter

    Между    запросами интерфейса происходит вызов параметра, для сохранения этого параметра устанавливается ассоциация jmeter. Например, интерфейс входа в систему и интерфейс покупки товара, интерфейс покупки товара нуждается в информации для входа в систему, такой как токен, возвращаемый интерфейсом входа в систему, и ассоциация jmeter может сохранить эту информацию о токене, что удобно для интерфейса покупки товара.
      Ассоциацию jmeter можно выполнить двумя способами, чтобы получить значение, указанное в возвращаемом результате. Это экстрактор регулярных выражений, экстрактор пути json.
    (1) Экстрактор регулярных выражений
    Если возвращаемое значение, которое вы хотите получить, не совпадает, вы можете расширить совпадающие данные с обеих сторон регулярного выражения.

    这里写图片描述

    а. О регулярных выражениях

    (): Заключенная часть должна быть извлечена.
    .: соответствует любой строке, кроме новой строки.
    +: означает, что символ, предшествующий знаку +, должен встречаться хотя бы один раз (один или несколько).
    ?:представлять? Предыдущий символ может появиться не более одного раза, останавливаясь после того, как будет найдено первое совпадение (0 или 1).
    :представлятьСимволы перед знаком могут не появляться или появляться один или несколько раз (0, 1 или более раз)
    (.*): жадный режим, соответствует как можно большему количеству символов
    (.*?) или (.+?): соответствует как можно меньшему количеству символов и не снижается после совпадения первого.

    б. О шаблонах

  Если вы хотите извлечь несколько значений, например два значения a и b, вы можете написать:$1~2$. Независимо от того, сколько значений нужно извлечь, имя ссылки одно, например, имя id, ${id_go}: получить всю строку ab, ${id_g1}: получить a, ${id_g2}: получить b .
   Ниже приведен конкретный пример, как показано на следующем рисунке:

这里写图片描述

这里写图片描述

这里写图片描述

(2) экстрактор пути json
  jmeter обрабатывает строку json, устанавливая плагин извлечения путей json для извлечения значений полей в строке json. Адрес загрузки плагина:Jmeter-plugins.org/?search=jpg…, загрузка завершена, после распаковки поместите папку lib непосредственно в соответствующий каталог jmeter. Специальное примечание: jmeter Версия около 2.xx пробовала и не может использовать плагин, но его можно нормально использовать после установки плагина в версии вокруг jmeter 3.xx.
   Постпроцессор -jp@gc-JSON Path Extractor должен быть создан по запросу. Конкретный пример выглядит следующим образом:

这里写图片描述

这里写图片描述

这里写图片描述

   Чтобы узнать о методе и использовании плагинов, связанных с путем json, рекомендуется прочитать этот блог:у-у-у. Краткое описание.com/afraid/56ah607 очень 0…

  • В основном есть четыре шага для работы с базой данных с помощью jmeter: (1) импортируйте пакет jdbc jar для mysql (2) создайте конфигурацию соединения с базой данных, добавьте элемент конфигурации — Конфигурация соединения JDBC в группу потоков (3) добавьте jdbc запрос к группе потоков. Напишите оператор sql (4), чтобы добавить дерево результатов просмотра, нажмите кнопку запуска, и вы увидите выполненный SQL. Конкретный пример показан на скриншоте ниже:

    这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  Специальное примечание: jmeter также может работать с базами данных, такими как oracle, postgreSQL, msSQL, mongodb и т. д. В то же время для разных баз данных формат URL-адреса базы данных и имя драйвера драйвера JDBC, заполняемое конфигурацией подключения JDBC, также различаются. Список драйверов базы данных jmeter показан в следующей таблице:

база данных водить машину URL-адрес базы данных
mysql com.mysql.jdbc.Driver jdbc:mysql://host:port/{dbname}?allowMultiQueries=true
oracle org.postgresql.Driver dbc:postgresql:{dbname}

Скрипт интерфейса Jmeter-webservice

   в основном делится на пять шагов: (1) Во-первых, вам необходимо получить адрес запроса, сообщение запроса и запрос действия мыла интерфейса веб-сервиса с помощью инструмента soapui. (2) Jmeter создает новую группу потоков (3) Создайте запрос SOAP/XML-RPC в группе потоков, напишите URL-адрес запроса, сообщение запроса и запросите действие мыла. (3) Запустите jmeter, вызовите интерфейс и проверьте возвращаемое значение, просмотрев дерево результатов. Пример того, как   soapui получает информацию, показан на следующем рисунке:

这里写图片描述

  После отправки soapui нажмите raw, чтобы увидеть soapation.Если некоторые интерфейсы не возвращают soapui, нет необходимости заполнять jmeter.

这里写图片描述
   Пример скрипта jmeter-webservice показан на следующем рисунке:

这里写图片描述

испытание давлением

   Стресс-тест разделен на два сценария: один — один сценарий, нагружающий один интерфейс, второй — смешанный сценарий с несколькими связанными интерфейсами. Время стресс-теста обычно составляет 10-15 минут. Если это испытание на усталость, его можно выдерживать в течение дня или недели, в зависимости от реальной ситуации.

Подтверждение требований задачи стресс-теста

Перед стресс-тестированием необходимо уточнить функцию стресс-тестирования и индикаторы стресс-тестирования.В целом необходимо определить несколько вопросов:

  1. Стресс-тестирование с фиксированными параметрами интерфейса или рандомизированное стресс-тестирование с параметрами интерфейса?
  2. Сколько параллелизма требуется для поддержки?
  3. Какова цель TPS (транзакций в секунду)? Каково время отклика?
  4. Имя сервера давления или IP-адрес сервера давления обычно представляет собой сервер, указанный в ходе испытания давлением.

Настройки измерения давления

  1. Количество потоков: количество одновременных, сколько может выполняться. В частности, сколько пользователей получают доступ одновременно
  2. Rame-Up Period (в секундах): указывает, сколько секунд JMeter запускает параллелизм. Под ним понимается время подготовки: сколько времени нужно, чтобы установить количество виртуальных пользователей для запуска всех. Если количество потоков равно 20, а время подготовки равно 10, то запуск 20 номеров занимает 10 секунд, то есть каждую секунду запускается 2 потока.
  3. Количество циклов: этот параметр не изменит количество параллелизма и может продлить время параллелизма. Общее количество запросов = количество потоков * количество циклов
  4. Планировщик: установите время начала, время окончания, продолжительность и время задержки начала испытания под давлением.

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

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

  1. Образцы: Указывает общее количество выданных запросов.
  2. Среднее: среднее время ответа, по умолчанию среднее время ответа на один запрос (мс).
  3. Error%: процент от количества неправильных запросов, произошедших в тесте. Если есть ошибка, посмотрите лог сервера, и сотрудничайте с разработчиками, чтобы найти причину локации.
  4. Пропускная способность: называется tps, пропускная способность. По умолчанию она указывает количество запросов, обрабатываемых в секунду, то есть вычислительную мощность сервера. Чем выше tps, тем лучше вычислительная мощность сервера.

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

  1. Частота ошибок подтверждается при разработке, чтобы определить, допустима ли ошибка или насколько допустима частота ошибок;

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

  3. После завершения стресс-теста войдите на соответствующий веб-сервер, чтобы просмотреть показатели производительности, такие как ЦП, и проанализировать данные;

  4. Максимум tps: Продолжайте увеличивать количество параллелизма, и когда tps достигает определенного значения, оно начинает снижаться, тогда это значение является максимальным tps.

  5. Максимальное количество параллелизма: максимальное количество параллелизма и максимальное количество транзакций в секунду являются разными вероятностями.Как правило, количество параллелизма постоянно увеличивается.По достижении значения, если сервер запрашивает тайм-аут, это значение можно рассматривать как максимальное число параллелизма.
  6. Во время стресс-теста есть узкое место в производительности.Если ЦП, сеть и ЦП, проверенные диспетчером задач прессы, все в норме и не превышает 90%, это означает, что есть проблема с сервером и Нажмите.
  7. Факторы, влияющие на производительность, включают: базу данных, приложение, промежуточное ПО (tomact, Nginx), сеть и операционную систему.

Стресс-тест Jmeter под Linux

  1. jmeter установлен в Linux
       Проще говоря, необходимо сначала установить jdk, заодно настроить переменные среды и, наконец, загрузить установочный пакет, сжатый jmeter.После распаковки установочного пакета под linux его можно использовать. Рекомендуемые блоги:blog.CSDN.net/этот метеор/Ах…

  2. Jmeter работает в Linux. Войдите в каталог bin в jmeter, чтобы запустить скрипт, и запустите команду без настройки переменной среды jmeter:

./jmeter -n -t a.jmx -l res.jtl

Среди них a.jmx — это подготовленный скрипт jmeter, а res.jtl — файл результатов теста, который можно импортировать в дерево результатов просмотра jmeter для просмотра.

jmeter добавить загрузочную машину