Как добиться постоянных одновременных активных пользователей в закрытой модели с помощью Gatling? - PullRequest
0 голосов
/ 09 июля 2020

Мой вопрос как-то связан с this и this , но почему-то не отвечает на мой вопрос.

Мой тестовый пример довольно прост, мне нужно для создания постоянных активных одновременных пользователей (например, 10 одновременных пользователей) постоянно в течение определенного периода времени (например, 60 se c).

Мои коды выглядят так

val TestProtocolBuilder: HttpProtocolBuilder = http.baseUrl("https://computer-database.gatling.io")
object Test {

  val test =
    exec(http("Test_Only")
      .get("/computers")
      .check(status.in(200, 404))
    )
}

val TestOnly = scenario("Test Only").exec(Test.test)

setUp(
  TestOnly.inject(
    constantConcurrentUsers(10) during(60 seconds)
  ).protocols(TestProtocolBuilder)
)

Эта документация говорит constantConcurrentUsers(nbUsers) during(duration): Внедрить так, чтобы количество одновременных пользователей в системе было константа

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

В отчете HTML я вижу, что активных пользователей в любой момент времени намного больше 10 (почти в два раза).

enter image description here

Learning from the документация , там указано

На этой диаграмме отображаются активные пользователи во время моделирования: всего и по сценарию. «Активные пользователи» не являются ни «одновременными пользователями», ни «скоростью прибытия пользователей». Это своего рода смешанный показатель c, который служит как для моделей открытой, так и для закрытой рабочей нагрузки и представляет «пользователей, которые были активны в системе под нагрузкой в ​​заданную секунду».

вычисляется как: (количество активных пользователей в предыдущую секунду) + (количество пользователей, запущенных в течение этой секунды) - (количество пользователей, которые были завершены в течение предыдущей секунды) )

Вопросы:

  1. Почему Gatling продолжает отключать пользователей и запускать новых пользователей в течение тестового периода? В чем смысл?
  2. Как я могу получить 10 постоянных одновременно активных пользователей (ни больше, ни меньше), продолжающих использовать мой API в течение всего теста, если constantConcurrentUsers(10) during(60 seconds) даст мне гораздо больше активных пользователей и колеблется в течение тестового периода? Мне нужно придерживаться своего тестового примера и не перегружать API.
  3. На изображении выше в это время the number of request = 7 и the active users = 20. Означает ли это, что в данный момент есть 7 активных пользователей, отправляющих запросы, и 20 - 7 = 13 активных пользователей сидят без дела, ожидая ответа от API?

Спасибо .

1 Ответ

1 голос
/ 09 июля 2020

Почему Gatling продолжает отключать пользователей и запускать новых пользователей в течение тестового периода? Какой в ​​этом смысл?

Продолжительность жизни виртуальных пользователей зависит от вашего сценария. Инъекция Профили приводятся в движение только тогда, когда они впрыскиваются / запускаются. Если вы хотите, чтобы ваши пользователи не завершали работу всего после одного запроса, добавьте в свой сценарий al oop.

Как я могу получить 10 постоянных одновременно активных пользователей

Бессмысленно. Как вы сами процитировали concurrent! = Active. Я гарантирую, что у вас есть постоянное количество одновременных пользователей, то есть ровно 10 пользователей одновременно. Дело в том, что, поскольку в вашем сценарии есть только один запрос, пользователи прекращают работу сразу после этого и заменяются новым.

Означает ли это, что в данный момент отправляют 7 активных пользователей. запросов, и есть 20-7 = 13 активных пользователей, которые сидят без дела, ожидая ответа от API?

Это означает, что продолжительность жизни виртуальных пользователей перекрывалась между 2 секундами, поэтому их видели живыми в 2 разных вторые ковши.

...