План тестирования JMeter для вызова API A, а затем API B, как это сделать?

Я хочу разработать план тестирования JMeter 5 со следующей спецификацией:

Сначала вызовите HTTP Rest API A. Если код состояния от A не равен 200, продолжайте повторно вызывать A до тех пор, пока код состояния не станет 200. После первого успешного вызова A перейдите к вызову Rest API B.

Существует конфигурация набора данных CSV для API B, которая считывает файл CSV, каждая запись в CSV вызывает вызов API B. При достижении EOF JMeter должен автоматически выйти (прекратить работу).

API A необходимо вызывать каждые 10 минут, пока API B все еще вызывается (или JMeter все еще обрабатывает файл CSV).

Как достичь этой цели? Требуются 2 группы потоков или одна группа потоков может выполнять эту работу?

Пожалуйста, предоставьте подробную информацию, например, какие должны быть конфигурации для плана тестирования и группы (групп) потоков, последовательность элементов JMeter, таких как While Controller и т. д.

Целью плана тестирования является нагрузочное тестирование API B, поэтому несколько потоков могут вызывать API B, в то время как один поток используется для вызова API A.

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Вам понадобится 2 группы потоков, чтобы выполнять запросы к API A и API B с разным количеством пользователей и параллелизмом.

  2. Чтобы повторять запрос к API A до тех пор, пока код состояния ответа не станет 200:

    • Добавьте While Controller и используйте следующую функцию __groovy() в качестве условия:

      ${__groovy((vars.get('code') ?: 42) as int != 200,)}
      
    • Добавьте свой HTTP-запрос для API A в качестве дочернего элемента контроллера While.

    • Добавьте Boundary Extractor в качестве дочернего элемента HTTP-запроса и настройте его следующим образом:

    • Добавьте сэмплер Flow Control Action и настройте его на спящий режим в течение 600000 миллисекунд либо внутри цикла While, либо снаружи, в зависимости от вашего сценария.

  3. Что касается остановки теста при достижении конца CSV-файла, это просто вопрос установки следующих параметров в конфигурации набора данных CSV:

Спасибо за ответ. Что означает число 42 в vars.get('code') ?: 42?

ace 21.11.2022 02:45

Просто значение по умолчанию, во время первой итерации переменная code будет null , поэтому я использовал оператор Groovy elvis , чтобы вернуть какое-то магическое число вместо нуля, чтобы избежать ошибок в файле jmeter.log . См. Apache Groovy: для чего используется Groovy? статья для получения дополнительной информации о сценариях Groovy в JMeter

Dmitri T 21.11.2022 10:09

Есть две основные проблемы. 1. Обе группы потоков запускаются параллельно, если API A терпит неудачу и занят повторной попыткой во время вызова lopp, API B. API B во второй группе потоков не должен вызываться до тех пор, пока API A не будет успешно завершен. 2. когда API B завершен (достигнут EOF csv), вторая группа потоков завершается, но первая группа потоков продолжает работать. Требование состоит в том, что когда API B завершен, программа должна завершиться.

ace 21.11.2022 15:52

Действие управления потоком с задержкой 600000 миллисекунд и выбранной паузой находится на том же уровне, что и контроллер «Пока», т.е. является родственным, а не дочерним по отношению к контроллеру «Пока». первая группа потоков для API A имеет выбранный Contniue и 1 поток, а нарастание равно 1, а количество циклов выбрано Infinite и выбран тот же пользователь на каждой итерации. Вторая группа потоков имеет 2 потока, наращивание равно 1, а количество циклов бесконечно, Выбирается один и тот же пользователь на каждой итерации.

ace 21.11.2022 20:36

Чтобы запустить API B только в случае успешного выполнения API A, вы можете использовать Плагин межпоточной связи . Чтобы остановить тест, когда в CSV-файле нет значений, используйте While Controller (см. главу «Чтение всех значений из CSV и продолжение»). Затем используйте Sampler Action Control Flow с логическим действием Stop

Dmitri T 22.11.2022 08:10

спасибо за комментарий. Я добавил действие управления потоком с логическим действием stop и target All threads сразу после контроллера while, т.е. оно должно выполняться только после выхода из цикла while. Но он не выполняется, программа продолжает работать после EOF файла csv.

ace 22.11.2022 19:08

Другие вопросы по теме