gRPC-запросы#
gRPC – опенсорсный фреймворк для удаленного вызова процедур. gRPC включает в себя:
стандарт сериализации данных Protocol Buffers (Protobuf);
протокол передачи данных HTTP/2;
язык описания интерфейса IDL.
Перед добавлением gRPC-запроса в тест импортируйте PROTO-файл, который содержит описание методов для удаленного вызова процедур.
Импорт PROTO-файла#
Нажмите на кнопку в области Импорт данных. Откроется окно:
Нажмите на область для загрузки файла.
Выберите PROTO-файл. Размер файла не должен превышать 100 Мбайт.
Нажмите на кнопку Закрыть.
Добавление gRPC-запроса#
Перейдите в группу или нажмите на кнопку . Откроется редактор:
C помощью Drag & Drop переместите элемент gRPC запрос в транзакцию.
Раскройте транзакцию:
Перейдите в gRPC-запрос или нажмите на кнопку . Откроется окно:
Укажите URL запроса.
При необходимости нажмите на кнопку , чтобы отключить проверку сертификата SSL/TLS.
Выберите метод из PROTO-файла.
Укажите имя запроса вручную или с помощью кнопок:
. Копирует URL запроса в поле Имя;
. Копирует path запроса в поле Имя;
. Копирует URL запроса без параметров в поле Имя.
Перейдите на необходимую вкладку и отредактируйте данные:
Нажмите на кнопку Сохранить.
Metadata#
Чтобы добавить метаданные:
Укажите название параметра в поле Ключ. Чтобы указать название в формате
${выражение}
, нажмите на кнопку P и выберите параметр. Не используйте пробел в названии параметра.Укажите значение параметра в поле Значение. Чтобы указать значение в формате
${выражение}
, нажмите на кнопку P и выберите значение:Параметры можно выбрать с помощью кнопки P, если они добавлены в тест. Подробнее см. раздел Добавление и использование параметров.
Чтобы удалить параметр, нажмите на кнопку .
Body#
Добавьте тело запроса.
Для удобного просмотра и дальнейшего редактирования тела запроса в JSON-формате установите переключатель Режим Beautify:
Извлечение из ответа#
В Boomq можно настроить корреляцию параметра – извлечение данных из ответа на запрос, например, для получения токена сессии. Если в ответе присутствуют данные, соответствующие указанному выражению или границам, то данные записываются в переменную. Значение переменной можно использовать как параметр в следующих запросах теста.
Чтобы настроить извлечение из ответа, в выпадающем списке выберите одно из значений:
Regex. Регулярное выражение.
Заполните поля:
Наименование переменной. Переменная, в которую сохранятся результаты парсинга;
Регулярное выражение. Подробнее см. статью Regular expression syntax cheatsheet и раздел Пример использования регулярных выражений.
Номер группы. Группа, которую необходимо извлечь из регулярного выражения. Например, если указать значение 1, извлекается первая группа. Если указать значение 0, извлекается все регулярное выражение. Значение по умолчанию 0.
Выберите поле, из которого необходимо извлечь данные:
Body. Тело ответа кроме заголовков;
Request headers. Заголовки ответа;
Response code. Код ответа, например, 200;
Response message. Ответное сообщение;
Url. URL запроса.
В выпадающем списке выберите одно из значений:
Случайный номер вхождения. Номер вхождения выбирается случайно;
Определенный номер вхождения. Укажите номер вхождения;
Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.
Примечание
При использовании извлеченного параметра укажите вручную порядковый номер вхождения:
${param_n}
, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.
jSONPath. Запрос к элементам JSON-файла.
Заполните поля:
Наименование переменной. Переменная, в которую сохранятся результаты парсинга;
Выражение jSONPath. Подробнее см. статью JSON path syntax in detail и раздел Пример использования экстрактора jSONPath.
В выпадающем списке выберите одно из значений:
Случайный номер вхождения. Номер вхождения выбирается случайно;
Определенный номер вхождения. Укажите номер вхождения;
Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.
Примечание
При использовании извлеченного параметра укажите вручную порядковый номер вхождения:
${param_n}
, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.
XPath. Запрос к элементам XML-документа.
Заполните поля:
Наименование переменной. Переменная, в которую сохранятся результаты парсинга;
Выражение XPath. Подробнее см. статью XPath Syntax и раздел Пример использования экстрактора XPath.
В выпадающем списке выберите одно из значений:
Случайный номер вхождения. Номер вхождения выбирается случайно;
Определенный номер вхождения. Укажите номер вхождения;
Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.
Примечание
При использовании извлеченного параметра укажите вручную порядковый номер вхождения:
${param_n}
, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.
Границы. Boundary Extractor в JMeter, который позволяет извлекать значения из ответа, используя левую и правую границы. Подробнее см. документацию JMeter и раздел Пример использования границ.
Заполните поля:
Наименование переменной. Переменная, в которую сохранятся результаты парсинга;
Левая граница. Левая граница значения, которое требуется найти. Необязательное поле;
Правая граница. Правая граница значения, которое требуется найти. Необязательное поле.
Выберите поле, из которого необходимо извлечь данные:
Body. Тело ответа кроме заголовков;
Request headers. Заголовки ответа;
Response code. Код ответа, например, 200;
Response message. Ответное сообщение;
Url. URL запроса.
В выпадающем списке выберите одно из значений:
Случайный номер вхождения. Номер вхождения выбирается случайно;
Определенный номер вхождения. Укажите номер вхождения. Номера вхождения начинаются с 1;
Все номера вхождений. Извлекаются все вхождения из ответа. В результате формируется массив значений: Param_1, Param_2, Param_n, где Param – наименование переменной, n – размер массива.
Примечание
При использовании извлеченного параметра укажите вручную порядковый номер вхождения:
${param_n}
, где n – это порядковый номер вхождения. Если использовать такой параметр или заголовок без уточнения номера вхождения, то отправляется пустое значение.
Чтобы удалить настройку, нажмите на кнопку .
Assertions#
Assertions используются для проверки запроса, ответа или URL на соответствие заданным условиям, например, наличие в ответе определенной строки.
Если хотя бы одно условие Assertions не выполняется, то запрос считается ошибочным.
Проверить результаты Assertions можно в дашборде Grafana.
Чтобы настроить Assertion, в выпадающем списке выберите область для проверки:
Request body. Тело запроса.
Выберите тип условия:
Equals. Assertion успешен, если все тело запроса полностью совпадает с указанной строкой. Регистр учитывается;
Not equals. Assertion успешен, если тело запроса не совпадает с указанной строкой. Регистр учитывается;
Not substring. Assertion успешен, если тело запроса не содержит указанную строку. Регистр учитывается;
Regexp contains. Assertion успешен, если тело запроса содержит строку, которая соответствует шаблону регулярного выражения;
Regexp matches. Assertion успешен, если все тело запроса полностью соответствует шаблону регулярного выражения;
Regexp not contains. Assertion успешен, если тело запроса не содержит строку, которая соответствует шаблону регулярного выражения;
Regexp not matches. Assertion успешен, если все тело запроса не соответствует шаблону регулярного выражения;
Substring. Assertion успешен, если тело запроса содержит указанную строку. Регистр учитывается.
Укажите строку или регулярное выражение.
Например, проверим, что тело запроса содержит параметр
name
:Request metadata. Метаданные запроса.
Выберите тип условия:
Equals. Assertion успешен, если все метаданные запроса полностью совпадают с указанной строкой. Регистр учитывается;
Not equals. Assertion успешен, если метаданные запроса не совпадают с указанной строкой. Регистр учитывается;
Not substring. Assertion успешен, если метаданные запроса не содержат указанную строку. Регистр учитывается;
Regexp contains. Assertion успешен, если метаданные запроса содержат строку, которая соответствует шаблону регулярного выражения;
Regexp matches. Assertion успешен, если все метаданные запроса полностью соответствуют шаблону регулярного выражения;
Regexp not contains. Assertion успешен, если метаданные запроса не содержат строку, которая соответствует шаблону регулярного выражения;
Regexp not matches. Assertion успешен, если все метаданные запроса не соответствуют шаблону регулярного выражения;
Substring. Assertion успешен, если метаданные запроса содержат указанную строку. Регистр учитывается.
Укажите строку или регулярное выражение.
Например, проверим, значение ID запроса:
Response body. Тело ответа.
В выпадающем списке выберите одно из значений:
No filter. Фильтры JSONPath и Xpath не используются:
Выберите тип условия:
Equals. Assertion успешен, если все тело ответа полностью совпадает с указанной строкой. Регистр учитывается;
Not equals. Assertion успешен, если тело ответа не совпадает с указанной строкой. Регистр учитывается;
Not substring. Assertion успешен, если тело ответа не содержит указанную строку. Регистр учитывается;
Regexp contains. Assertion успешен, если тело ответа содержит строку, которая соответствует шаблону регулярного выражения;
Regexp matches. Assertion успешен, если все тело ответа полностью соответствует шаблону регулярного выражения;
Regexp not contains. Assertion успешен, если тело ответа не содержит строку, которая соответствует шаблону регулярного выражения;
Regexp not matches. Assertion успешен, если все тело ответа не соответствует шаблону регулярного выражения;
Substring. Assertion успешен, если тело ответа содержит указанную строку. Регистр учитывается.
Укажите строку или регулярное выражение.
Например, проверим, что тело ответа содержит параметр
name
:JSONPath. Язык запросов к элементам JSON-файла. Подробнее см. статью JSON path syntax in detail:
Укажите выражение jSONPath.
В выпадающем списке выберите тип условия:
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 успешен, если все тело ответа не соответствует шаблону регулярного выражения.
Укажите строку или регулярное выражение.
Например, проверим, что цена первого телефона в теле ответа не равна
null
:XPath. Язык запросов к элементам XML-документа. Подробнее см. статью XPath Syntax:
В выпадающем списке выберите тип условия:
Matches. Assertion успешен, если тело ответа соответствует XPath-выражению;
Not matches. Assertion успешен, если тело ответа не соответствует XPath-выражению.
Укажите XPath-выражение.
Например, проверим, название телефона в теле ответа с
id=1
:
Response body size. Размер тела ответа.
В выпадающем списке выберите операцию сравнения.
Укажите ожидаемый размер тела ответа в байтах. Например:
Response code. Код ответа.
Выберите тип условия:
Equals. Assertion успешен, если весь код ответа полностью совпадает с указанной строкой;
Not equals. Assertion успешен, если код ответа не совпадает с указанной строкой;
Not substring. Assertion успешен, если код ответа не содержит указанную строку;
Regexp contains. Assertion успешен, если код ответа содержит строку, которая соответствует шаблону регулярного выражения;
Regexp matches. Assertion успешен, если весь код ответа полностью соответствует шаблону регулярного выражения;
Regexp not contains. Assertion успешен, если код ответа не содержит строку, которая соответствует шаблону регулярного выражения;
Regexp not matches. Assertion успешен, если весь код ответа не соответствует шаблону регулярного выражения;
Substring. Assertion успешен, если код ответа содержит указанную строку.
Укажите строку или регулярное выражение. Например:
Response code size. Размер кода ответа.
В выпадающем списке выберите операцию сравнения.
Укажите ожидаемый размер кода ответа в байтах. Например:
Response document. Текст документа, возвращаемого веб-сервером. Список поддерживаемых форматов документов см. на странице Apache Tika Supported Document Formats.
Выберите тип условия:
Equals. Assertion успешен, если весь текст документа полностью совпадает с указанной строкой;
Not equals. Assertion успешен, если текст документа не совпадает с указанной строкой;
Not substring. Assertion успешен, если текст документа не содержит указанную строку;
Regexp contains. Assertion успешен, если текст документа содержит строку, которая соответствует шаблону регулярного выражения;
Regexp matches. Assertion успешен, если весь текст документа полностью соответствует шаблону регулярного выражения;
Regexp not contains. Assertion успешен, если текст документа не содержит строку, которая соответствует шаблону регулярного выражения;
Regexp not matches. Assertion успешен, если весь текст документа не соответствует шаблону регулярного выражения;
Substring. Assertion успешен, если текст документа содержит указанную строку.
Укажите строку или регулярное выражение.
Например, проверим, что документ содержит строку
<html>
:Response duration. Время отклика на запрос.
В выпадающем списке выберите операцию сравнения.
Укажите ожидаемое время отклика на запрос в миллисекундах.
Например, проверим, что время отклика не превышает 5 секунд:
Response full size. Размер метаданных и тела ответа.
В выпадающем списке выберите операцию сравнения.
Укажите ожидаемый размер метаданных и тела ответа в байтах, например:
Response message. Сообщение ответа.
Выберите тип условия:
Equals. Assertion успешен, если все сообщение ответа полностью совпадает с указанной строкой;
Not equals. Assertion успешен, если сообщение ответа не совпадает с указанной строкой;
Not substring. Assertion успешен, если сообщение ответа не содержит указанную строку;
Regexp contains. Assertion успешен, если сообщение ответа содержит строку, которая соответствует шаблону регулярного выражения;
Regexp matches. Assertion успешен, если все сообщение ответа полностью соответствует шаблону регулярного выражения;
Regexp not contains. Assertion успешен, если сообщение ответа не содержит строку, которая соответствует шаблону регулярного выражения;
Regexp not matches. Assertion успешен, если все сообщение ответа не соответствует шаблону регулярного выражения;
Substring. Assertion успешен, если сообщение ответа содержит указанную строку.
Укажите строку или регулярное выражение.
Например, проверим, что сообщение ответа содержит текст
Not found
:Response message size. Размер сообщения ответа.
В выпадающем списке выберите операцию сравнения.
Укажите ожидаемый размер сообщения ответа в байтах. Например:
Response metadata. Метаданные ответа.
Выберите тип условия:
Equals. Assertion успешен, если все метаданные ответа совпадают с указанной строкой;
Not equals. Assertion успешен, если метаданные ответа не совпадают с указанной строкой;
Not substring. Assertion успешен, если метаданные ответа не содержат указанную строку;
Regexp contains. Assertion успешен, если метаданные ответа содержат строку, которая соответствует шаблону регулярного выражения;
Regexp matches. Assertion успешен, если все метаданные ответа полностью соответствуют шаблону регулярного выражения;
Regexp not contains. Assertion успешен, если метаданные ответа не содержат строку, которая соответствует шаблону регулярного выражения;
Regexp not matches. Assertion успешен, если все метаданные ответа не соответствуют шаблону регулярного выражения;
Substring. Assertion успешен, если метаданные ответа содержат указанную строку.
Укажите строку или регулярное выражение.
Например, проверим, значение ID запроса:
Response metadata size. Размер метаданных ответа.
В выпадающем списке выберите операцию сравнения.
Укажите ожидаемый размер метаданных ответа в байтах. Например:
URL Sampled. Используется для проверки, что при выполнении запроса не произошло редиректа, и URL остался прежним.
Выберите тип условия:
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 содержит указанную строку.
Укажите строку или регулярное выражение.
Например, проверим, что URL – ссылка на товар в интернет-магазине:
Чтобы удалить настройку, нажмите на кнопку .
Таймеры#
При необходимости измените максимальное время на ответ – как долго клиенты gRPC готовы ждать завершения RPC. Указывается в секундах.
Чтобы добавить таймер, в выпадающем списке выберите одно из значений:
Фиксированный. Время задержки перед отправкой запроса виртуальными пользователями. Указывается в секундах;
Случайный. Перед каждой попыткой отправить запрос, вычисляется случайное время задержки. Укажите диапазон чисел, внутри которого выбирается случайное время задержки. Указывается в секундах.
По умолчанию для всех запросов теста включен глобальный таймер. Глобальный таймер можно изменить или выключить. Глобальный таймер отображается всегда, даже если он выключен. Подробнее см. раздел Настройка таймеров.
Чтобы удалить таймер, нажмите на кнопку .