Поиск…


Вступление

При тестировании производительности 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 автоматически находит кандидатов на корреляцию, заменяет их соответствующим экстрактором и предоставляет простой способ дальнейшей параметризации.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow