HTTP-запросы#

HTTP-запросы — сообщения, которые отправляются клиентом на сервер, чтобы вызвать выполнение некоторых действий. Например, для получения доступа к определенному ресурсу.

Запросы содержат следующие элементы:

  • HTTP-метод;

  • путь к ресурсу;

  • версию HTTP-протокола;

  • заголовки;

  • тело запроса.

Добавление HTTP-запроса#

  1. Перейдите в группу или нажмите на кнопку edit_button. Откроется редактор:

    _images/um_editor.ru.png
  2. C помощью Drag & Drop переместите элемент HTTP/HTTPS запрос в транзакцию.

  3. Раскройте транзакцию:

    _images/um_transaction.png
  4. Перейдите в HTTP-запрос или нажмите на кнопку edit_button. Откроется окно:

    _images/um_request_parametres.ru.png
  5. При необходимости нажмите на выпадающий список и выберите метод HTTP(S)-запроса:

    _images/um_methods.png
  6. Укажите имя запроса вручную или с помощью кнопок:

    • copy_url_button. Копирует URL запроса в поле Имя;

    • copy_path_button. Копирует path запроса в поле Имя;

    • copy_url_without_params_button. Копирует URL запроса без параметров в поле Имя.

  7. Перейдите на необходимую вкладку и отредактируйте данные:

  8. Нажмите на кнопку Сохранить.

Параметры запроса#

_images/um_request_parametres.ru.png

Чтобы добавить параметр запроса:

  1. Укажите название параметра в поле Key. Чтобы указать название в формате ${выражение}, нажмите на кнопку P и выберите параметр. Не используйте пробел в названии параметра.

  2. Укажите значение параметра в поле Value. Чтобы указать значение в формате ${выражение}, нажмите на кнопку P и выберите значение:

    _images/um_select_parameter.png

    Параметры можно выбрать с помощью кнопки P, если они добавлены в тест.

Чтобы удалить параметр, нажмите на кнопку delete_button.

Заголовки#

_images/um_request_headers.ru.png

Чтобы добавить заголовок запроса:

  1. Укажите название параметра в поле Key. Чтобы указать название в формате ${выражение}, нажмите на кнопку P и выберите параметр. Не используйте пробел в названии параметра.

  2. Укажите значение параметра в поле Value. Чтобы указать значение в формате ${выражение}, нажмите на кнопку P и выберите значение:

    _images/um_select_parameter.png

    Параметры можно выбрать с помощью кнопки P, если они добавлены в тест. Подробнее см. раздел Параметризация запросов.

Запрос может содержать заголовки по умолчанию, например, user-agent. Заголовки по умолчанию используются во всех запросах теста. О том, как добавить или изменить заголовки по умолчанию, подробнее см. разделы Настройка заголовков по умолчанию и Добавление набора настроек.

Примечание

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

Чтобы удалить заголовок, нажмите на кнопку delete_button.

Body#

_images/um_request_body.ru.png

Добавьте тело запроса.

Для удобного просмотра и дальнейшего редактирования тела запроса в JSON-формате установите переключатель Режим Beautify:

_images/um_request_body_beatify.ru.png

Извлечение из ответа#

_images/um_extract_from_response.ru.png

В Boomq можно настроить корреляцию параметра – извлечение данных из ответа на запрос, например, для получения токена сессии. Если в ответе присутствуют данные, соответствующие указанному выражению или границам, то данные записываются в переменную. Значение переменной можно использовать как параметр в следующих запросах теста.

Чтобы настроить извлечение из ответа, в выпадающем списке выберите одно из значений:

  • Regex. Регулярное выражение.
    1. Заполните поля:

      • Наименование переменной. Переменная, в которую сохранятся результаты парсинга;

      • Регулярное выражение. Подробнее см. статью Regular expression syntax cheatsheet и раздел Пример использования регулярных выражений.

      • Номер группы. Группа, которую необходимо извлечь из регулярного выражения. Например, если указать значение 1, извлекается первая группа. Если указать значение 0, извлекается все регулярное выражение. Значение по умолчанию 0.

    2. Выберите поле, из которого необходимо извлечь данные:

      • Body. Тело ответа кроме заголовков;

      • Request headers. Заголовки ответа;

      • Response code. Код ответа, например, 200;

      • Response message. Ответное сообщение;

      • Url. URL запроса.

    3. В выпадающем списке выберите одно из значений:

      • Случайный номер вхождения. Номер вхождения выбирается случайно;

      • Определенный номер вхождения. Укажите номер вхождения;

      • Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.

        Примечание

        При использовании извлеченного параметра укажите вручную порядковый номер вхождения: ${param_n}, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.

  • jSONPath. Запрос к элементам JSON-файла.
    1. Заполните поля:

    2. В выпадающем списке выберите одно из значений:

      • Случайный номер вхождения. Номер вхождения выбирается случайно;

      • Определенный номер вхождения. Укажите номер вхождения;

      • Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.

        Примечание

        При использовании извлеченного параметра укажите вручную порядковый номер вхождения: ${param_n}, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.

  • XPath. Запрос к элементам XML-документа.
    1. Заполните поля:

    2. В выпадающем списке выберите одно из значений:

      • Случайный номер вхождения. Номер вхождения выбирается случайно;

      • Определенный номер вхождения. Укажите номер вхождения;

      • Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.

        Примечание

        При использовании извлеченного параметра укажите вручную порядковый номер вхождения: ${param_n}, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.

  • Границы. Boundary Extractor в JMeter, который позволяет извлекать значения из ответа, используя левую и правую границы. Подробнее см. документацию JMeter и раздел Пример использования границ.
    1. Заполните поля:

      • Наименование переменной. Переменная, в которую сохранятся результаты парсинга;

      • Левая граница. Левая граница значения, которое требуется найти. Необязательное поле;

      • Правая граница. Правая граница значения, которое требуется найти. Необязательное поле.

    2. Выберите поле, из которого необходимо извлечь данные:

      • Body. Тело ответа кроме заголовков;

      • Request headers. Заголовки ответа;

      • Response code. Код ответа, например, 200;

      • Response message. Ответное сообщение;

      • Url. URL запроса.

    3. В выпадающем списке выберите одно из значений:

      • Случайный номер вхождения. Номер вхождения выбирается случайно;

      • Определенный номер вхождения. Укажите номер вхождения. Номера вхождения начинаются с 1;

      • Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.

        Примечание

        При использовании извлеченного параметра укажите вручную порядковый номер вхождения: ${param_n}, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.

Чтобы удалить настройку, нажмите на кнопку delete_button.

Assertions#

_images/um_assertions.ru.png

Assertions используются для проверки запроса, ответа или URL на соответствие заданным условиям, например, наличие в ответе определенной строки.

Если хотя бы одно условие Assertions не выполняется, то запрос считается ошибочным.

Проверить результаты Assertions можно в дашборде Grafana.

Чтобы настроить Assertion, в выпадающем списке выберите область для проверки:

  • Request body. Тело запроса.
    1. Выберите тип условия:

      • Equals. Assertion успешен, если все тело запроса полностью совпадает с указанной строкой. Регистр учитывается;

      • Not equals. Assertion успешен, если тело запроса не совпадает с указанной строкой. Регистр учитывается;

      • Not substring. Assertion успешен, если тело запроса не содержит указанную строку. Регистр учитывается;

      • Regexp contains. Assertion успешен, если тело запроса содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp matches. Assertion успешен, если все тело запроса полностью соответствует шаблону регулярного выражения;

      • Regexp not contains. Assertion успешен, если тело запроса не содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp not matches. Assertion успешен, если все тело запроса не соответствует шаблону регулярного выражения;

      • Substring. Assertion успешен, если тело запроса содержит указанную строку. Регистр учитывается.

    2. Укажите строку или регулярное выражение.

    Например, проверим, что тело запроса содержит параметр name:

    _images/um_request_body_example.png
  • Request headers. Заголовки запроса.
    1. Выберите тип условия:

      • Equals. Assertion успешен, если весь заголовок запроса полностью совпадает с указанной строкой. Регистр учитывается;

      • Not equals. Assertion успешен, если заголовок запроса не совпадает с указанной строкой. Регистр учитывается;

      • Not substring. Assertion успешен, если заголовок запроса не содержит указанную строку. Регистр учитывается;

      • Regexp contains. Assertion успешен, если заголовок запроса содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp matches. Assertion успешен, если весь заголовок запроса полностью соответствует шаблону регулярного выражения;

      • Regexp not contains. Assertion успешен, если заголовок запроса не содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp not matches. Assertion успешен, если весь заголовок запроса не соответствует шаблону регулярного выражения;

      • Substring. Assertion успешен, если заголовок запроса содержит указанную строку. Регистр учитывается.

    2. Укажите строку или регулярное выражение.

    Например, проверим, что заголовок Accept-Language имеет значение en-US:

    _images/um_request_headers_example.png
  • Response body. Тело ответа.

    В выпадающем списке выберите одно из значений:

    • No filter. Фильтры JSONPath и Xpath не используются:

      1. Выберите тип условия:

        • Equals. Assertion успешен, если все тело ответа полностью совпадает с указанной строкой. Регистр учитывается;

        • Not equals. Assertion успешен, если тело ответа не совпадает с указанной строкой. Регистр учитывается;

        • Not substring. Assertion успешен, если тело ответа не содержит указанную строку. Регистр учитывается;

        • Regexp contains. Assertion успешен, если тело ответа содержит строку, которая соответствует шаблону регулярного выражения;

        • Regexp matches. Assertion успешен, если все тело ответа полностью соответствует шаблону регулярного выражения;

        • Regexp not contains. Assertion успешен, если тело ответа не содержит строку, которая соответствует шаблону регулярного выражения;

        • Regexp not matches. Assertion успешен, если все тело ответа не соответствует шаблону регулярного выражения;

        • Substring. Assertion успешен, если тело ответа содержит указанную строку. Регистр учитывается.

      2. Укажите строку или регулярное выражение.

      Например, проверим, что тело ответа содержит параметр name:

      _images/um_response_body_nofilter_example.png
    • JSONPath. Язык запросов к элементам JSON-файла. Подробнее см. статью JSON path syntax in detail:

      1. Укажите выражение jSONPath.

      2. В выпадающем списке выберите тип условия:

        • Equals. Assertion успешен, если все тело ответа полностью совпадает с указанной строкой. Регистр учитывается;

        • Exists. Assertion успешен, если JSON-путь существует;

        • Is not null. Assertion успешен, если значение не равно null;

        • Is null. Assertion успешен, если значение равно null;

        • Not equals. Assertion успешен, если тело ответа не совпадает с указанной строкой. Регистр учитывается;

        • Not exists. Assertion успешен, если JSON-путь не существует;

        • Regexp matches. Assertion успешен, если все тело ответа полностью соответствует шаблону регулярного выражения;

        • Regexp not matches. Assertion успешен, если все тело ответа не соответствует шаблону регулярного выражения.

      3. Укажите строку или регулярное выражение.

      Например, проверим, что цена первого телефона в теле ответа не равна null:

      _images/um_response_body_json_example.png
    • XPath. Язык запросов к элементам XML-документа. Подробнее см. статью XPath Syntax:

      1. В выпадающем списке выберите тип условия:

        • Matches. Assertion успешен, если тело ответа соответствует XPath-выражению;

        • Not matches. Assertion успешен, если тело ответа не соответствует XPath-выражению.

      2. Укажите XPath-выражение.

      Например, проверим, название телефона в теле ответа с id=1:

      _images/um_response_body_xpath_example.png
  • Response body size. Размер тела ответа.
    1. В выпадающем списке выберите операцию сравнения.

    2. Укажите ожидаемый размер тела ответа в байтах. Например:

      _images/um_response_body_size_example.png
  • Response code. Код ответа.
    1. Выберите тип условия:

      • Equals. Assertion успешен, если весь код ответа полностью совпадает с указанной строкой;

      • Not equals. Assertion успешен, если код ответа не совпадает с указанной строкой;

      • Not substring. Assertion успешен, если код ответа не содержит указанную строку;

      • Regexp contains. Assertion успешен, если код ответа содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp matches. Assertion успешен, если весь код ответа полностью соответствует шаблону регулярного выражения;

      • Regexp not contains. Assertion успешен, если код ответа не содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp not matches. Assertion успешен, если весь код ответа не соответствует шаблону регулярного выражения;

      • Substring. Assertion успешен, если код ответа содержит указанную строку.

    2. Укажите строку или регулярное выражение. Например:

      _images/um_response_code_example.png
  • Response code size. Размер кода ответа.
    1. В выпадающем списке выберите операцию сравнения.

    2. Укажите ожидаемый размер кода ответа в байтах. Например:

      _images/um_response_code_size_example.png
  • Response document. Текст документа, возвращаемого веб-сервером. Список поддерживаемых форматов документов см. на странице Apache Tika Supported Document Formats.
    1. Выберите тип условия:

      • Equals. Assertion успешен, если весь текст документа полностью совпадает с указанной строкой;

      • Not equals. Assertion успешен, если текст документа не совпадает с указанной строкой;

      • Not substring. Assertion успешен, если текст документа не содержит указанную строку;

      • Regexp contains. Assertion успешен, если текст документа содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp matches. Assertion успешен, если весь текст документа полностью соответствует шаблону регулярного выражения;

      • Regexp not contains. Assertion успешен, если текст документа не содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp not matches. Assertion успешен, если весь текст документа не соответствует шаблону регулярного выражения;

      • Substring. Assertion успешен, если текст документа содержит указанную строку.

    2. Укажите строку или регулярное выражение.

    Например, проверим, что документ содержит строку <html>:

    _images/um_response_document_example.png
  • Response duration. Время отклика на запрос.
    1. В выпадающем списке выберите операцию сравнения.

    2. Укажите ожидаемое время отклика на запрос в миллисекундах.

    Например, проверим, что время отклика не превышает 5 секунд:

    _images/um_response_duration_example.png
  • Response full size. Размер заголовков и тела ответа.
    1. В выпадающем списке выберите операцию сравнения.

    2. Укажите ожидаемый размер заголовков и тела ответа в байтах, например:

      _images/um_response_full_size_example.png
  • Response headers. Заголовки ответа.
    1. Выберите тип условия:

      • Equals. Assertion успешен, если весь заголовок ответа совпадает с указанной строкой;

      • Not equals. Assertion успешен, если заголовок ответа не совпадает с указанной строкой;

      • Not substring. Assertion успешен, если заголовок ответа не содержит указанную строку;

      • Regexp contains. Assertion успешен, если заголовок ответа содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp matches. Assertion успешен, если весь заголовок ответа полностью соответствует шаблону регулярного выражения;

      • Regexp not contains. Assertion успешен, если заголовок ответа не содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp not matches. Assertion успешен, если весь заголовок ответа не соответствует шаблону регулярного выражения;

      • Substring. Assertion успешен, если заголовок ответа содержит указанную строку.

    2. Укажите строку или регулярное выражение.

    Например, проверим, что заголовок user-agent не содержит стандартное значение user-agent: Mozilla/5.0:

    _images/um_response_headers_example.png
  • Response headers size. Размер заголовков ответа.
    1. В выпадающем списке выберите операцию сравнения.

    2. Укажите ожидаемый размер заголовков ответа в байтах. Например:

      _images/um_response_header_size_example.png
  • Response message. Сообщение ответа.
    1. Выберите тип условия:

      • Equals. Assertion успешен, если все сообщение ответа полностью совпадает с указанной строкой;

      • Not equals. Assertion успешен, если сообщение ответа не совпадает с указанной строкой;

      • Not substring. Assertion успешен, если сообщение ответа не содержит указанную строку;

      • Regexp contains. Assertion успешен, если сообщение ответа содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp matches. Assertion успешен, если все сообщение ответа полностью соответствует шаблону регулярного выражения;

      • Regexp not contains. Assertion успешен, если сообщение ответа не содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp not matches. Assertion успешен, если все сообщение ответа не соответствует шаблону регулярного выражения;

      • Substring. Assertion успешен, если сообщение ответа содержит указанную строку.

    2. Укажите строку или регулярное выражение.

    Например, проверим, что сообщение ответа содержит текст Not found:

    _images/um_response_message_example.png
  • Response message size. Размер сообщения ответа.
    1. В выпадающем списке выберите операцию сравнения.

    2. Укажите ожидаемый размер сообщения ответа в байтах. Например:

      _images/um_response_message_size_example.png
  • URL Sampled. Используется для проверки, что при выполнении запроса не произошло редиректа, и URL остался прежним.
    1. Выберите тип условия:

      • Equals. Assertion успешен, если весь URL полностью совпадает с указанной строкой;

      • Not equals. Assertion успешен, если URL не совпадает с указанной строкой;

      • Not substring. Assertion успешен, если URL не содержит указанную строку;

      • Regexp contains. Assertion успешен, если URL содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp matches. Assertion успешен, если весь URL полностью соответствует шаблону регулярного выражения;

      • Regexp not contains. Assertion успешен, если URL не содержит строку, которая соответствует шаблону регулярного выражения;

      • Regexp not matches. Assertion успешен, если весь URL не соответствует шаблону регулярного выражения;

      • Substring. Assertion успешен, если URL содержит указанную строку.

    2. Укажите строку или регулярное выражение.

    Например, проверим, что URL – ссылка на товар в интернет-магазине:

    _images/um_url_sampled_example.png

Чтобы удалить настройку, нажмите на кнопку delete_button.

Таймеры#

_images/um_add_timer.ru.png

Чтобы добавить таймер, в выпадающем списке выберите одно из значений:

  • Фиксированный. Время задержки перед отправкой запроса виртуальными пользователями. Указывается в секундах;

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

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

Чтобы удалить таймер, нажмите на кнопку delete_button.