Статьи

Как выполнить клиентское веб-тестирование производительности в JMeter?

В этой статье мы увидим, как мы можем проводить тестирование производительности на стороне клиента с помощью плагинов Jmeter.

Я буду использовать плагины jmeter webdriver. Прежде чем начать эту тему, пожалуйста, ознакомьтесь с некоторыми основными сведениями о тестировании производительности на стороне клиента из моего предыдущего поста . Итак, начнем:

Установка

  1. Установите Jmeter и плагины по ссылкам ниже этого поста.
    • Jmeter
    • Плагины (вы можете выбрать только веб-драйвер, но я предпочитаю все из них)
  2. Загрузите Selenium Server отсюда. (вам нужна Java, чтобы запустить это)
  3. Загрузите Firefox 26 из архива . Почему 26? потому что плагины jmeter webdriver поддерживают Firefox 26. Вот ссылка, где вы видите, поддерживает детали.

    Примечание: это может быть сложно, если у вас есть обновленная версия Firefox. В этом случае вы можете сделать, как я.

    • Отключить проверку обновлений Firefox
    • Установить в новую папку в отдельном имени каталога.

      Установка [5]

    • При первом запуске просто отмените начальный процесс обновления. Поскольку вы отключили обновление Firefox (в вашем обновленном Firefox), убедитесь, что вы видите, что настройки обновления отключены и в этом Firefox 26.

    Примечание: эта часть немного хитрая, я предоставил отдельный пост для ее решения.

    Для Jmeter Remote Execution или локального лучше иметь только один Firefox (версия 26) без настроек автоматического обновления, что минимизирует сложность выполнения теста.

  4. Держите Firefox 26, сервер селен в переменной пути. Чтобы проверить, введите firefox из командной строки и запустите. Вы должны увидеть, что Firefox 26 запущен на рабочем столе.

    Изображение [18]

    Изображение [9]

    Изображение [19]

  5. Установка Jmeter: обычно нам не нужны какие-либо дополнительные вещи для сэмплера вебдрайвера. Но, поскольку нам нужна отладка, мы можем использовать это следующее свойство в файле user.properties.

    webDriverJmeter [5]

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

    1
    webdriver.sampleresult_class=true

    Позвольте мне объяснить, как это работает: сэмплер JMeter webdriver — это просто расширение сэмплера http, а не альтернатива, с редактором сценариев. Когда он запускается, он на самом деле вызывает firefox, управляемый webdriver. Это означает, что он отправляет свою инструкцию в основном веб-драйверу, а веб-драйвер делает все. Теперь вам может быть интересно, как код переходит к веб-драйверу. Как и в случае поддержки другого кода, ядро ​​веб-драйвера работает как внешний код в соответствии со спецификацией JSR . Это на самом деле выполнение JavaScript . И, вы видите, это так же, как Java-код веб-драйвера с некоторыми базовыми изменениями из-за принятия Jmeter. Я предоставлю отдельный блог или кодирование.

    И после того, как вы напишите шаги как скрипт webdriver, используйте слушателей, чтобы получить время. Как и другие сэмплеры, вы используете слушателей для разумной отладки.

Поддержка браузера

Просто перейдите по этой ссылке, где упоминаются настраиваемые имена браузеров, которые поддерживаются сэмплером webdriver. Вы также можете увидеть это из jmeter:

изображение [4]

Измерение времени

Сэмплер Webdriver вычисляет время по этой строке кода:

1
WDS.sampleResult.sampleStart()

к этой строке кода:

1
WDS.sampleResult.sampleEnd()

Итак, для отладки нам нужны вспомогательные образцы, которые будут показаны как дочерние по отношению к основному образцу. Для этого нам нужно активировать
sampleresult_class (установлен в true). После активации мы можем сделать субвыборку как

1
2
3
4
5
6
7
8
9
WDS.sampleResult.sampleStart()
//Brows to a URL
//Add user name and password
WDS.sampleResult.subSampleStart('Log In request')
//Click Log in
WDS.sampleResult.subSampleEnd(true)
//Check title
//do some another process
WDS.sampleResult.sampleEnd()

В представлении прослушивателя дерева результатов вы можете увидеть основной пример, содержащий имя подэмпла «Запрос входа в систему». И основной образец может иметь несколько подвыборок. Это означает, что мы можем рассчитывать каждый раз отдельно от дерева результатов.

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

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

Написание первого сценария:

Чтобы написать сценарий сэмплера веб-драйвера, вам нужно добавить сэмплер веб-драйвера (sampler -> sampler webdriver) с любой конфигурацией браузера (драйвера). Смотрите изображение в разделе поддержки браузера, чтобы получить элементы конфигурации драйвера.

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

Планирование испытаний:

Как мы знаем из моего предыдущего поста о тестировании производительности на стороне клиента, этот тест должен выполняться от одного пользователя или потока. Поскольку сэмплер jmeter заполняет браузер веб-драйвером, это требует особого аппаратного обеспечения. То есть он будет занимать один поток процессора. Это означает, что если вы хотите запустить сэмплер веб-драйвера, вам потребуется как минимум 2-х ядерный процессор . Почему 2 ядра? Другой для Jmeter. Таким образом, если у вас 8 ядерных процессоров, вы можете запустить только 7 потоков для сэмплеров веб-драйверов. Итак, для тестирования мы должны добавить отдельную группу потоков или тестовый блок для сэмплера веб-драйвера.

Мы будем работать для измерения времени выполнения клиента на:

  1. Когда нет большой пользовательской нагрузки
  2. Когда средняя нагрузка на сервер
  3. При высокой нагрузке (рассматривается как пиковая нагрузка)

Иногда также полезно проверить следующее:

  1. За пределами емкости, где ошибка может произойти или может произойти сразу после ошибки.
  2. В качестве непрерывного тестирования производительности. Обычно люди запускают выбранный регрессионный тест с Jmeter ежедневно или еженедельно.

Опять же, формула проста, 1 поток ЦП для тестирования производительности одного клиента.

И вы запускаете тест просто как тест Jmeter, и все.