Apache JMeter
Apache JMeter Correlations
Поиск…
Вступление
При тестировании производительности JMeter Correlations означает возможность получать динамические данные из ответа сервера и отправлять его на последующие запросы. Эта функция имеет решающее значение для многих аспектов тестирования, таких как защищенные приложения на основе токенов.
Корреляция Использование экстента регулярного выражения в Apache JMeter
Если вам нужно извлечь информацию из текстового ответа, самым простым способом будет использование регулярных выражений. Соответствующий шаблон очень похож на шаблон, используемый в Perl. Предположим, мы хотим протестировать рабочий процесс покупки авиабилета. Первый шаг - отправить операцию покупки. Следующий шаг - убедиться, что мы можем проверить все детали, используя идентификатор покупки, который должен быть возвращен для первого запроса. Представим, что первый запрос возвращает html-страницу с этим типом идентификатора, который нам нужно извлечь:
<div class="container">
<div class="container hero-unit">
<h1>Thank you for you purchse today!</h1>
<table class="table">
<tr>
<td>Id</td>
<td>Your purchase id is 1484697832391</td>
</tr>
<tr>
<td>Status</td>
<td>Pending</td>
</tr>
<tr>
<td>Amount</td>
<td>120 USD</td>
</tr>
</table>
</div>
</div>
Такая ситуация является лучшим кандидатом на использование экстрактора JMeter Regular Expression. Регулярное выражение представляет собой специальную текстовую строку для описания шаблона поиска. Существует множество онлайн-ресурсов, которые помогают писать и тестировать регулярные выражения. Один из них - https://regex101.com/ .
Чтобы использовать этот компонент, откройте меню JMeter и: Add -> Post Processors -> Extractor Expression Extractor
Экземпляр регулярного выражения содержит следующие поля:
- Reference Name - имя переменной, которая может быть использована после извлечения
- Регулярное выражение - последовательность символов и символов, выражающих строку (шаблон), которая будет искать в тексте
- Шаблон - содержит ссылки на группы. Поскольку регулярное выражение может иметь более одной группы, оно позволяет указать, какое значение группы нужно извлечь, указав номер группы как $ 1 $ или $ 2 $ или $ 1 $$ 2 $ (извлечь обе группы)
- Номер совпадения - указывает, какое совпадение будет использоваться (значение 0 соответствует случайным значениям / любое положительное число N означает выбор N-го совпадения / отрицательного значения, которое должно использоваться с контроллером ForEach)
- Значение по умолчанию - значение по умолчанию, которое будет сохранено в переменной в случае, если совпадения не найдены, сохраняется в переменной.
Флажок «Применить к» относится к образцам, которые делают запросы на встроенные ресурсы. Этот параметр определяет, будет ли регулярное выражение применяться к основным результатам выборки или ко всем запросам, включая внедренные ресурсы. Для этого параметра есть несколько вариантов:
- Основная выборка и подвыборки
- Только основной образец
- Только суб-выборки
- JMeter Variable - утверждение применяется к содержимому именованной переменной, которое может быть заполнено другим запросом
Флажок «Поле для проверки» позволяет выбрать, в какое поле должно быть применено регулярное выражение. Почти все параметры самоописательны:
- Тело - тело ответа, например содержимое веб-страницы (исключая заголовки)
- Body (unescaped) - тело ответа, с заменой всех кодов кода HTML. Обратите внимание, что экранирование HTML обрабатывается без учета контекста, поэтому могут быть сделаны некоторые неправильные замены (* этот параметр сильно влияет на производительность)
- Тело - Тело как документ - текст извлечения из различных типов документов через Apache Tika (* также может повлиять на производительность)
- Заголовок тела - запрос - может отсутствовать для образцов, отличных от HTTP
- Заголовок Body - Response - может отсутствовать для образцов, отличных от HTTP
- Тело - URL
- Код ответа - например, 200
- Тело - ответное сообщение - например, ОК
После выделения выражения его можно использовать в последующих запросах с помощью переменной $ {purchaseId}.
Эта таблица содержит все сокращения, которые поддерживаются регулярными выражениями JMeter:
Корреляция Использование XPath Extractor в JMeter
XPath можно использовать для навигации по элементам и атрибутам в документе XML. Это может быть полезно, когда данные из ответа не могут быть извлечены с помощью экстента регулярного выражения. Например, в случае сценария, в котором вам необходимо извлечь данные из похожих тегов с одинаковыми атрибутами, но с разными значениями. XPath Extractor похож на CSS / JQuery Extractor, но XPath Extractor следует использовать для содержимого XML, в то время как CSS / JQuery Extractor следует использовать для содержимого HTML. Предположим, что в ответе у нас есть таблица с разными значениями, где нам нужно извлечь значение из второй строки таблицы.
<div id="weeklyPrices">
<tr>
<td>$56.00</td>
<td>$56.00</td>
<td>$56.00</td>
<td>$56.00</td>
<td>$60.00</td>
<td>$70.00</td>
<td>$70.00</td>
</tr>
</div>
Забегая вперед, правильный XPath для этого случая будет: // div [@ id = 'weeklyPrices'] / tr / td 1
Чтобы использовать этот компонент, откройте меню JMeter и: Add -> Post Processors -> XPath Extractor
XPath Extractor содержит несколько общих элементов конфигурации, которые упоминаются в «Корреляции с использованием экстента регулярных выражений». Это включает в себя Name, Apply to, Reference Name, Match No. (с JMeter 3.2) и значение по умолчанию.
Существует множество веб-ресурсов с онлайн-чит-листами и редакторами для создания и тестирования созданного xpath (как этот ). Но на основе приведенных ниже примеров мы можем найти способ создания наиболее распространенных локаторов xpath.
Если вы хотите проанализировать HTML-код на XHTML, нам нужно проверить опцию «Использовать Tidy». После определения статуса «Использовать Tidy» есть дополнительные опции:
Если «Использовать Tidy» отмечен:
- Quiet - устанавливает флаг Tidy Quiet
- Ошибки отчета - если возникает ошибка Tidy, установите Assertion соответственно
- Show Warnings - устанавливает опцию предупреждения Tidy show
Если флажок Использовать Tidy не установлен:
- Использовать пространства имен - если флажок, парсер XML будет использовать разрешение пространства имен
- Проверка XML - проверка документа по указанной схеме
- Игнорировать пробелы - игнорировать пробелы элемента
- Fetch External DTD - если выбрано, выбираются внешние DTD
«Возвращать весь фрагмент XPath вместо текстового содержимого» является самоописательным и должен использоваться, если вы хотите вернуть не только значение xpath, но также и значение в его локаторе xpath. Это может быть полезно для нужд отладки.
Также стоит упомянуть список очень удобных плагинов браузера для тестирования локаторов XPath. Для Firefox вы можете использовать плагин « Firebug », а для Chrome « XPath Helper » - самый удобный инструмент.
Корреляция Использование экстрактора CSS / JQuery в JMeter
Экстрактор CSS / JQuery позволяет извлекать значения из ответа сервера с помощью синтаксиса селектора CSS / JQuery, который в противном случае было бы трудно записать с использованием регулярного выражения. В качестве постпроцессора этот элемент должен быть выполнен для извлечения запрошенных узлов, текста или значений атрибутов из пробоотбора запроса и сохранения результата в заданную переменную. Этот компонент очень похож на XPath Extractor. Выбор между CSS, JQuery или XPath обычно зависит от предпочтений пользователей, но стоит упомянуть, что XPath или JQuery могут перемещаться вниз, а также перемещаться по DOM, в то время как CSS не может подойти к DOM. Предположим, что мы хотим извлечь все темы из документации переполнения стека, которые связаны с Java. Вы можете использовать плагин Firebug для тестирования селекторов CSS / JQuery в Firefox или тестера CSS Selector в Chrome.
Чтобы использовать этот компонент, откройте меню JMeter и: Add -> Post Processors -> CSS / JQuery Extractor
Почти все поля этого экстрактора аналогичны полям экстрактора регулярного выражения, поэтому вы можете получить их описание из этого примера. Однако одно отличие - это «реализация реализации CSS / JQuery Extractor». Начиная с JMeter 2.9 вы можете использовать экстрактор CSS / JQuery на основе двух разных реализаций: реализации jsoup (подробное описание его синтаксиса здесь ) или JODD Lagarto (подробный синтаксис можно найти здесь ). Обе реализации почти одинаковы и имеют лишь небольшие различия в синтаксисе. Выбор между ними основан на предпочтениях пользователя.
На основе вышеупомянутой конфигурации мы можем извлечь все темы из запрошенной страницы и проверить извлеченные результаты с помощью «Debug Sampler» и «View Results Tree».
Корреляция Использование экстрактора JSON
JSON - широко используемый формат данных, который используется в веб-приложениях. JMON JSON Extractor предоставляет способ использования выражений JSON Path для извлечения значений из JSON-ответов в JMeter. Этот почтовый процессор должен быть помещен как дочерний элемент пробоотбора HTTP или для любого другого сэмплера, который имеет ответы.
Чтобы использовать этот компонент, откройте меню JMeter и: Add -> Post Processors -> JSON Extractor.
JSON Extractor очень похож на экстент регулярного выражения. В этом примере упоминаются почти все основные поля. Существует только один конкретный параметр JSON Extractor: «Вычислить конкатенацию var». В случае обнаружения многих результатов этот экстрактор будет конкатенировать их, используя разделитель «,» и сохраняя его в var с именем _ALL.
Предположим, что этот ответ сервера с JSON:
{
"store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
В приведенной ниже таблице представлен отличный пример различных способов извлечения данных из указанного JSON:
С помощью этой ссылки вы можете найти более подробное описание формата JSON Path с соответствующими примерами.
Автоматическая корреляция с использованием «SmartJMX» от BlazeMeter
Когда вы вручную записываете свои скрипты производительности, вам нужно иметь дело с корреляцией самостоятельно. Но есть еще один вариант для создания сценариев - записи сценариев автоматизации. С одной стороны, ручной подход помогает писать структурированные скрипты, и вы можете одновременно добавить все необходимые экстракторы. С другой стороны, этот подход требует много времени.
Запись сценариев автоматизации очень проста и позволяет выполнять одну и ту же работу, только намного быстрее. Но если вы используете общие способы записи, сценарии будут очень неструктурированными и обычно требуют добавления дополнительной параметризации. Функция «Smart JMX» на рекордере Blazemeter сочетает в себе преимущества обоих способов. Его можно найти по этой ссылке: [ https://a.blazemeter.com/app/recorder/index.html][1]
После регистрации перейдите в раздел «Рекордер».
Чтобы начать запись сценария, сначала вам нужно настроить прокси-сервер вашего браузера ( здесь и здесь ), но на этот раз вы должны получить прокси-хост и порт, предоставленный рекордером BlazeMeter.
Когда браузер настроен, вы можете продолжить запись сценария, нажав красную кнопку внизу. Теперь вы можете перейти к тестируемому приложению и выполнить пользовательские рабочие процессы для записи.
После записи сценария вы можете экспортировать результаты в файл SMM JMX. Экспортированный файл jmx содержит список параметров, которые позволяют настраивать скрипт и параметризовать без дополнительных усилий. Одним из таких усовершенствований является то, что «SMART» JMX автоматически находит кандидатов на корреляцию, заменяет их соответствующим экстрактором и предоставляет простой способ дальнейшей параметризации.